A lot of inline functions added.

FossilOrigin-Name: 61efee7650b25c9d7178211a2f2d41181bf75c621fd5cee0456deebfcea52251
This commit is contained in:
7u83@mail.ru 2015-03-23 18:40:39 +00:00
parent 58b1653aad
commit fb28fed7f9
1 changed files with 83 additions and 18 deletions

View File

@ -18,23 +18,25 @@
/**
* @file
* @brief Ciscospcific CAPWAP definitions
* @brief Cisco specific CAPWAP definitions
*/
#ifndef __CAPWAP_CISCO_H
#define __CAPWAP_CISCO_H
#include <string.h>
#include <time.h>
#include "lwapp.h"
#include "capwap.h"
#define CWVENDOR_CISCO_MWAR_ADDR 2
#define CWVENDOR_CISCO_RAD 3
#define CWVENDOR_CISCO_RAD_SLOT 4
#define CWVENDOR_CISCO_RAD_NAME LW_ELEM_WTP_NAME /* 5 */
#define CWVENDOR_CISCO_MWAR 6
#define CW_CISCO_RAD_SLOT 4
#define CW_CISCO_RAD_NAME LW_ELEM_WTP_NAME /* 5 */
#define CW_CISCO_MWAR LW_ELEM_AC_DESCRIPTOR /* 6 */
#define CWVENDOR_CISCO_BOARD DATA LW_ELEM_WTP_BOARD_DATA /* 50 */
#define CWVENDOR_CISCO_BOARD DATA LW_ELEM_WTP_BOARD_DATA /* 50 */
#define CWVENDER_CISCO_AP_MODE_AND_TYPE 54
#define CWVENDOR_CISCO_AP_IP_ADDR 83
@ -50,26 +52,89 @@
#define CW_CISCO_AP_TIMESYNC 151
#define CW_CISCO_BOARD_DATA_OPTIONS 207
#define CW_CISCO_BOARD_DATA_OPTIONS 207
#define CW_CISCO_MWAR_TYPE 208
extern void cwmsg_addelem_vendor_cisco_ap_timesync(struct cwmsg * cwmsg);
/**
* Add a Cisco AP Timesync message element to a buffer
* @param dst destination buffer
* @param time a unix timestamp
* @param type of time
* @return number of bytes put (15)
*/
static inline int cw_addelem_cisco_ap_timesync(uint8_t * dst, time_t time, uint8_t type)
{
cw_put_dword(dst + 10, time);
cw_put_byte(dst + 14, type);
return 5 + cw_put_elem_vendor_hdr(dst, CW_VENDOR_ID_CISCO, CW_CISCO_AP_TIMESYNC, 5);
}
/**
* Add a Cisco RAD Name message element to buffer
* @param dst destination buffer
* @param name RAD name, zero terminated
* @return number of bytes put
*/
static inline int cw_addelem_cisco_rad_name(uint8_t * dst, uint8_t * name)
{
return cw_addelem_vendor_specific_payload(dst, CW_VENDOR_ID_CISCO, CW_CISCO_RAD_NAME, name,
strlen((char *) name));
}
/**
* Add a Cisco Group Name message element to buffer
* @param dst destination buffer
* @param name Group name, zero terminated
* @return number of bytes put
*/
static inline int cw_addelem_cisco_ap_group_name(uint8_t * dst, uint8_t * name)
{
return cw_addelem_vendor_specific_payload(dst, CW_VENDOR_ID_CISCO, CW_CISCO_AP_GROUP_NAME, name,
strlen((char *) name));
}
/**
* Add Cisco rad_name payload
* @param cwmsg message to add payload to
* @param str data to add
/**
* Add a Cisco MWAR message element.
* @param dst destinnation buffer
* @param acinfo AC data
* @return number of bytes put
*
* This message elemet is basically an LWAPP AC Descriptor
* encapsulated in a CAPWAP vendor specific payload message
*/
static inline int cw_addelem_cisco_mwar(uint8_t *dst, struct ac_info *acinfo){
int l = lw_put_ac_descriptor(dst+10,acinfo);
return l+cw_put_elem_vendor_hdr(dst,CW_VENDOR_ID_CISCO,CW_CISCO_MWAR,l);
}
/*
#define cw_addelem_cisco_rad(dst,acinfo)\
lw_put_ac_descriptor(dst+10,acinfo)
cw_put_elem_vedor_hdr(dst,CW_VENDOR_ID_CISCO,CW_CISCO_RAD,
*/
#define cwmsg_addelem_vendor_cisco_rad_name(cwmsg,str) \
cwmsg_addelem_vendor_specific_payload(cwmsg,CW_VENDOR_ID_CISCO, \
CWVENDOR_CISCO_RAD_NAME,str,strlen((char*)str))
/** Add group name payload */
#define cwmsg_addelem_vendor_cisco_group_name(cwmsg,str) \
cwmsg_addelem_vendor_secific_payload(cwmsg,CW_VENDOR_ID_CISCO, \
CWVENDOR_CISCO_GROUP_NAME,str,strlen((char*)str));
/* cwmsg methods */
#define cwmsg_addelem_cisco_ap_timesync(cwmsg,time,type)\
(cwmsg)->pos+=cw_addelem_cisco_ap_timesync(((cwmsg)->msgelems+(cwmsg)->pos),time,type)
#define cwmsg_addelem_cisco_rad_name(cwmsg,name)\
(cwmsg)->pos+=cw_addelem_cisco_rad_name(((cwmsg)->msgelems+(cwmsg)->pos),(name))
#define cwmsg_addelem_cisco_ap_grpoup_name(cwmsg,name)\
(cwmsg)->pos+=cw_addelem_ap_group_name(((cwmsg)->msgelems+(cwmsg)->pos),(name))
#define cwmsg_addelem_cisco_mwar(cwmsg,acinfo)\
(cwmsg)->pos+=cw_addelem_cisco_mwar(((cwmsg)->msgelems+(cwmsg)->pos),(acinfo))