More move to cw_Conn and conn-stuff within on file
This commit is contained in:
@ -74,8 +74,7 @@ CWSRC=\
|
||||
cw_write_descriptor_subelem.c\
|
||||
cw_write_radio_element.c\
|
||||
cw_detect_nat.c\
|
||||
|
||||
#cw_read_from.c \
|
||||
cw_read_from.c \
|
||||
|
||||
KTVSRC=\
|
||||
cw_ktv_add.c\
|
||||
@ -177,10 +176,8 @@ MISCSRC=\
|
||||
capwap_strings_result.c\
|
||||
capwap_strings_state.c\
|
||||
capwap_strings_vendor.c\
|
||||
conn_create.c\
|
||||
conn_create_noq.c\
|
||||
conn_destroy.c\
|
||||
conn_init.c\
|
||||
connlist.c\
|
||||
conn_prepare_image_data_request.c\
|
||||
conn_process_packet.c\
|
||||
@ -192,7 +189,6 @@ MISCSRC=\
|
||||
conn_send_data_packet.c\
|
||||
conn_send_msg.c\
|
||||
conn_send_packet.c\
|
||||
conn_send_request.c\
|
||||
dot11.c\
|
||||
dot11_inline.c\
|
||||
format.c\
|
||||
@ -205,8 +201,12 @@ MISCSRC=\
|
||||
send.c\
|
||||
strheap.c\
|
||||
netconn.c\
|
||||
conn.c
|
||||
|
||||
# conn_q_wait_packet.c\
|
||||
# conn_init.c\
|
||||
# conn_create.c\
|
||||
# conn_send_request.c\
|
||||
|
||||
DTLSSRC+=\
|
||||
dtls_bio.c\
|
||||
@ -267,3 +267,6 @@ dynamic: $(DNAME)
|
||||
|
||||
include ../lib.mk
|
||||
|
||||
depend:
|
||||
mkdep -c ${CFLAGS} ${SOURCES}
|
||||
|
||||
|
134
src/cw/conn.c
Normal file
134
src/cw/conn.c
Normal file
@ -0,0 +1,134 @@
|
||||
#include <string.h>
|
||||
|
||||
|
||||
#include "conn.h"
|
||||
#include "capwap.h"
|
||||
#include "cw.h"
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "log.h"
|
||||
#include "capwap.h"
|
||||
#include "conn.h"
|
||||
#include "sock.h"
|
||||
|
||||
#include "msgset.h"
|
||||
#include "cw.h"
|
||||
|
||||
|
||||
|
||||
|
||||
static int write_header(struct cw_ElemHandler * handler, uint8_t * dst, int len)
|
||||
{
|
||||
if (handler->vendor)
|
||||
return len + cw_put_elem_vendor_hdr(dst, handler->vendor, handler->id, len);
|
||||
|
||||
return len + cw_put_elem_hdr(dst, handler->id, len);
|
||||
}
|
||||
|
||||
static int header_len(struct cw_ElemHandler * handler)
|
||||
{
|
||||
return handler->vendor ? 10 : 4;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Basic initialization of a conn object
|
||||
* @param conn conn object to initialize
|
||||
*/
|
||||
void cw_conn_init(struct cw_Conn * conn)
|
||||
{
|
||||
memset(conn,0,sizeof(struct cw_Conn ));
|
||||
conn->retransmit_interval=CAPWAP_RETRANSMIT_INTERVAL;
|
||||
conn->max_retransmit=CAPWAP_MAX_RETRANSMIT;
|
||||
conn->wait_dtls=CAPWAP_WAIT_DTLS;
|
||||
conn->wait_join=CAPWAP_WAIT_JOIN;
|
||||
conn->mtu_discovery=1;
|
||||
// conn->capwap_mode = 0;
|
||||
conn->strict_capwap=1;
|
||||
|
||||
|
||||
|
||||
conn->process_packet=conn_process_packet;
|
||||
conn->process_message=process_message;
|
||||
|
||||
conn->write_header = write_header;
|
||||
conn->header_len = header_len;
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a conn object
|
||||
* @param sock a socket
|
||||
* @param addr the address associated
|
||||
* @param qsize size of packet queue
|
||||
* @return A pointer to the created object
|
||||
* This function creates a conn obnject with queueing functionality
|
||||
* for asynchronous operation.
|
||||
* To create a conn object without queue functionallity use #conn_create_noq.
|
||||
*/
|
||||
struct cw_Conn * cw_conn_create(int sock, struct sockaddr * addr, int qsize)
|
||||
{
|
||||
struct cw_Conn * conn;
|
||||
conn = malloc(sizeof (struct cw_Conn ));
|
||||
if (!conn)
|
||||
return NULL;
|
||||
|
||||
cw_conn_init(conn);
|
||||
|
||||
conn->sock=sock;
|
||||
|
||||
if (addr)
|
||||
sock_copyaddr(&conn->addr,addr);
|
||||
|
||||
|
||||
conn->fragman = fragman_create();
|
||||
if (conn->fragman==NULL){
|
||||
conn_destroy(conn);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
conn->qsize=qsize;
|
||||
if (qsize != 0){
|
||||
if (!(conn->q=malloc( sizeof(uint8_t *) * qsize))){
|
||||
conn_destroy(conn);
|
||||
return NULL;
|
||||
}
|
||||
conn->qrpos=-1;
|
||||
if (sem_init(&conn->q_sem,0,0)!=0){
|
||||
cw_log(LOG_ERR,"Fatal- Can't init semaphore for conn object: %s",strerror(errno));
|
||||
conn_destroy(conn);
|
||||
return NULL;
|
||||
};
|
||||
conn->recv_packet=conn_q_recv_packet;
|
||||
conn->recv_packet_peek=conn_q_recv_packet_peek;
|
||||
}
|
||||
else{
|
||||
conn->recv_packet = conn_recv_packet;
|
||||
conn->recv_packet_peek = conn_recv_packet_peek;
|
||||
}
|
||||
|
||||
conn->send_packet = conn_send_packet;
|
||||
/* conn->send_data_packet = conn_send_data_packet;*/
|
||||
|
||||
conn->last_seqnum_received=-1;
|
||||
conn->mtu=600;
|
||||
|
||||
|
||||
conn->cur_packet=0;
|
||||
conn->recv_timeout=1;
|
||||
|
||||
conn->seqnum=-1;
|
||||
conn->write = conn->send_packet;
|
||||
conn->read = conn->recv_packet;
|
||||
|
||||
/* conn->write_data = conn->send_data_packet; */
|
||||
|
||||
conn->dtls_mtu = 600;
|
||||
|
||||
return conn;
|
||||
}
|
||||
|
||||
|
@ -256,8 +256,8 @@ typedef struct cw_Conn cw_Conn_t;
|
||||
|
||||
|
||||
|
||||
struct cw_Conn*conn_create(int sock, struct sockaddr *addr, int qsize);
|
||||
struct cw_Conn*conn_create_noq(int sock, struct sockaddr *addr);
|
||||
struct cw_Conn* cw_conn_create(int sock, struct sockaddr *addr, int qsize);
|
||||
struct cw_Conn* conn_create_noq(int sock, struct sockaddr *addr);
|
||||
|
||||
|
||||
extern int conn_send_cwmsg(struct cw_Conn*conn, struct cwmsg *cwmsg);
|
||||
@ -310,11 +310,11 @@ struct cwrmsg *conn_wait_for_message(struct cw_Conn*conn, time_t timer);
|
||||
|
||||
struct cwrmsg *conn_wait_for_request(struct cw_Conn*conn, int *msglist, time_t timer);
|
||||
|
||||
int conn_q_wait_packet(struct cw_Conn* conn, int seconds);
|
||||
//int conn_q_wait_packet(struct cw_Conn* conn, int seconds);
|
||||
|
||||
#define conn_is_error(conn) (conn->dtls_error)
|
||||
|
||||
void conn_init(struct cw_Conn*conn);
|
||||
void cw_conn_init(struct cw_Conn*conn);
|
||||
|
||||
extern int cw_read_messages(struct cw_Conn*conn);
|
||||
|
||||
|
@ -35,76 +35,4 @@
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Create a conn object
|
||||
* @param sock a socket
|
||||
* @param addr the address associated
|
||||
* @param qsize size of packet queue
|
||||
* @return A pointer to the created object
|
||||
* This function creates a conn obnject with queueing functionality
|
||||
* for asynchronous operation.
|
||||
* To create a conn object without queue functionallity use #conn_create_noq.
|
||||
*/
|
||||
struct cw_Conn * conn_create(int sock, struct sockaddr * addr, int qsize)
|
||||
{
|
||||
struct cw_Conn * conn;
|
||||
conn = malloc(sizeof (struct cw_Conn ));
|
||||
if (!conn)
|
||||
return NULL;
|
||||
|
||||
conn_init(conn);
|
||||
|
||||
conn->sock=sock;
|
||||
|
||||
if (addr)
|
||||
sock_copyaddr(&conn->addr,addr);
|
||||
|
||||
|
||||
conn->fragman = fragman_create();
|
||||
if (conn->fragman==NULL){
|
||||
conn_destroy(conn);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
conn->qsize=qsize;
|
||||
if (qsize != 0){
|
||||
if (!(conn->q=malloc( sizeof(uint8_t *) * qsize))){
|
||||
conn_destroy(conn);
|
||||
return NULL;
|
||||
}
|
||||
conn->qrpos=-1;
|
||||
if (sem_init(&conn->q_sem,0,0)!=0){
|
||||
cw_log(LOG_ERR,"Fatal- Can't init semaphore for conn object: %s",strerror(errno));
|
||||
conn_destroy(conn);
|
||||
return NULL;
|
||||
};
|
||||
conn->recv_packet=conn_q_recv_packet;
|
||||
conn->recv_packet_peek=conn_q_recv_packet_peek;
|
||||
}
|
||||
else{
|
||||
conn->recv_packet = conn_recv_packet;
|
||||
conn->recv_packet_peek = conn_recv_packet_peek;
|
||||
}
|
||||
|
||||
conn->send_packet = conn_send_packet;
|
||||
/* conn->send_data_packet = conn_send_data_packet;*/
|
||||
|
||||
conn->last_seqnum_received=-1;
|
||||
conn->mtu=600;
|
||||
|
||||
|
||||
conn->cur_packet=0;
|
||||
conn->recv_timeout=1;
|
||||
|
||||
conn->seqnum=-1;
|
||||
conn->write = conn->send_packet;
|
||||
conn->read = conn->recv_packet;
|
||||
|
||||
/* conn->write_data = conn->send_data_packet; */
|
||||
|
||||
conn->dtls_mtu = 600;
|
||||
|
||||
return conn;
|
||||
}
|
||||
|
||||
|
||||
|
@ -43,7 +43,7 @@ struct cw_Conn * conn_create_noq(int sock, struct sockaddr * addr)
|
||||
if (!conn)
|
||||
return NULL;
|
||||
|
||||
conn_init(conn);
|
||||
cw_conn_init(conn);
|
||||
|
||||
|
||||
conn->sock=sock;
|
||||
|
@ -132,7 +132,7 @@ static struct cw_StrListElem prefix[] = {
|
||||
{DBG_DTLS_DETAIL, " DTLS - "},
|
||||
{DBG_WARN, " Warning - "},
|
||||
{DBG_MOD, " Mod - "},
|
||||
{DBG_STATE, " State - "},
|
||||
{DBG_STATE, " State Machine - "},
|
||||
{DBG_CFG_SET, " Cfg Set - "},
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user