Work in progress for capwap local ip address

FossilOrigin-Name: d90a1c526fa046859bd8a0dc656c37d9afe8e2bb6e380c497a5895e9efa0b8dd
This commit is contained in:
7u83@mail.ru
2018-03-21 19:01:36 +00:00
parent 4ee4d64d76
commit 6fc631d3a4
10 changed files with 39 additions and 93 deletions

View File

@ -74,7 +74,7 @@ static int read_key (FILE *f, char *key, int max_len, struct parser * p)
n=0;
while(c!=EOF && n<max_len){
if (!isalnum(c) && !strchr("_/-()@#|{}[]",c)/*strchr(": \t\n\a",c)*/){
if (!isalnum(c) && !strchr("._/-()@#|{}[]",c)/*strchr(": \t\n\a",c)*/){
unget_char(c,f,p);
break;
}

View File

@ -1,79 +0,0 @@
#include "log.h"
#include "cw.h"
#include "aciplist.h"
#include "sock.h"
static int put_ip(uint8_t *dst /*void *priv*/, cw_acip_t * acip /*void *data*/)
{
// uint8_t ** dptr = (uint8_t **)priv;
// cw_acip_t *acip=(cw_acip_t*)data;
// uint8_t * dst = *dptr;
uint8_t *d = dst+4;
d+=cw_put_sockaddr(d,&acip->ip);
d+=cw_put_word(d,acip->index);
int fam = sock_addrfamily(&acip->ip);
int elem_id=-1;
switch (fam) {
case AF_INET:
elem_id = CW_ELEM_CAPWAP_CONTROL_IPV4_ADDRESS;
break;
case AF_INET6:
elem_id = CW_ELEM_CAPWAP_CONTROL_IPV6_ADDRESS;
break;
default:
cw_log(LOG_ERR,"Unknown adress family %d",fam);
break;
}
if (elem_id ==-1)
return 0;
d+=cw_put_elem_hdr(dst,elem_id,d-dst-4);
// return 0;
// *dptr = d-4;
return d-4-dst;
// return 1;
}
/*
int cw_out_capwap_control_ip_addr_list(struct conn *conn,struct cw_action_out *a,uint8_t *dst)
{
struct mbag_item * item = mbag_get(conn->local,a->item_id);
if ( !item ) {
cw_log(LOG_ERR, "Can't send CAPWAP Local IPv4/IPv6 Address, not found");
return 0;
}
cw_aciplist_t aciplist = (cw_aciplist_t) mbag_item_get_data_ptr(item);
uint8_t *d = dst;
MAVLITER_DEFINE(i,aciplist);
mavliter_foreach(&i){
struct cw_acip * acip = mavliter_get(&i);
d+=put_ip(d,acip);
}
// cw_aciplist_foreach(aciplist, put_ip, &d);
mbag_item_release_data_ptr(item,aciplist);
return d-dst;
}
*/

View File

@ -113,6 +113,9 @@ int cw_ktv_read_file(FILE * file, mavl_t ktv, mavl_t types);
cw_KTV_t * cw_ktv_get(mavl_t ktv, const char *key, const cw_Type_t * type);
uint8_t cw_ktv_get_byte(mavl_t ktv,const char *key, uint8_t def);
uint16_t cw_ktv_get_word(mavl_t ktv,const char *key, uint16_t def);
cw_KTV_t * cw_ktv_idx_get(mavl_t ktv, const char *key, int idx, const cw_Type_t * type);
extern const cw_Type_t * cw_ktv_std_types[];
#define CW_KTV_STD_TYPES cw_ktv_std_types