最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

capwap设计文档

来源:动视网 责编:小OO 时间:2025-10-06 00:04:49
文档

capwap设计文档

/*用多线程处理每一个ap上来的数据*/typedefenum{AC_ENTER_JOIN,AC_ENTER_CONFIGURE,AC_ENTER_DATA_CHECK,AC_ENTER_RUN,}ACState;//MessageTypeValues#defineMSG_TYPE_DISCOVERY_REQUEST1#defineMSG_TYPE_DISCOVERY_RESPONSE2#defineMSG_TYPE_JOIN_REQUEST3#defineMSG_TYPE_JOIN_RESP
推荐度:
导读/*用多线程处理每一个ap上来的数据*/typedefenum{AC_ENTER_JOIN,AC_ENTER_CONFIGURE,AC_ENTER_DATA_CHECK,AC_ENTER_RUN,}ACState;//MessageTypeValues#defineMSG_TYPE_DISCOVERY_REQUEST1#defineMSG_TYPE_DISCOVERY_RESPONSE2#defineMSG_TYPE_JOIN_REQUEST3#defineMSG_TYPE_JOIN_RESP


/* 用多线程处理每一个ap上来的数据*/

typedef enum {

AC_ENTER_JOIN,

AC_ENTER_CONFIGURE,

AC_ENTER_DATA_CHECK,

AC_ENTER_RUN,

} ACState;

// Message Type Values

#defineMSG_TYPE_DISCOVERY_REQUEST 1

#defineMSG_TYPE_DISCOVERY_RESPONSE 2

#defineMSG_TYPE_JOIN_REQUEST 3

#defineMSG_TYPE_JOIN_RESPONSE 4

#defineMSG_TYPE_CONFIGURE_REQUEST 5

#defineMSG_TYPE_CONFIGURE_RESPONSE 6

#defineMSG_TYPE_CONFIGURE_UPDATE_REQUEST 7

#defineMSG_TYPE_CONFIGURE_UPDATE_RESPONSE 8

#define MSG_TYPE_WTP_EVENT_REQUEST 9

#define MSG_TYPE_WTP_EVENT_RESPONSE 10

#defineMSG_TYPE_CHANGE_STATE_EVENT_REQUEST 11

#defineMSG_TYPE_CHANGE_STATE_EVENT_RESPONSE12

#defineMSG_TYPE_ECHO_REQUEST 13

#defineMSG_TYPE_ECHO_RESPONSE 14

#defineMSG_TYPE_IMAGE_DATA_REQUEST 15

#defineMSG_TYPE_IMAGE_DATA_RESPONSE 16

#defineMSG_TYPE_RESET_REQUEST 17

#defineMSG_TYPE_RESET_RESPONSE 18

#defineMSG_TYPE_PRIMARY_DISCOVERY_REQUEST 19

#defineMSG_TYPE_PRIMARY_DISCOVERY_RESPONSE 20

#defineMSG_TYPE_DATA_TRANSFER_REQUEST 21

#defineMSG_TYPE_DATA_TRANSFER_RESPONSE 22

#defineMSG_TYPE_CLEAR_CONFIGURATION_REQUEST23

#defineMSG_TYPE_CLEAR_CONFIGURATION_RESPONSE24

#defineMSG_TYPE_STATION_CONFIGURATION_REQUEST25

#defineMSG_TYPE_STATION_CONFIGURATION_RESPONSE 26

#define MSG_TYPE_WLAN_CONFIGURATION_REQUEST 33913

#define MSG_TYPE_WLAN_CONFIGURATION_RESPONSE 33914

// Message Elements Type Values

#define MSG_ELEMENT_AC_DESCRIPTOR 1

#define MSG_ELEMENT_AC_IPV4_LIST 2

#define MSG_ELEMENT_AC_IPV6_LIST 3

#define MSG_ELEMENT_AC_NAME 4

#define MSG_ELEMENT_AC_NAME_INDEX 5

#define MSG_ELEMENT_TIMESTAMP 6

#defineMSG_ELEMENT_ADD_MAC_ACL 7

#defineMSG_ELEMENT_ADD_STATION 8

#defineMSG_ELEMENT_ADD_STATIC_MAC_ACL 9

#define MSG_ELEMENT_CW_CONTROL_IPV4_ADDRESS10

#define MSG_ELEMENT_CW_CONTROL_IPV6_ADDRESS11

