tr_state
static void tr_dbg(struct tr_state *, const char *);
static void tr_dbg_ret(struct tr_state *, const char *, krb5_error_code);
static void tr_dbg_rtree(struct tr_state *, const char *, krb5_principal);
static krb5_error_code retr_local_tgt(struct tr_state *, krb5_principal);
static krb5_error_code try_ccache(struct tr_state *, krb5_creds *);
static krb5_error_code find_nxt_kdc(struct tr_state *);
static krb5_error_code try_kdc(struct tr_state *, krb5_creds *);
static krb5_error_code kdc_mcred(struct tr_state *, krb5_principal,
static krb5_error_code next_closest_tgt(struct tr_state *, krb5_principal);
static krb5_error_code init_rtree(struct tr_state *,
init_cc_tgts(struct tr_state *ts)
shift_cc_tgts(struct tr_state *ts)
clean_cc_tgts(struct tr_state *ts)
tr_dbg(struct tr_state *ts, const char *prog)
tr_dbg_ret(struct tr_state *ts, const char *prog, krb5_error_code ret)
tr_dbg_rtree(struct tr_state *ts, const char *prog, krb5_principal princ)
init_rtree(struct tr_state *ts,
retr_local_tgt(struct tr_state *ts, krb5_principal client)
try_ccache(struct tr_state *ts, krb5_creds *tgtq)
struct tr_state;
find_nxt_kdc(struct tr_state *ts)
try_kdc(struct tr_state *ts, krb5_creds *tgtq)
kdc_mcred(struct tr_state *ts, krb5_principal client, krb5_creds *mcreds)
next_closest_tgt(struct tr_state *ts, krb5_principal client)
static void init_cc_tgts(struct tr_state *);
static void shift_cc_tgts(struct tr_state *);
static void clean_cc_tgts(struct tr_state *);
struct tr_state state, *ts;
svd->tr_state = SEGVN_TR_OFF;
ASSERT(svd->tr_state == SEGVN_TR_ON);
svd->tr_state = SEGVN_TR_OFF;
svd->tr_state = trok ? SEGVN_TR_INIT : SEGVN_TR_OFF;
ASSERT(svd->tr_state == SEGVN_TR_ON);
ASSERT(svd->tr_state == SEGVN_TR_ON);
ASSERT(svd->tr_state == SEGVN_TR_ON);
if (svd1->tr_state != SEGVN_TR_OFF || svd2->tr_state != SEGVN_TR_OFF) {
if (svd1->tr_state != SEGVN_TR_OFF) {
if (svd2->tr_state != SEGVN_TR_OFF) {
if ((amp = svd->amp) == NULL || svd->tr_state == SEGVN_TR_ON) {
svd->tr_state == SEGVN_TR_OFF);
if (svd->tr_state == SEGVN_TR_ON) {
newsvd->tr_state = SEGVN_TR_INIT;
newsvd->tr_state = svd->tr_state;
ASSERT(svd->tr_state == SEGVN_TR_OFF);
newsvd->tr_state = SEGVN_TR_OFF;
ASSERT(newsvd->tr_state == SEGVN_TR_OFF);
ASSERT(svd->tr_state == SEGVN_TR_OFF);
ASSERT(svd->tr_state == SEGVN_TR_OFF);
} else if (svd->tr_state == SEGVN_TR_INIT) {
svd->tr_state = SEGVN_TR_OFF;
} else if (svd->tr_state == SEGVN_TR_ON) {
ASSERT(svd->tr_state == SEGVN_TR_OFF);
if (svd->tr_state == SEGVN_TR_OFF) {
ASSERT(svd->tr_state == SEGVN_TR_OFF);
} else if (svd->tr_state == SEGVN_TR_ON) {
ASSERT(svd->amp == NULL && svd->tr_state == SEGVN_TR_OFF);
if (svd->tr_state != SEGVN_TR_OFF) {
ASSERT(svd->tr_state == SEGVN_TR_INIT);
svd->tr_state = SEGVN_TR_OFF;
ASSERT(svd->tr_state == SEGVN_TR_OFF);
ASSERT(svd->tr_state == SEGVN_TR_OFF);
ASSERT(svd->tr_state != SEGVN_TR_INIT);
ASSERT(svd->tr_state == SEGVN_TR_OFF);
} else if (svd->tr_state == SEGVN_TR_ON) {
int tron = (svd->tr_state == SEGVN_TR_ON);
ASSERT(svd->tr_state != SEGVN_TR_INIT);
int pgflags = (svd->tr_state == SEGVN_TR_ON) ? PG_LOCAL : 0;
ASSERT(!brkcow || svd->tr_state == SEGVN_TR_OFF);
ASSERT(svd->tr_state != SEGVN_TR_INIT);
ASSERT(svd->tr_state == SEGVN_TR_OFF ||
if (svd->tr_state == SEGVN_TR_INIT) {
if (svd->tr_state == SEGVN_TR_INIT) {
ASSERT(svd->tr_state != SEGVN_TR_INIT);
ASSERT(svd->tr_state != SEGVN_TR_ON ||
} else if (svd->tr_state != SEGVN_TR_OFF) {
if (rw == S_WRITE && svd->tr_state != SEGVN_TR_OFF) {
if (svd->tr_state == SEGVN_TR_ON) {
svd->tr_state == SEGVN_TR_OFF);
} else if (svd->tr_state != SEGVN_TR_OFF) {
svd->tr_state = SEGVN_TR_OFF;
ASSERT(svd->amp == NULL && svd->tr_state == SEGVN_TR_OFF);
ASSERT(svd->tr_state == SEGVN_TR_OFF);
svd->tr_state == SEGVN_TR_OFF &&
if ((page != 0) && fltadvice && svd->tr_state != SEGVN_TR_ON) {
svd->tr_state == SEGVN_TR_ON || rw == S_OTHER ||
if (svd->tr_state != SEGVN_TR_ON &&
ASSERT(svd->tr_state == SEGVN_TR_OFF);
ASSERT(svd->tr_state == SEGVN_TR_OFF);
} else if (svd->tr_state == SEGVN_TR_INIT) {
svd->tr_state = SEGVN_TR_OFF;
} else if (svd->tr_state == SEGVN_TR_ON) {
ASSERT(svd->amp == NULL && svd->tr_state == SEGVN_TR_OFF);
ASSERT(svd->tr_state == SEGVN_TR_OFF);
ASSERT(svd->tr_state == SEGVN_TR_OFF);
} else if (svd->tr_state == SEGVN_TR_INIT) {
svd->tr_state = SEGVN_TR_OFF;
} else if (svd->tr_state == SEGVN_TR_ON) {
ASSERT(svd->amp == NULL && svd->tr_state == SEGVN_TR_OFF);
ASSERT(svd->tr_state == SEGVN_TR_OFF);
} else if (svd->tr_state == SEGVN_TR_ON) {
ASSERT(svd->amp == NULL && svd->tr_state == SEGVN_TR_OFF);
if (svd->tr_state != SEGVN_TR_OFF) {
ASSERT(svd->tr_state == SEGVN_TR_INIT);
svd->tr_state = SEGVN_TR_OFF;
ASSERT(svd->tr_state == SEGVN_TR_OFF);
ASSERT(svd->tr_state == SEGVN_TR_OFF);
ASSERT(svd->tr_state == SEGVN_TR_OFF);
if (svd->tr_state == SEGVN_TR_INIT) {
svd->tr_state = SEGVN_TR_OFF;
} else if (svd->tr_state == SEGVN_TR_ON) {
svd->tr_state == SEGVN_TR_OFF);
if (svd->tr_state != SEGVN_TR_OFF) {
ASSERT(svd->tr_state == SEGVN_TR_OFF);
if (svd->tr_state != SEGVN_TR_OFF ||
if (svn_data->tr_state != SEGVN_TR_ON) {
ASSERT(svd->tr_state == SEGVN_TR_INIT);
svd->tr_state = SEGVN_TR_OFF;
svd->tr_state = SEGVN_TR_OFF;
svd->tr_state = SEGVN_TR_OFF;
svd->tr_state = SEGVN_TR_OFF;
svd->tr_state = SEGVN_TR_OFF;
svd->tr_state = SEGVN_TR_OFF;
svd->tr_state = SEGVN_TR_OFF;
svd->tr_state = SEGVN_TR_ON;
int tr_state; /* TR (text replication) state */
if (svd->tr_state == SEGVN_TR_OFF &&