IKEv1 XAuth: Added plugin support for XAuth, which allows us to have plugins to talk to servers with different quirks for XAuth authentication.

This commit is contained in:
Clavister OpenSource
2012-03-20 17:31:11 +01:00
parent 781f4c8898
commit 9c5366446a
11 changed files with 678 additions and 0 deletions
@@ -25,6 +25,7 @@ typedef struct plugin_feature_t plugin_feature_t;
#include <library.h>
#include <eap/eap.h>
#include <xauth/xauth.h>
#include <plugins/plugin.h>
/**
@@ -135,6 +136,10 @@ struct plugin_feature_t {
FEATURE_FETCHER,
/** custom feature, described with a string */
FEATURE_CUSTOM,
/** XAuth server implementation */
FEATURE_XAUTH_SERVER,
/** XAuth peer implementation */
FEATURE_XAUTH_PEER,
} type;
/** More specific data for each type */
union {
@@ -182,6 +187,8 @@ struct plugin_feature_t {
char *fetcher;
/** FEATURE_CUSTOM */
char *custom;
/** FEATURE_XAUTH_SERVER/CLIENT */
xauth_type_t xauth;
/** FEATURE_REGISTER */
struct {
@@ -266,6 +273,8 @@ struct plugin_feature_t {
#define _PLUGIN_FEATURE_DATABASE(kind, type) __PLUGIN_FEATURE(kind, DATABASE, .database = type)
#define _PLUGIN_FEATURE_FETCHER(kind, type) __PLUGIN_FEATURE(kind, FETCHER, .fetcher = type)
#define _PLUGIN_FEATURE_CUSTOM(kind, name) __PLUGIN_FEATURE(kind, CUSTOM, .custom = name)
#define _PLUGIN_FEATURE_XAUTH_SERVER(kind, type) __PLUGIN_FEATURE(kind, XAUTH_SERVER, .xauth = type)
#define _PLUGIN_FEATURE_XAUTH_PEER(kind, type) __PLUGIN_FEATURE(kind, XAUTH_PEER, .xauth = type)
#define __PLUGIN_FEATURE_REGISTER(type, _f) (plugin_feature_t){ FEATURE_REGISTER, FEATURE_##type, .arg.reg.f = _f }
#define __PLUGIN_FEATURE_REGISTER_BUILDER(type, _f, _final) (plugin_feature_t){ FEATURE_REGISTER, FEATURE_##type, .arg.reg = {.f = _f, .final = _final, }}