#defineMSG_ELEMENT_CW_TIMERS 12

#defineMSG_ELEMENT_DATA_TRANSFER_DATA13

#defineMSG_ELEMENT_DATA_TRANSFER_MODE14

#define MSG_ELEMENT_CW_DECRYPT_ER_REPORT15

#define MSG_ELEMENT_CW_DECRYPT_ER_REPORT_PERIOD16

#define MSG_ELEMENT_DELETE_MAC_ACL17

#define MSG_ELEMENT_DELETE_STATION 18

#define MSG_ELEMENT_DELETE_STATIC_MAC_ACL19

#define MSG_ELEMENT_DISCOVERY_TYPE 20

#define MSG_ELEMENT_DUPLICATE_IPV4_ADDRESS21

#define MSG_ELEMENT_DUPLICATE_IPV6_ADDRESS22

#define MSG_ELEMENT_IDLE_TIMEOUT 23

#define MSG_ELEMENT_IMAGE_DATA 24

#define MSG_ELEMENT_IMAGE_IDENTIFIER25

#define

MSG_ELEMENT_IMAGE_INFO 26

#define MSG_ELEMENT_INITIATED_DOWNLOAD 27

#define MSG_ELEMENT_LOCATION_DATA 28

#define MSG_ELEMENT_MAX_MSG_LEN 29

#define MSG_ELEMENT_MTU_DISCOVERY_PADDING30

#define MSG_ELEMENT_RADIO_ADMIN_STATE 31

#define MSG_ELEMENT_RADIO_OPERAT_STATE32

#define MSG_ELEMENT_RESULT_CODE 33

#define MSG_ELEMENT_RETURNED_MSG_ELEM34

#define MSG_ELEMENT_SESSION_ID 35

#define MSG_ELEMENT_STATISTICS_TIMER36

#define MSG_ELEMENT_VENDOR_SPEC_PAYLOAD37

#define MSG_ELEMENT_WTP_BOARD_DATA38

#define MSG_ELEMENT_WTP_DESCRIPTOR39

#define MSG_ELEMENT_WTP_FALLBACK 40

#define MSG_ELEMENT_WTP_FRAME_TUNNEL_MODE41

#define MSG_ELEMENT_WTP_IPV4_ADDRESS42

#define MSG_ELEMENT_WTP_MAC_TYPE 43

#define MSG_ELEMENT_WTP_NAME 44

#define MSG_ELEMENT_WTP_OPERAT_STATISTICS45

#define MSG_ELEMENT_WTP_RADIO_STATISTICS46

#define MSG_ELEMENT_WTP_REBOOT_STATISTICS47

#define MSG_ELEMENT_WTP_STATIC_IP 48

// wireless Message Elements Type Values

#define ADD_WLAN 1024

#define ANTENNA 1025

#define ASSIGNED_WTP_BSSID 1026

#define DELETE_WALN 1027

#define DIRECT_SEQUENCE_CONTROL 1028

#define INFORMATION_ELEMENT 1029

#define MAC_OPERATION 1030

#define MIC_COUNTERMEASURES 1031

#define NULTI_DOMAIN_CAPABILITY 1032

#define OFDM_CONTROL 1033

#define RATE_SET 1034

#define RSNA_ERROR_REPORT_FROM_STATION 1035

#define STATION 1036

#define STATION_QOS_PROFILE 1037

#define STATION_SESSION_KEY 1038

#define STATISTICS 1039

#define SUPPORTED_RATES 1040

#define TX_POWER 1041

#define TX_POWER_LEVEL 1042

#define UPDATE_STATION_QOS 1043

#define UPDATE_WLAN 1044

#define WTP_QUALITY_OF_SERVICE 1045

#define WTP_RADIO_CONFIGURATION

1046

#define WTP_RADIO_FAIL_AlARM_INDICATION 1047

#define WTP_RADIO_INFORMATION 1048

s32 ac_init()

{

/*定时器初始化函数*/

if( ERR_SUCCESS != timer_init())

{

/*错误处理*/

}

/*socket 初始化 */

/* openssl 初始化 */

}

s32 ACParseJoinReqMsg()

