diff --git a/src/capwap/cw_in_check_cipwap_join_req.c b/src/capwap/cw_in_check_cipwap_join_req.c new file mode 100644 index 00000000..2dabcbe1 --- /dev/null +++ b/src/capwap/cw_in_check_cipwap_join_req.c @@ -0,0 +1,67 @@ + +#include "capwap.h" +#include "intavltree.h" +#include "dbg.h" +#include "log.h" +#include "capwap_items.h" +#include "bstr.h" +#include "sock.h" //tube + + +cw_get_wtp_name(struct conn *conn,struct sockaddr *addr) +{ + +} + +int cw_set_capwap_mode(struct conn *conn,int mode) +{ + cw_dbg(DBG_INFO,"Setting CAPWAP mode to %d for %s",mode,sock_addr2str(&conn->addr)); + conn->capwap_mode_out=mode; +} + + +int cw_detect_capwap(struct conn *conn) +{ + cw_itemstore_t is = conn->incomming; + + cw_item_t * item = cw_itemstore_get(is,CW_ITEM_WTP_SOFTWARE_VERSION); + if (item) { + vendorstr_t s = item->data; + uint32_t v = vendorstr_get_vendor_id(s); + + switch(v) { + case CW_VENDOR_ID_CISCO: + cw_set_capwap_mode(conn,CW_MODE_CISCO); + break; + default: + cw_set_capwap_mode(conn,CW_MODE_STD); + break; + + + } + + + + } + + return 0; + +} + +int cw_in_check_cipwap_join_req(struct conn *conn, struct cw_action_in *a, uint8_t * data, + int len,struct sockaddr *from) +{ + + + int rc = cw_in_check_join_req(conn,a,data,len,from); + + + if ( rc==0 ) { + cw_detect_capwap(conn); + + } + + + + return rc; +}