More move to cw_Conn and conn-stuff within on file

This commit is contained in:
7u83 2022-08-10 02:10:10 +02:00
parent f8654a0408
commit 9e54e46e45
14 changed files with 176 additions and 111 deletions

View File

@ -4,11 +4,13 @@ all:
$(MAKE) -C src/cw
$(MAKE) -C src/mod
$(MAKE) -C src/ac
$(MAKE) -C src/wtp
clean:
$(MAKE) -C src/cw clean
$(MAKE) -C src/mod clean
$(MAKE) -C src/ac clean
$(MAKE) -C src/wtp

View File

@ -62,7 +62,7 @@ static void reset_echointerval_timer(struct wtpman *wtpman)
}
/*
static int msg_start_handler(struct cw_Conn *conn, struct cw_action_in *a,
uint8_t * data, int len, struct sockaddr *from)
{
@ -71,7 +71,7 @@ static int msg_start_handler(struct cw_Conn *conn, struct cw_action_in *a,
return 0;
}
*/
static void wtpman_remove(struct wtpman *wtpman)
@ -92,7 +92,6 @@ static void wtpman_run_discovery(void *arg)
wtpman->conn->capwap_state = CAPWAP_STATE_DISCOVERY;
while (!cw_timer_timeout(timer)
&& wtpman->conn->capwap_state == CAPWAP_STATE_DISCOVERY) {
int rc;
@ -328,7 +327,6 @@ static void *wtpman_main(void *arg)
char sock_buf[SOCK_ADDR_BUFSIZE];
struct cw_Conn *conn;
int last_state;
struct wtpman *wtpman = (struct wtpman *) arg;
wtpman->conn->seqnum = 0;
@ -337,9 +335,9 @@ static void *wtpman_main(void *arg)
wtpman->conn->remote_cfg = cw_ktv_create();
if (!wtpman->dtlsmode) {
/* We were invoked with an unencrypted packet,
* so assume, it is a discovery request */
if (!wtpman->dtlsmode) {
wtpman_run_discovery(arg);
wtpman_remove(wtpman);
return NULL;
@ -691,7 +689,7 @@ struct wtpman *wtpman_create(int socklistindex, struct sockaddr *srcaddr,
wtpman->conn = conn_create(sockfd, srcaddr, 100);
wtpman->conn = cw_conn_create(sockfd, srcaddr, 5);
wtpman->conn->role = CW_ROLE_AC;
wtpman->conn->data_sock = socklist[socklistindex].data_sockfd;

View File

@ -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
View 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;
}

View File

@ -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);

View File

@ -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;
}

View File

@ -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;

View File

@ -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 - "},

View File

@ -128,7 +128,7 @@ errX:
}
static int run_discovery(struct conn *conn, struct cw_DiscoveryResult * dis)
static int run_discovery(struct cw_Conn *conn, struct cw_DiscoveryResult * dis)
{
time_t timer;
struct sockaddr_storage from;
@ -200,7 +200,7 @@ static int run_discovery(struct conn *conn, struct cw_DiscoveryResult * dis)
/**
* Run discovery for on address (eg broadcast 255.255.255.255)
*/
int cw_run_discovery(struct conn *conn, const char *addr, const char *bindaddr,
int cw_run_discovery(struct cw_Conn *conn, const char *addr, const char *bindaddr,
struct cw_DiscoveryResult * dis)
{
char sock_buf[SOCK_ADDR_BUFSIZE];

View File

@ -32,7 +32,7 @@ void acinfo_log_(int level,const struct ac_info *acinfo,const char * xstr)
int join_state(struct conn * conn)
int join_state(struct cw_Conn * conn)
{
struct wtpinfo * wtpinfo = get_wtpinfo();
@ -98,7 +98,7 @@ acinfo.result_code=99;
int run_join_d(struct conn * conn, struct sockaddr *sa)
int run_join_d(struct cw_Conn * conn, struct sockaddr *sa)
{
char addrstr[SOCK_ADDR_BUFSIZE];
int sockfd;
@ -164,7 +164,7 @@ int run_join_d(struct conn * conn, struct sockaddr *sa)
int run_join(struct conn *conn)
int run_join(struct cw_Conn *conn)
{
char addrstr[SOCK_ADDR_BUFSIZE];
/*
@ -199,7 +199,7 @@ int run_join(struct conn *conn)
return 1;
}
int join(struct conn * conn, struct cw_DiscoveryResult * dis)
int join(struct cw_Conn * conn, struct cw_DiscoveryResult * dis)
{
mavliter_t ii;
mavliter_init(&ii,dis->prio_ip);

View File

@ -30,7 +30,7 @@
int update =1;
/*
int handle_update_req(struct conn *conn, struct cw_action_in *a, uint8_t * data,
int handle_update_req(struct cw_Conn *conn, struct cw_action_in *a, uint8_t * data,
int len, struct sockaddr *from)
{
if (a->msg_id == CAPWAP_MSG_CONFIGURATION_UPDATE_REQUEST){
@ -58,7 +58,7 @@ cw_dbg(DBG_X,"Saving configuration ...");
/*
static void update_radio(struct conn * conn, int rid, mbag_t radio_upd, mbag_t radio,mbag_t iresult )
static void update_radio(struct cw_Conn * conn, int rid, mbag_t radio_upd, mbag_t radio,mbag_t iresult )
{
printf("Updating radio with rid %d\n",rid);
@ -67,7 +67,7 @@ static void update_radio(struct conn * conn, int rid, mbag_t radio_upd, mbag_t r
/*
static void update_radios(struct conn * conn, mbag_t result)
static void update_radios(struct cw_Conn * conn, mbag_t result)
{
MAVLITER_DEFINE (it,conn->radios_upd);
mavliter_foreach(&it){
@ -87,7 +87,7 @@ static void update_radios(struct conn * conn, mbag_t result)
}
*/
static void do_update(struct conn * conn)
static void do_update(struct cw_Conn * conn)
{
int rc;
@ -138,7 +138,7 @@ void clean_cfg(mavl_t cfg)
}
int run(struct conn * conn)
int run(struct cw_Conn * conn)
{
@ -224,7 +224,7 @@ cw_dbg_ktv_dump(conn->remote_cfg,DBG_INFO,"KTV DUMP ----------------","Remote:",
/*
static int echo_interval_timer;
struct cwrmsg * get_response(struct conn * conn, int type,int seqnum)
struct cwrmsg * get_response(struct cw_Conn * conn, int type,int seqnum)
{
struct cwrmsg * cwrmsg;
int i;
@ -246,7 +246,7 @@ struct cwrmsg * get_response(struct conn * conn, int type,int seqnum)
/*
struct cwrmsg * send_request(struct conn * conn,struct cwmsg *cwmsg)
struct cwrmsg * send_request(struct cw_Conn * conn,struct cwmsg *cwmsg)
{
int i;
for (i=0; i<conf_max_retransmit; i++){
@ -272,10 +272,10 @@ struct cwrmsg * send_request(struct conn * conn,struct cwmsg *cwmsg)
*/
/*//extern struct conn * get_conn();*/
/*//extern struct cw_Conn * get_conn();*/
/*
int run(struct conn * conn)
int run(struct cw_Conn * conn)
{
conn = get_conn();

View File

@ -9,7 +9,7 @@ extern int sulking_state();
extern int join();
extern int discovery();
extern int image_update();
extern int setup_conf(struct conn * conn);
extern int setup_conf(struct cw_Conn * conn);
extern int configure();
extern int run();
extern int changestate();
@ -22,13 +22,13 @@ struct cw_DiscoveryResult{
mlist_t results;
};
int cw_run_discovery(struct conn *conn, const char *acaddr, const char *bindaddr,
int cw_run_discovery(struct cw_Conn *conn, const char *acaddr, const char *bindaddr,
struct cw_DiscoveryResult * dis);
int cw_discovery_init_results(struct cw_DiscoveryResult *dis);
void cw_discovery_free_results(struct cw_DiscoveryResult * dis);
int join(struct conn * conn, struct cw_DiscoveryResult * dis);
int join(struct cw_Conn * conn, struct cw_DiscoveryResult * dis);
struct conn * get_conn();
struct cw_Conn * get_conn();
#endif

View File

@ -4,7 +4,7 @@
#include <stdint.h>
#include "cw/bstr.h"
extern struct conn * get_conn();
extern struct cw_Conn * get_conn();
extern bstr_t get_base_rmac();
uint8_t get_ecn_support();

View File

@ -86,7 +86,7 @@ int main (int argc, char **argv)
struct bootcfg bootcfg;
struct cw_Mod * mod;
struct cw_MsgSet * msgset;
struct conn * conn;
struct cw_Conn * conn;
FILE * file;
mavl_t global_cfg, types_tree;
const cw_Type_t ** ti;