{

/*分析消息元素*/

switch(elemType)

{

case MSG_ELEMENT_LOCATION_DATA:

{/* 取出wtp传过来的 LocationData */

ACParseLocationData():

break;

}

case MSG_ELEMENT_WTP_BOARD_DATA:

{/* 取出wtp传过来的 WTPBoardData*/

ACParseWTPBoardData();

break;

}

case MSG_ELEMENT_SESSION_ID:

{/*取出wtp传过来的 SessionID*/

ACParseSessionID();

break;

}

case MSG_ELEMENT_WTP_DESCRIPTOR:

{/*取出wtp传过来的 WTPDescriptor*/

ACParseWTPDescriptor();

break;

}

case MSG_ELEMENT_WTP_IPV4_ADDRESS:

{/*取出wtp传过来的 IPv4Address*/

ACParseWTPIPv4Address();

break;

}

case MSG_ELEMENT_WTP_NAME:

{/*取出wtp传过来的 WTPName*/

ACParseWTPName();

break;

}

case MSG_ELEMENT_WTP_FRAME_TUNNEL_MODE:

{/*取出wtp传过来的 WTPFrameTunnelMode*/

ACParseWTPFrameTunnelMode();

break;

}

case MSG_ELEMENT_WTP_MAC_TYPE:

{/*取出wtp传过来的WTPMACType */

ACParseWTPMACType();

break;

}

default:

}

}

s32 ACSaveJoinReqMsg()

{

/* 加入请求报文存入 全局 结构G_WTP*/

}

s32 ACAssembleJoinRepMsg()

{

}

s32 ACSendJoinRepMsg()

{

}

s32 ACEnterJoin()

{

/* 取消 waitJoin timer */

/* ac 分析加入请求报文*/

ACParseJoinReqMsg();

/* ac 保存加入请求报文*/

ACSaveJoinReqMsg();

/* ac 组装加入应答报文*/

ACAssembleJoinRepMsg();

/* ac 发送加入应答报文*/

ACSendJoinRepMsg();

/* 开启 ChangeStatePendingTimer */

}

s32 ACParseConfReqMsg()

{

/*分析消息元素*/

switch(elemType)

{

case MSG_ELEMENT_AC_NAME:

{

break;

}

case MSG_ELEMENT_AC_NAME_INDEX:

{

break;

}

case MSG_ELEMENT_RADIO_ADMIN_STATE:

{

break;

}

case MSG_ELEMENT_STATISTICS_TIMER:

{

break;

}

case MSG_ELEMENT_WTP_REBOOT_STATISTICS:

{

break;

}

case MAC_OPERATION:

{

break;

}

case NULTI_DOMAIN_CAPABILITY:

{

break;

}

case WTP_RADIO_CONFIGURATION:

{

break;

}

case WTP_RADIO_INFORMATION:

{

break;

}

default:

}

}

s32 ACSaveConfReqMsg()

{

/* 配置下发请求报文存入 全局 结构G_WTP*/

}

s32 ACAssembleConfRepMsg()

{

}

s32 ACSendConfRepMsg()

{

}

s32 ACEnterConfigure()

{

/*取消 ChangeStatePendingtimer*/

/* ac 分析配置下发请求报文*/

ACParseConfReqMsg();

/* ac 保存配置下发请求报文*/

ACSaveConfReqMsg();

/* ac 组装配置下发应答报文*/

ACAssembleConfRepMsg();

/* ac 发送配置下发应答报文*/

ACSendConfRepMsg();

/* 开始 DataCheckTimer */

}

s32 ACParseDataCheckReqMsg()

{

/*分析消息元素*/

switch(elemType)

{

case MSG_ELEMENT_RADIO_OPERAT_STATE:

{

break;

}

case MSG_ELEMENT_RESULT_CODE:

{

break;

}

default:

}

}

s32 ACSaveDataCheckReqMsg()

{

/* 配置确认请求报文存入 全局 结构G_WTP*/

}

s32 ACAssembleDataCheckRepMsg()

{

}

s32 ACSendDataCheckRepMsg()

{

}

s32 ACEnterDataCheck()

{

/*停止DataCheckTimer */

/* ac 分析配置确认请求报文*/

ACParseDataCheckReqMsg();

/* ac 保存配置确认请求报文*/

ACSaveDataCheckReqMsg();

/* ac 组装配置确认应答报文*/

ACAssembleDataCheckRepMsg();

/* ac 发送配置确认应答报文*/

ACSendDataCheckRepMsg();

}

s32 ACParseConfUpdateRespMsg()

