Subject: [nfsv4] [FedFS] meeting agenda (3/11)

From: James Lentini <[email-masked]>
Date: Wed, 10 Mar 2010 17:56:25 -0500 (EST)

Tomorrow's proposed agenda is below. Please let me know if you would
like to add additional topics.

    Time: Thursdays 1:30-2:30 PM EST/10:30-11:30 AM PST
 Dial-in: 1-888-765-3653 (us)
          303-218-2659 (international)
      Id: 2354843

Proposed Agenda
---------------

+ IETF Note Well Agreement

  This is a reminder that our discussions are governed by the 
  IETF Note Well Agreement. See:

    http://www.ietf.org/NOTEWELL.html

  We will start each week's meeting with this announcement.

+ IETF'77

+ Admin Protocol Review

  At the end of last week's meeting, we discussed ways to compress the 
  arguments to FEDFS_CREATE_JUNCTION.

  As promised last week, I've sketched out one possible approach below. 
  In this approach, the Admin client assists the fileserver by identifying 
  the junction create parameters (NSDB name, LDAP NSDB Container Entry, 
  and security parameters) with an opaque handle. The goal is to simplify 
  the fileserver at the expense of a more sophisticated protocol.

  Another approach (not shown) would be for the fileserver to 
  internally compress/deduplicate the parameters to junction 
  create. 

  Please consider these approaches and suggest alternate approaches.

-------

enum FedFsStatus {
 FEDFS_OK                 = 0,
 FEDFS_ERR_ACCESS         = 1,
 FEDFS_ERR_BADCHAR        = 2,
 FEDFS_ERR_BADXDR         = 3,
 FEDFS_ERR_EXIST          = 4,
 FEDFS_ERR_INVAL          = 5,
 FEDFS_ERR_IO             = 6,
 FEDFS_ERR_NOSPC          = 7,
 FEDFS_ERR_NOTDIR         = 8,
 FEDFS_ERR_NOTEMPTY       = 9,
 FEDFS_ERR_NOTJUNCT       = 10,
 FEDFS_ERR_NOTLOCAL       = 11,
 FEDFS_ERR_PERM           = 12,
 FEDFS_ERR_ROFS           = 13,
 FEDFS_ERR_SVRFAULT       = 14,
 FEDFS_ERR_NSDB_ROUTE     = 15,
 FEDFS_ERR_NSDB_DOWN      = 16,
 FEDFS_ERR_NSDB_CONN      = 17,
 FEDFS_ERR_NSDB_AUTH      = 18,
 FEDFS_ERR_NSDB_LDAP      = 19,
 FEDFS_ERR_NSDB_NOFSN     = 20,
 FEDFS_ERR_NSDB_NOFSL     = 21,
 FEDFS_ERR_NSDB_RESPONSE  = 22,
 FEDFS_ERR_NSDB_FAULT     = 23,
 FEDFS_ERR_NSDB_PARAMS    = 24
};

typedef opaque FedFsUuid<16>;

typedef opaque FedFsNsdbName<>;
typedef opaque FedFsNsdbContainerEntry<>;
typedef opaque FedFsNsdbHandle<8>;

typedef opaque FedFsPathComponent<>;
typedef FedFsPathComponent FedFsPathName<>;

struct FedFsNsdb {
        FedFsNsdbName            name;
        FedFsNsdbContainerEntry  nce;
};

struct FedFsFsn {
        FedFsUuid         fsnUuid;
        FedFsNsdbHandle   handle;
};

struct FedFsCreateJunctionArgs {
        FedFsPathName     path;
        FedFsFsn          fsn;
};

enum FedFsResolveType {
 FEDFS_RESOLVE_NONE  = 0,
 FEDFS_RESOLVE_CACHE = 1,
 FEDFS_RESOLVE_NSDB  = 2
};

struct FedFsLookupFsnArgs {
        FedFsPathName          path;
        FedFsResolveType       resolve;
};

union FedFsResolveRes switch (FedFsResolveType resolve) {
 case FEDFS_RESOLVE_NONE:
        void;
 default: /* CACHE or NSDB */
        FedFsUuid              fslUuid<>;
};

struct FedFsLookupFsnResOk {
        FedFsFsn               fsn;
        FedFsResolveRes        resolveResult;
};

union FedFsLookupFsnRes switch (FedFsStatus status) {
 case FEDFS_OK:
        FedFsLookupFsnResOk    resok;
 case FEDFS_ERR_NSDB_LDAP:
        unsigned int           ldapResultCode<1>;
 default:
        void;
};

enum FedFsConnectionSec {
 FEDFS_SEC_NONE = 0,
 FEDFS_SEC_TLS = 1 /* StartTLS mechanism; RFC4513, Section 3 */
 /* other mechanisms TBD */
};

struct FedFsNsdbParams {
        FedFsConnectionSec       secType;
        /* type specific data follows */
        opaque                   secData<>;
};

struct FedFsSetNsdbParamsArgs {
        FedFsNsdb                nsdb;
        FedFsNsdbParams          params;
};

union FedFsSetNsdbParamsRes switch (FedFsStatus status) {
 case FEDFS_OK:
        FedFsNsdbHandle          handle;
 default:
        void;
};

union FedFsGetNsdbParamsArgs switch (bool byName) {
 case TRUE:
        FedFsNsdb                nsdb;
 case FALSE:
        FedFsNsdbHandle          handle;
};

struct FedFsGetNsdbParamsResOk {
        FedFsNsdb                nsdb;
        FedFsNsdbHandle          handle;
        FedFsNsdbParams          params;
};

union FedFsGetNsdbParamsRes switch (FedFsStatus status) {
 case FEDFS_OK:
        FedFsGetNsdbParamsResOk  resok;
 default:
        void;
};

struct FedFsGetLimitedNsdbParamsResOk {
        FedFsNsdb                nsdb;
        FedFsNsdbHandle          handle;
        FedFsConnectionSec       secType;
};

union FedFsGetLimitedNsdbParamsRes switch (FedFsStatus status) {
 case FEDFS_OK:
        FedFsGetLimitedNsdbParamsResOk  resok;
 default:
        void;
};

program FEDFS_PROG {
 version FEDFS_VERSION {
     void FEDFS_NULL(void) = 0;
     FedFsStatus FEDFS_CREATE_JUNCTION(
                  FedFsCreateJunctionArgs) = 1;
     FedFsStatus FEDFS_DELETE_JUNCTION(
                  FedFsPathName) = 2;
     FedFsLookupFsnRes FEDFS_LOOKUP_FSN(
                  FedFsLookupFsnArgs) = 3;
     FedFsSetNsdbParamsRes FEDFS_SET_NSDB_PARAMS(
                  FedFsSetNsdbParamsArgs) = 4;
     FedFsGetNsdbParamsRes FEDFS_GET_NSDB_PARAMS(
                  FedFsGetNsdbParamsArgs) = 5;
     FedFsGetLimitedNsdbParamsRes FEDFS_GET_LIMITED_NSDB_PARAMS(
                  FedFsGetNsdbParamsArgs) = 6;
 } = 1;
} = 100418;