#ifndef _UTIL_ATTR_H_
#define _UTIL_ATTR_H_ 1
-#define ATTR_TYPE_RADIUS 0U
-#define ATTR_TYPE_SAML_ASSERTION 1U
-#define ATTR_TYPE_SAML 2U
-#define ATTR_TYPE_LOCAL 3U
-#define ATTR_TYPE_MIN ATTR_TYPE_RADIUS
-#define ATTR_TYPE_MAX ATTR_TYPE_LOCAL
-
#ifdef __cplusplus
#include <string>
const gss_buffer_t attribute,
void *data);
+#define ATTR_TYPE_RADIUS 0U /* RADIUS AVPs */
+#define ATTR_TYPE_SAML_ASSERTION 1U /* SAML assertion */
+#define ATTR_TYPE_SAML 2U /* SAML attributes */
+#define ATTR_TYPE_LOCAL 3U /* Local attributes */
+#define ATTR_TYPE_MIN ATTR_TYPE_RADIUS
+#define ATTR_TYPE_MAX ATTR_TYPE_LOCAL
+
+#define ATTR_FLAG_DISABLE_LOCAL 0x00000001
+
/*
* Attribute provider: this represents a source of attributes derived
* from the security context.
virtual time_t getExpiryTime(void) const { return 0; }
- static bool init() { return true; }
- static void finalize() {}
+ static bool init(void) { return true; }
+ static void finalize(void) {}
static gss_eap_attr_provider *createAttrContext(void) { return NULL; }
time_t getExpiryTime(void) const;
private:
+ bool providerEnabled(unsigned int type) const;
+ void releaseProvider(unsigned int type);
+
gss_eap_attr_provider *getPrimaryProvider(void) const;
/* make non-copyable */
gss_eap_attr_ctx(const gss_eap_attr_ctx&);
gss_eap_attr_ctx& operator=(const gss_eap_attr_ctx&);
+ uint32_t m_flags;
gss_eap_attr_provider *m_providers[ATTR_TYPE_MAX + 1];
};