{

/*分析消息元素*/

switch(elemType)

{

case MSG_ELEMENT_RESULT_CODE:

{

break;

}

case MSG_ELEMENT_RESULT_CODE_CW_TYPE_WITH_PAYLOAD:

{

break;

}

default:

}

}

s32 ACParseChangeStateEventReqMsg()

{

/*分析消息元素*/

switch(elemType)

{

case MSG_ELEMENT_RADIO_OPERAT_STATE:

{

break;

}

case MSG_ELEMENT_RESULT_CODE:

{

break;

}

default:

}

}

s32 ACParseEchoReqMsg()

{

/*分析消息元素*/

switch(elemType)

{

default:

}

}

s32 ACParseStaConfRespMsg()

{

/*分析消息元素*/

switch(elemType)

{

case MSG_ELEMENT_RESULT_CODE:

{

break;

}

default:

}

}

s32 ACParseClearConfRespMsg()

{

/*分析消息元素*/

switch(elemType)

{

case MSG_ELEMENT_RESULT_CODE:

{

break;

}

default:

}

}

s32 ACParseDatatransferReqMsg()

{

/*分析消息元素*/

switch(elemType)

{

case MSG_ELEMENT_DATA_TRANSFER_DATA:

{

break;

}

default:

}

}

s32 ACParseWtpEventReqMsg()

{

/*分析消息元素*/

switch(elemType)

{

case MSG_ELEMENT_CW_DECRYPT_ER_REPORT:

{

break;

}

case MSG_E

LEMENT_DUPLICATE_IPV4_ADDRESS:

{

break;

}

case MSG_ELEMENT_DUPLICATE_IPV6_ADDRESS:

{

break;

}

case MSG_ELEMENT_WTP_OPERAT_STATISTICS:

{

break;

}

case MSG_ELEMENT_WTP_RADIO_STATISTICS:

{

break;

}

case MSG_ELEMENT_WTP_REBOOT_STATISTICS:

{

break;

}

default:

}

}

s32 ACParseWlanConfRespMsg()

{

/*分析消息元素*/

switch(elemType)

{

case MSG_ELEMENT_RESULT_CODE:

{

break;

}

default:

}

}

s32 ACEnterRun()

{

/*分析消息类型*/

switch(elemType)

{

case MSG_TYPE_CONFIGURE_UPDATE_RESPONSE :

{

/*分析ConfUpdate应答报文*/

ACParseConfUpdateRespMsg();

/*保存报文*/

ACSaveConfUpdateRespMsg();

/* 这里发送 WLAN Configuration Request 报文*/

break;

}

case MSG_TYPE_CHANGE_STATE_EVENT_REQUEST :

{

/*分析ChangeStateEvent请求报文*/

ACParseChangeStateEventReqMsg();

/*保存报文*/

ACSaveChangeStateEventReqMsg();

/*组装应答报文*/

ACAssembleChangeStateEventRespMsg();

break;

}

case MSG_TYPE_ECHO_REQUEST:

{

/*分析Echo请求报文*/

ACParseEchoReqMsg();

/*保存报文*/

ACSaveEchoReqMsg();

/*组装应答报文*/

ACAssembleEchoRespMsg();

break;

}

case MSG_TYPE_STATION_CONFIGURATION_RESPONSE:

{

/*分析StaConf应答报文*/

ACParseStaConfRespMsg();

/*保存报文*/

ACSaveStaConfRespMsg();

break;

}

case MSG_TYPE_CLEAR_CONFIGURATION_RESPONSE:

{

/*分析ClearConf应答报文*/

ACParseClearConfRespMsg();

/*保存报文*/

ACSaveClearConfRespMsg();

break;

}

case MSG_TYPE_DATA_TRANSFER_REQUEST:

{

/*分析Datatransfer请求报文*/

ACParseDatatransferReqMsg();

/*保存报文*/

ACSaveDatatransferReqMsg();

/*组装应答报文*/

ACAssembleDatatransferRespMsg();

break;

}

case MSG_TYPE_WTP_EVENT_REQUEST:

{

/*分析WtpEvent请求报文*/

ACParseWtpEventReqMsg();

/*保存报文*/

ACSaveWtpEventReqMsg();

/*组装应答报文*/

ACAssembleWtpEventRespMsg();

break;

}

case MSG_TYPE_WLAN_CONFIGURATION_RESPONSE:

{

/*分析WlanConf应答报文*/

ACParseWlanConfRespMsg();

/*保存报文*/

ACSaveWlanConfRespMsg();

break;

}

default:

break;

}

/* 发送报文*/

}

