Join to a real vWLC works
FossilOrigin-Name: 924b4e58697b9cd2c2326f541e8cc302be46496c4b5ffb29d73fc305b5d7bf56
This commit is contained in:
@ -134,7 +134,7 @@ static struct cw_ElemHandler handlers[] = {
|
||||
|
||||
{
|
||||
"CAPWAP Control IPv4 Address", /* name */
|
||||
CW_ELEM_CAPWAP_CONTROL_IPV4_ADDRESS, /* Element ID */
|
||||
CAPWAP_ELEM_CAPWAP_CONTROL_IPV4_ADDRESS, /* Element ID */
|
||||
0,0, /* Vendor / Proto */
|
||||
6,6, /* min/max length */
|
||||
CW_TYPE_BSTR16, /* type */
|
||||
@ -145,7 +145,7 @@ static struct cw_ElemHandler handlers[] = {
|
||||
|
||||
{
|
||||
"CAPWAP Control IPv6 Address", /* name */
|
||||
CW_ELEM_CAPWAP_CONTROL_IPV6_ADDRESS, /* Element ID */
|
||||
CAPWAP_ELEM_CAPWAP_CONTROL_IPV6_ADDRESS, /* Element ID */
|
||||
0,0, /* Vendor / Proto */
|
||||
18,18, /* min/max length */
|
||||
CW_TYPE_BSTR16, /* type */
|
||||
@ -272,8 +272,8 @@ static int discovery_response_states[] = {CAPWAP_STATE_DISCOVERY,0};
|
||||
static struct cw_ElemDef discovery_response_elements[] ={
|
||||
{0,0,CAPWAP_ELEM_AC_DESCRIPTOR, 1, 0},
|
||||
{0,0,CAPWAP_ELEM_AC_NAME, 1, 0},
|
||||
{0,0,CW_ELEM_CAPWAP_CONTROL_IPV4_ADDRESS, 1, 0},
|
||||
{0,0,CW_ELEM_CAPWAP_CONTROL_IPV6_ADDRESS, 1, 0},
|
||||
{0,0,CAPWAP_ELEM_CAPWAP_CONTROL_IPV4_ADDRESS, 1, 0},
|
||||
{0,0,CAPWAP_ELEM_CAPWAP_CONTROL_IPV6_ADDRESS, 1, 0},
|
||||
{0,0,CAPWAP_ELEM_VENDOR_SPECIFIC_PAYLOAD, 0, CW_IGNORE},
|
||||
{0,0,0,0,0}
|
||||
|
||||
@ -312,6 +312,14 @@ static struct cw_ElemDef join_response_elements[] ={
|
||||
{0,0,CAPWAP_ELEM_AC_DESCRIPTOR, 1, 0},
|
||||
{0,0,CAPWAP_ELEM_AC_NAME, 1, 0},
|
||||
{0,0,CAPWAP_ELEM_ECN_SUPPORT, 1, 0},
|
||||
{0,0,CAPWAP_ELEM_CAPWAP_CONTROL_IPV4_ADDRESS, 1, 0},
|
||||
{0,0,CAPWAP_ELEM_CAPWAP_CONTROL_IPV6_ADDRESS, 1, 0},
|
||||
{0,0,CAPWAP_ELEM_CAPWAP_LOCAL_IPV4_ADDRESS, 1, 0},
|
||||
{0,0,CAPWAP_ELEM_CAPWAP_LOCAL_IPV6_ADDRESS, 1, 0},
|
||||
|
||||
{0,0,CAPWAP_ELEM_MAXIMUM_MESSAGE_LENGTH, 0, 0},
|
||||
{0,0,CAPWAP_ELEM_VENDOR_SPECIFIC_PAYLOAD, 0, CW_IGNORE},
|
||||
|
||||
/* {0,0,CAPWAP_ELEM_AC_DESCRIPTOR, 1, 0},
|
||||
{0,0,CAPWAP_ELEM_AC_NAME, 1, 0},
|
||||
{0,0,CW_ELEM_CAPWAP_CONTROL_IPV4_ADDRESS, 1, 0},
|
||||
|
@ -46,7 +46,7 @@ static cw_action_in_t actions_in[] = {
|
||||
{
|
||||
.capwap_state = CAPWAP_STATE_DISCOVERY,
|
||||
.msg_id = CAPWAP_MSG_DISCOVERY_RESPONSE,
|
||||
.elem_id = CW_ELEM_CAPWAP_CONTROL_IPV4_ADDRESS,
|
||||
.elem_id = CAPWAP_ELEM_CAPWAP_CONTROL_IPV4_ADDRESS,
|
||||
.item_id = CW_ITEM_CAPWAP_CONTROL_IP_ADDRESS_LIST,
|
||||
.start = cw_in_capwap_control_ip_address,
|
||||
.min_len = 6,
|
||||
@ -60,7 +60,7 @@ static cw_action_in_t actions_in[] = {
|
||||
{
|
||||
.capwap_state = CAPWAP_STATE_DISCOVERY,
|
||||
.msg_id = CAPWAP_MSG_DISCOVERY_RESPONSE,
|
||||
.elem_id = CW_ELEM_CAPWAP_CONTROL_IPV6_ADDRESS,
|
||||
.elem_id = CAPWAP_ELEM_CAPWAP_CONTROL_IPV6_ADDRESS,
|
||||
.item_id = CW_ITEM_CAPWAP_CONTROL_IP_ADDRESS_LIST,
|
||||
.start = cw_in_capwap_control_ip_address, // Change to v6 handler
|
||||
.min_len = 18,
|
||||
@ -163,7 +163,7 @@ static cw_action_in_t actions_in[] = {
|
||||
{
|
||||
.capwap_state = CAPWAP_STATE_JOIN,
|
||||
.msg_id = CAPWAP_MSG_JOIN_RESPONSE,
|
||||
.elem_id = CW_ELEM_CAPWAP_CONTROL_IPV4_ADDRESS,
|
||||
.elem_id = CAPWAP_ELEM_CAPWAP_CONTROL_IPV4_ADDRESS,
|
||||
.item_id = CW_ITEM_CAPWAP_CONTROL_IP_ADDRESS_LIST,
|
||||
.start = cw_in_capwap_control_ip_address,
|
||||
.min_len = 6,
|
||||
@ -176,7 +176,7 @@ static cw_action_in_t actions_in[] = {
|
||||
{
|
||||
.capwap_state = CAPWAP_STATE_JOIN,
|
||||
.msg_id = CAPWAP_MSG_JOIN_RESPONSE,
|
||||
.elem_id = CW_ELEM_CAPWAP_CONTROL_IPV6_ADDRESS,
|
||||
.elem_id = CAPWAP_ELEM_CAPWAP_CONTROL_IPV6_ADDRESS,
|
||||
.item_id = CW_ITEM_CAPWAP_CONTROL_IP_ADDRESS_LIST,
|
||||
.start = cw_in_capwap_control_ip_address, // Change to v6 handler
|
||||
.min_len = 18,
|
||||
|
@ -76,12 +76,12 @@ int capwap_out_capwap_control_ip_address(struct cw_ElemHandler * eh,
|
||||
l = address->type->len(address);
|
||||
|
||||
switch(eh->id){
|
||||
case CW_ELEM_CAPWAP_CONTROL_IPV4_ADDRESS:
|
||||
case CAPWAP_ELEM_CAPWAP_CONTROL_IPV4_ADDRESS:
|
||||
if (l!=4){
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
case CW_ELEM_CAPWAP_CONTROL_IPV6_ADDRESS:
|
||||
case CAPWAP_ELEM_CAPWAP_CONTROL_IPV6_ADDRESS:
|
||||
if (l!=16){
|
||||
continue;
|
||||
}
|
||||
|
@ -43,6 +43,13 @@ static struct cw_ElemDef join_request_elements[] = {
|
||||
|
||||
};
|
||||
|
||||
static int join_response_states[] = { CAPWAP_STATE_JOIN, 0 };
|
||||
static struct cw_ElemDef join_response_elements[] = {
|
||||
{0, 0, CAPWAP80211_ELEM_WTP_RADIO_INFORMATION, 1, 0},
|
||||
{0, 0, 0, 0, 0}
|
||||
|
||||
};
|
||||
|
||||
|
||||
static struct cw_MsgDef messages[] = {
|
||||
{
|
||||
@ -61,6 +68,14 @@ static struct cw_MsgDef messages[] = {
|
||||
join_request_elements
|
||||
}
|
||||
,
|
||||
{
|
||||
"Join Request",
|
||||
CAPWAP_MSG_JOIN_RESPONSE,
|
||||
CW_ROLE_AC,
|
||||
join_response_states,
|
||||
join_response_elements
|
||||
}
|
||||
,
|
||||
{0, 0, 0, 0, 0}
|
||||
};
|
||||
|
||||
|
@ -268,8 +268,16 @@ static struct cw_ElemDef join_request_elements[] ={
|
||||
|
||||
};
|
||||
|
||||
static int join_response_states[] = {CAPWAP_STATE_JOIN,0};
|
||||
static struct cw_ElemDef join_response_elements[] ={
|
||||
{0,CW_VENDOR_ID_CISCO, CISCO_ELEM_SPAM_VENDOR_SPECIFIC,1, CW_IGNORE},
|
||||
{CW_PROTO_LWAPP, CW_VENDOR_ID_CISCO, CISCO_LWELEM_PATH_MTU, 0, 0},
|
||||
|
||||
|
||||
{0,0,0,00}
|
||||
|
||||
};
|
||||
|
||||
static struct cw_MsgDef messages[] = {
|
||||
{
|
||||
NULL, /* name */
|
||||
@ -292,6 +300,14 @@ static struct cw_MsgDef messages[] = {
|
||||
join_request_states,
|
||||
join_request_elements
|
||||
},
|
||||
{
|
||||
NULL, /* name */
|
||||
CAPWAP_MSG_JOIN_RESPONSE, /* type */
|
||||
CW_ROLE_WTP,
|
||||
join_response_states,
|
||||
join_response_elements
|
||||
},
|
||||
|
||||
{0,0,0,0}
|
||||
|
||||
};
|
||||
|
Reference in New Issue
Block a user