Reads Cisco 1048 elements

FossilOrigin-Name: 862bfe7c8db943b9aada1de60f3c537ffe7fd0fc0f943d952c6a912ff9f53cdd
This commit is contained in:
7u83@mail.ru
2018-03-28 07:36:15 +00:00
parent 28b0488a10
commit 17aeec3516
15 changed files with 94 additions and 68 deletions

View File

@ -106,7 +106,8 @@ CWSRC=\
cw_type_ipaddress.c\
cw_type_word.c\
cw_util.c\
cw_write_descriptor_subelem.c
cw_write_descriptor_subelem.c\
cw_read_from.c
LWSRC=\

View File

@ -561,7 +561,7 @@ extern struct cw_StrListElem capwap_strings_vendor[];
extern struct cw_StrListElem capwap_strings_elem[];
extern struct cw_StrListElem capwap_strings_result[];
extern struct cw_StrListElem capwap_strings_board[];
extern struct cw_StrListElem mbag_item_strings[];
/*extern struct cw_StrListElem mbag_item_strings[];*/
@ -574,7 +574,7 @@ extern struct cw_StrListElem mbag_item_strings[];
#define cw_strboardelem(id) cw_strlist_get_str(capwap_strings_board,id)
#define cw_stritem(id) cw_strlist_get_str(mbag_item_strings,(id))
/*#define cw_stritem(id) cw_strlist_get_str(mbag_item_strings,(id))*/
/*
#define cw_strrc(rc) \

View File

@ -309,7 +309,7 @@ extern int conn_recvfrom_packet(struct conn *conn, uint8_t * buf, int len,
struct sockaddr_storage *from);
int conn_send_msg(struct conn * conn, uint8_t *rawmsg);
int cw_read_from(struct conn * conn);
int cw_read_from(struct conn * conn, struct sockaddr_storage * from);
int conn_send_msg(struct conn *conn, uint8_t * rawmsg);

View File

@ -722,29 +722,3 @@ int cw_read_messages(struct conn *conn)
return -1;
}
int cw_read_from(struct conn *conn)
{
int n;
struct sockaddr_storage from;
uint8_t buf[2024];
int len = 2024;
if (!conn->readfrom) {
cw_log(LOG_ERR, "Fatal error, no readfrom method available.");
errno = EPROTO;
return -1;
}
n = conn->readfrom(conn, buf, len, &from);
if (n < 0)
return n;
if (n > 0) {
return conn->process_packet(conn, buf, n, (struct sockaddr *) &from);
}
errno = EAGAIN;
return -1;
}

View File

@ -51,11 +51,9 @@ int cw_out_radio_generic(struct cw_ElemHandler * handler, struct cw_ElemHandlerP
len =0;
radios = cw_ktv_get_byte(params->conn->local_cfg,"wtp-descriptor/max-radios",0);
printf("Must put radios: %d\n",radios);
for(i=1;i<radios+1;i++){
l = cw_put_radio_generic(handler,i,params,dst+len);
printf("put radio %i, returns %d\n",i,l);
cw_dbg_elem(DBG_ELEM_OUT,params->conn,params->msgdata->type,handler,dst,l);
len+=l;
}

29
src/cw/cw_read_from.c Normal file
View File

@ -0,0 +1,29 @@
#include "cw.h"
#include "log.h"
int cw_read_from(struct conn *conn, struct sockaddr_storage * from)
{
int n;
uint8_t buf[2024];
int len = 2024;
if (!conn->readfrom) {
cw_log(LOG_ERR, "Fatal error, no readfrom method available.");
errno = EPROTO;
return -1;
}
n = conn->readfrom(conn, buf, len, from);
if (n < 0)
return n;
if (n > 0) {
return conn->process_packet(conn, buf, n, (struct sockaddr *) from);
}
errno = EAGAIN;
return -1;
}

View File

@ -259,8 +259,17 @@ static inline void *mavl_replace(struct mavl *t,void *data){
void mavl_freeptr(void *ptr);
/**
* Create a mavl_t object which stores pointers.
* @param cmp a pointer to the compare function
* @param del a pointer to a delete function
* @return The mavl_t object or NULL if an error has occured.
*/
#define mavl_create_ptr(cmp,del)\
mavl_create(cmp,del,sizeof(void*))
int mavl_cmpstr(const void *p1, const void *p2);
#define mavl_create_str() mavl_create_ptr(mavl_cmpstr,mavl_freeptr)
#define mavl_create_conststr() mavl_create_ptr(mavl_cmpstr,NULL)
@ -271,6 +280,7 @@ void * mavl_add_ptr ( mavl_t tree, const void *ptr );
#define mavl_add_str(tree,str) mavl_add_ptr(tree,str)
#define mavl_get_str(tree,search) ((char *)(mavl_get_ptr(tree,search)))
#define mavliter_get_str(iter) ((char*)(mavliter_get_ptr(iter)))
#define mavliter_get_conststr(iter) ((const char*)(mavliter_get_ptr(iter)))
/**
* @} MAVL