--- --- linux-2.6.18-rc5-andros/include/linux/sunrpc/gss_api.h | 1 --- diff -puN include/linux/sunrpc/gss_api.h~gss-triple-to-pseudoflavor include/linux/sunrpc/gss_api.h --- linux-2.6.18-rc5/include/linux/sunrpc/gss_api.h~gss-triple-to-pseudoflavor 2006-10-17 16:16:02.000000000 -0400 +++ linux-2.6.18-rc5-andros/include/linux/sunrpc/gss_api.h 2006-10-17 16:16:02.000000000 -0400 @@ -61,6 +61,7 @@ u32 gss_delete_sec_context( int gss_service_to_pseudoflavor_index(struct gss_api_mech *, u32 service); int gss_flavor_to_index(u32 pflavor); u32 gss_pseudoflavor_to_service(struct gss_api_mech *, u32 pseudoflavor); +u32 gss_triple_to_pseudoflavor(u32 oid_len, char *oid_data, u32 service); char *gss_service_to_auth_domain_name(struct gss_api_mech *, u32 service); u32 gss_name_to_pseudoflavor(char *name, int len); diff -puN net/sunrpc/auth_gss/gss_mech_switch.c~gss-triple-to-pseudoflavor net/sunrpc/auth_gss/gss_mech_switch.c --- linux-2.6.18-rc5/net/sunrpc/auth_gss/gss_mech_switch.c~gss-triple-to-pseudoflavor 2006-10-17 16:16:02.000000000 -0400 +++ linux-2.6.18-rc5-andros/net/sunrpc/auth_gss/gss_mech_switch.c 2006-10-17 16:16:02.000000000 -0400 @@ -286,6 +286,38 @@ gss_service_to_pseudoflavor_index(struct EXPORT_SYMBOL(gss_service_to_pseudoflavor_index); +/* + * Returns the security triple pseudoflavor or RPC_AUTH_MAXFLAVOR. + * NOTE: no qop value consideration. + */ +u32 +gss_triple_to_pseudoflavor(u32 oid_len, char *oid_data, u32 service) +{ + struct gss_api_mech *pos; + u32 pseudoflavor = RPC_AUTH_MAXFLAVOR; + struct xdr_netobj oid; + int i; + + oid.len = oid_len; + oid.data = oid_data; + + spin_lock(®istered_mechs_lock); + list_for_each_entry(pos, ®istered_mechs, gm_list) { + if (!pos || (pos->gm_oid.len == 0) || !pos->gm_oid.data || + !g_OID_equal(&oid, &pos->gm_oid)) + continue; + + for (i=0; igm_pf_num; i++) + if (service == pos->gm_pfs[i].service) { + pseudoflavor = pos->gm_pfs[i].pseudoflavor; + goto out; + } + } +out: + spin_unlock(®istered_mechs_lock); + return pseudoflavor; +} + u32 gss_pseudoflavor_to_service(struct gss_api_mech *gm, u32 pseudoflavor) { _