s32 ac_manage_ap()

{

/* 开启 WaitJoin timer */

......

/* 初始化 DTLS Session*/

......

/*此线程,处理加入,配置下发,配置确认,运行状态的报文,实现状态机*/

switch(ACState)

{

case AC_ENTER_JOIN:

{

ACEnterJoin();

break;

}

case AC_ENTER_CONFIGURE:

{

ACEnterConfigure();

break;

}

case AC_ENTER_DATA_CHECK:

{

ACEnterDataCheck();

break;

}

case AC_ENTER_RUN:

{

ACEnterRun();

break;

}

default:

break;

}

}

/*假线程注册函数*/

s32 dloop_register_read_sock(s32 sock, dloop_sock_handler handler,

void *dloop_data, void *user_data)

{

return dloop_register_sock(sock, SOCK_TYPE_READ, handler,

dloop_data, user_data);

}

s32 ACParseDiscoveryReqMsg()

{

/*分析消息元素*/

switch(elemType)

{

case MSG_ELEMENT_DISCOVERY_TYPE:

{/*从wtp报文中取出 DiscoveryType*/

ACParseDiscoveryType();

break;

}

case MSG_ELEMENT_WTP_BOARD_DATA:

{/*从wtp报文中取出 WTPBoardData*/

ACParseWTPBoardData();

break;

}

case MSG_ELEMENT_WTP_DESCRIPTOR:

{/*取出wtp传过来的 WTPDescriptor*/

ACParseWTPDescri

ptor();

break;

}

case MSG_ELEMENT_WTP_FRAME_TUNNEL_MODE:

{

/*取出wtp传过来的 WTPFrameTunnelMode*/

ACParseWTPFrameTunnelMode();

break;

}

case MSG_ELEMENT_WTP_MAC_TYPE:

{

/*取出wtp传过来的WTPMACType */

ACParseWTPMACType();

break;

}

default:

}

}

/* 循环接收报文处理函数*/

s32 ac_Incoming_packet()

{

/* 主进程处理发现阶段报文*/

/* 主进程创建 管理线程 管理每一个ap,处理加入,配置,数据核实,运行状态的报文*/

if()

{

/* 分析发现请求报文*/

ACParseDiscoveryReqMsg();

/* 组装发现应答报文*/

ACAssembleDiscoveryResp();

/* 发送发现应答报文*/

ACSendUnsafeUnconnected();

}

else

{

/*创建一个线程【假线程】,处理加入,配置,数据核实,运行状态的报文 */

dloop_register_read_sock( sock ,ac_manage_ap, dloop_data,user_data);

}

}

}

/* 定义了 ac各个接口上处理capwap 报文*/

s32 ac_unsafenetwork_sock( s8 * socket , void (* ac_Incoming_packet)(),s32 flag)

{

/*select 系统调用监听sock描述符 用一个socket监听所有ac接口*/

ac_Incoming_packet();

}

s32 ac_main_loop()

{

/* 进程循环接收报文*/

while(1)

{

ret=ac_unsafenetwork_sock(&gACSocket,

ac_Incoming_packet,

0 ));

if( ret != ERR_SUCCESS)

{

/* 错误处理*/

exit(1);

}

}

}

s32 ac_destroy()

{

/*释放资源*/

}

#define WIRELESS_CONTROL_PID_FILE "/var/run/wirelessControl.pid"

s32 main()

{

/* 创建进程,可以调用以下函数*/

ret = make_daemon (WIRELESS_CONTROL_PID_FILE);

if( ERR_SUCCESS != ret)

{

/*错误处理*/

}

/*初始化*/

ac_init();

/*主循环*/

ac_main_loop();

/*释放资源*/

ac_destroy();

}

文档

capwap设计文档

/*用多线程处理每一个ap上来的数据*/typedefenum{AC_ENTER_JOIN,AC_ENTER_CONFIGURE,AC_ENTER_DATA_CHECK,AC_ENTER_RUN,}ACState;//MessageTypeValues#defineMSG_TYPE_DISCOVERY_REQUEST1#defineMSG_TYPE_DISCOVERY_RESPONSE2#defineMSG_TYPE_JOIN_REQUEST3#defineMSG_TYPE_JOIN_RESP
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top