RPC-L from draft-brashear-afs3-pts-extended-names-09

Extract the RPC-L and put it in the file.

PrAuthName was changed to PRAuthName to avoid conflicts with the PrAuthName
we have in rxgk.  Probably we should get the "real" name and rxgk a
fake one, but that requires more work.
server stubs for new PR RPCs

Change-Id: I5725464a7c52ff9d3d9b45f353a4944872a323b1
Use an unsigned type for iteration variables

Change-Id: If6447663fa9ec8bce7b4e3bce0494de5fee42af1
Implement SPR_AuthNameToIDFallback and rxgk WhoAmI

Change-Id: I65e157946259be9760a9271a99907b032c010105
rxgk support for viced (and volserver)

Use afsconf_BuildFileServerSecurityObjects to get our security
objects; introspect to see if there is an rxgk object in the
output, so that we can use rxgk.

If we have rxgk capability, use an rxgk connection to the vlserver
to register our addresses.  Only printed tokens from the cell-wide
key are currently supported, and we do not support registering
per-fileserver keys.  (For one, the vldb has no way of recording
that we are rxgk-capable yet.)

Use rxgk for hpr's connection to the ptserver as well.

Use afsconf_BuildFileServerSecurityObjects to get an rxgk server
security object if possible.  This is not fully usable, though,
since we can't get a CPS for such users yet.

While here, make a file-local routine static.

The use_rxgk flag should arguably be a part of the configuration
directory state, but that can wait for later.

Change-Id: I067ce991e69cb2b2752e6808573489a0aa4f5e3c

BuildFileServerSecurityObjects for volser, too

Change-Id: I2c4446bac5b9db90d57e2993bd0ebcb379736d4b
viced support rxgk tokens

We get rx_identities out from rxgk_GetServerInfo; convert
back to PrAuthName and fire off queries to the ptserver.

(Our ptserver is not capable of serving the necessary RPCs yet.)

Change-Id: I883ef1dc67498f00eedc1464c595c42184eb077b
Note the ClientAuth calls and why we can't do more

Change-Id: Id98dca61c44afc7c1b6ad817fb609dff9187a4f3
Build rxgk into the kernel

Compiles on freebsd.

Is not expected to load, though --missing symbols are:
opr_AssertionFailed
rx_SetServiceSpecific
rx_GetServiceSpecific

Change-Id: I8eded9ce059bd44597630760075010135c40fd21
Try to make the CM use rxgk tokens

Change-Id: I4f6ad47a5d5fdc970b396694b6059210d340545a
DO NOT MERGE

A snapshot of the pthread-bos bits, all squashed together.
Done so that subsequent commits adding rxgk support to bos/bosserver
can be pushed to gerrit without using a merge commit or adding a
fake dependency chain to one of the patch series.

This snapshot is as of 267a362efb262e79eefc684cf6cddf5241443498.

Change-Id: I0245d598c12dc09a52da5cea26be2104cb826958
Register bosserver for rxgk

Add the server security object, using an ephemeral token-encrypting
key.  We rely on the local hostname being correctly set (and lowercase!)
to match the afs3-bos hostbased service acceptor identity.

Since we are adding a new service, set the number of processes that
will handle that service.

We need to add the GSSAPI CPPFLAGS to the CFLAGS for this module, as we
are not including the gssapi headers.

Change-Id: Ibacf16993d67349c59986ca3c62a0293c723ca67
Check for krb5_get_init_creds_opt_set_out_ccache

The forthcoming bos/rxgk/localauth code will use it.
I am told that the routine it is used in is only needed for MIT krb5,
as Heimdal's gssapi library will fetch initiator credentials from the
default keytab by default.  Since set_out_ccache is only provided
on MIT krb5, that is rather fortuitous.

Change-Id: I68576ea791f6f2253e082b23bb3a82e6bb624bc4
bos: add support for rxgk

While rxgk is experimental, add a new argument -rxgk to attempt
the use of rxgk.  -localauth is supported by using the acceptor
credentials as an initiator and self-negotiating.

afsconf_PickClientSecObj doesn't know about rxgk yet, so we need
to have our own separate control flow for the rxgk case.  This
will be fixed eventually, but it's not clear what the right API
for PickClientSecObj is, yet.

Change-Id: I7af099cfe53c844f96959c904c33ca632c0d3e57
Avoid aliasing a local variable

Change-Id: Icbb5010d298110cd4dab395fc5eec45e01ec9ba3
FBSD: initialize 'retval' for afs3_syscall

In the same way as linux_ret.

An ugly hack, but it's not really used for anything relevant at the moment.

Change-Id: Ia31ea6668ac3bc2edbec143d0b839f3e797ff424
Remove incomplete struct initializers for rxkad stats

C99 requires that objects with static linkage, which includes
global variables, be initialized to zero/NULL.

It is possible that old compilers required a hack of using one
explicit initializer and relying on the requirement from C99 that
the elements of the structure not listed in the initializer be
initialized as if it had static linkage.

Using a complete explicit initializer is undesired here, as the
statistics structures have a great number of elements.

Change-Id: Iefe7842cbf874252267cb3a8aee5d90ec2cab169
More incomplete initializers for globals

Change-Id: I42213b20844c7bfbea5fea92e6229834a9aa7643
Silence compiler

Change-Id: I1ed10654fb402f4feec55d6d7c7ece6f0c78bc8e
rx: Do not try to cancel nonexistent events

Unconditionally cancelling the resend event and releasing the
reference it was supposed to have on the call, can cause the
call reference count to go negative.

In particular, the call chain when a new rx_call structure is
allocated would cause its reference count to become negative.

Behave similarly to all the other rxevent_Cancel calls touched
by 20034a815750beff262d49b37fba225c72dd0ab1, and only cancel the
event and drop a reference when the event is present on the call.

Change-Id: Icf2dd58c2545814ac17bb960077621c6d3209da0
opr: opr_AssertionFailed undefined in kernel module

The opr_Assert in opr_rbtree_remove is incompletely defined;
the opr_Assert macro is defined in opr.h, but the definition
for the opr_AssertionFailed routine it invokes is not included.
This allows the kernel module to build successfully even though
it retains a hidden undefined reference for opr_AssertionFailed.

However, the logic in obr_rbtree_remove ensures that this
particular opr_Assert can never fail - it is superfluous.
Some compilers (e.g. gcc for Linux AFS kernel module
builds) are able to recognize this and optimize it out.  Others
(e.g. Solaris 5.12) do not, and when this happens the OpenAFS
build appears to succeed but the kernel module will fail to load
due to the undefined symbol.

Remove the superfluous opr_Assert.

This partially reverts commit 9f8b765bbdbb8913fcadbde8d3362039e9dc8e61.

Change-Id: I4ed2b1873c434e41dce0f2e474926bf8b449b819