mod_register_actions now uses parameter mode.

FossilOrigin-Name: 7fccf33259836d6d1139d611825315e21428fbb88d7359d4176ef8ba258488fa
This commit is contained in:
7u83@mail.ru 2016-03-10 07:07:30 +00:00
parent c4f9bca1e6
commit fb74f28756
10 changed files with 47 additions and 23 deletions

View File

@ -179,14 +179,14 @@ static struct cw_actiondef * load_mods(struct conn *conn, uint8_t * rawmsg, int
int elems_len, struct sockaddr *from)
{
struct mod_ac * cmod = detect_mod(conn, rawmsg, len, elems_len, from, MOD_DETECT_CAPWAP);
struct mod_ac * cmod = detect_mod(conn, rawmsg, len, elems_len, from, MOD_MODE_CAPWAP);
if (cmod == MOD_NULL) {
cw_dbg(DBG_MSG_ERR, "Cant't find mod to handle connection from %s , discarding message",
sock_addr2str_p(from));
return NULL;
}
struct mod_ac * bmod = detect_mod(conn, rawmsg, len, elems_len, from, MOD_DETECT_BINDINGS);
struct mod_ac * bmod = detect_mod(conn, rawmsg, len, elems_len, from, MOD_MODE_BINDINGS);
cw_dbg(DBG_INFO,"Mods deteced: %s,%s",cmod->name,bmod->name);

View File

@ -14,7 +14,7 @@ struct cache_item
static struct mavl * cache = NULL;
static int mod_null_register_actions(struct cw_actiondef *def)
static int mod_null_register_actions(struct cw_actiondef *def,int mode)
{
return 0;
}
@ -73,11 +73,11 @@ struct cw_actiondef * mod_cache_add(struct mod_ac *c, struct mod_ac *b)
memset (i,0,sizeof(struct cache_item));
if (c){
i->capwap=c->name;
c->register_actions(&(i->actions));
c->register_actions(&(i->actions),MOD_MODE_CAPWAP);
}
if (b){
i->bindings=b->name;
b->register_actions(&(i->actions));
b->register_actions(&(i->actions),MOD_MODE_BINDINGS);
}
mavl_add(cache,i);

View File

@ -31,8 +31,8 @@ struct cw_actiondef;
#define MOD_MAXMODS 8
enum {
MOD_DETECT_CAPWAP,
MOD_DETECT_BINDINGS
MOD_MODE_CAPWAP,
MOD_MODE_BINDINGS
};
struct mod_ac {
@ -51,7 +51,7 @@ struct mod_ac {
void *data;
/** Register actions */
int (*register_actions) (struct cw_actiondef * def);
int (*register_actions) (struct cw_actiondef * def,int mode);
};

View File

@ -8,7 +8,7 @@
#include "mod_capwap.h"
static struct cw_actiondef actions;
//static struct cw_actiondef actions;
@ -27,17 +27,26 @@ static int init()
static int detect(struct conn *conn, const uint8_t * rawmsg, int rawlen, int elems_len,
struct sockaddr *from, int mode)
{
if (mode != MOD_DETECT_CAPWAP)
if (mode != MOD_MODE_CAPWAP)
return 0;
cw_dbg(DBG_MOD,"CAPWAP detected: yes");
return 1;
}
static int register_actions(struct cw_actiondef *def, int mode)
{
if (mode != MOD_MODE_CAPWAP)
return 0;
return capwap_register_actions_ac(def);
}
static struct mod_ac capwap_ac = {
.name = "capwap",
.init = init,
.detect = detect,
.register_actions = capwap_register_actions_ac
.register_actions = register_actions
};
struct mod_ac *mod_capwap_ac()

View File

@ -27,18 +27,25 @@ static int init()
static int detect(struct conn *conn, const uint8_t * rawmsg, int rawlen, int elems_len,
struct sockaddr *from, int mode)
{
if (mode != MOD_DETECT_CAPWAP)
if (mode != MOD_MODE_CAPWAP)
return 0;
conn->detected = 1;
conn->actions = &actions;
return 1;
}
static int register_actions(struct cw_actiondef *def, int mode)
{
if (mode != MOD_MODE_CAPWAP)
return 0;
return capwap_register_actions_wtp(def);
}
static struct mod_wtp capwap_wtp = {
.name = "capwap",
.init = init,
.detect = detect,
.register_actions = capwap_register_actions_wtp
.register_actions=register_actions
};
struct mod_wtp *mod_capwap_wtp()

View File

@ -27,7 +27,7 @@ static int init()
static int detect(struct conn *conn, const uint8_t * rawmsg, int rawlen, int elems_len,
struct sockaddr *from, int mode)
{
if (mode != MOD_DETECT_BINDINGS)
if (mode != MOD_MODE_BINDINGS)
return 0;
int wbid = cw_get_hdr_wbid(rawmsg);
@ -39,8 +39,11 @@ static int detect(struct conn *conn, const uint8_t * rawmsg, int rawlen, int ele
return 1;
}
static int register_actions(struct cw_actiondef *actions)
static int register_actions(struct cw_actiondef *actions, int mode)
{
if (mode != MOD_MODE_BINDINGS)
return 0;
return capwap80211_register_actions_ac(actions);
}

View File

@ -26,15 +26,17 @@ static int init()
static int detect(struct conn *conn, const uint8_t * rawmsg, int rawlen, int elems_len,
struct sockaddr *from, int mode)
{
if (mode != MOD_DETECT_BINDINGS)
if (mode != MOD_MODE_BINDINGS)
return 0;
cw_log(LOG_INFO, "Detecting WTP 80211");
return 1;
}
static int register_actions(struct cw_actiondef *actions)
static int register_actions(struct cw_actiondef *actions,int mode)
{
if (mode != MOD_MODE_BINDINGS)
return 0;
return capwap80211_register_actions_wtp(actions);
}

View File

@ -15,7 +15,7 @@ int cipwap_init()
static int detect(struct conn *conn,const uint8_t *rawmsg, int rawlen,int elems_len, struct sockaddr *from, int mode)
{
if (mode != MOD_DETECT_CAPWAP)
if (mode != MOD_MODE_CAPWAP)
return 0;
cw_dbg(DBG_MOD,"CIPWAP detected: no");

View File

@ -16,15 +16,18 @@ static struct cw_actiondef actions;
extern int cisco_register_actions_ac(struct cw_actiondef *def);
static int register_actions(struct cw_actiondef *actions)
static int register_actions(struct cw_actiondef *actions,int mode)
{
if (mode != MOD_MODE_CAPWAP)
return 0;
struct mod_ac *cmod = modload_ac("capwap");
if (!cmod) {
cw_log(LOG_ERR,
"Can't initzialize mod_cisco, failed to load base mod mod_capwap");
return 1;
}
cmod->register_actions(actions);
cmod->register_actions(actions,MOD_MODE_CAPWAP);
int rc = cisco_register_actions_ac(actions);
cw_dbg(DBG_INFO, "Initialized mod cisco with %d actions", rc);
return 0;
@ -45,7 +48,7 @@ static int init()
static int detect(struct conn *conn, const uint8_t * rawmsg, int rawlen, int elems_len,
struct sockaddr *from, int mode)
{
if (mode != MOD_DETECT_CAPWAP)
if (mode != MOD_MODE_CAPWAP)
return 0;

View File

@ -103,7 +103,7 @@ int main()
printf("Can't load mod capwap\n");
exit(0);
}
mod->register_actions(&capwap_actions);
mod->register_actions(&capwap_actions,MOD_MODE_CAPWAP);
mod = modload_wtp("capwap80211");
if (!mod) {
printf("Can't load mod capwap80211\n");
@ -111,7 +111,7 @@ int main()
}
printf("add capwap80211\n");
int rc = mod->register_actions(&capwap_actions);
int rc = mod->register_actions(&capwap_actions,MOD_MODE_BINDINGS);
printf("Out reg = %d\n",rc);