Work on join

FossilOrigin-Name: c917b9235f3d4c90452f961176a838f732e4e8b6569cab820a0232fc316bd84e
This commit is contained in:
7u83@mail.ru 2018-04-01 16:32:13 +00:00
parent 087f40afac
commit d04e106dcd
6 changed files with 29 additions and 286 deletions

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<CodeLite_Workspace Name="actube" Database="">
<Project Name="ac" Path="ac.project" Active="No"/>
<Project Name="wtp" Path="wtp.project" Active="Yes"/>
<Project Name="ac" Path="ac.project" Active="Yes"/>
<Project Name="wtp" Path="wtp.project" Active="No"/>
<Project Name="mod_cipwap" Path="mod_cipwap.project" Active="No"/>
<Project Name="mod_capwap" Path="mod_capwap.project" Active="No"/>
<Project Name="mod_cisco" Path="mod_cisco.project" Active="No"/>

View File

@ -8,10 +8,11 @@ include ../Macros.mak
LIBARCHDIR=../../lib/$(ARCH)
INCL= -I/usr/local/include -I../
LDFLAGS+=-L$(LIBARCHDIR)
#CFLAGS += -W -g -O0 -D_REENTRANT -DIPV6 $(INCL) -I../ -DSYS_ARCH=\"${ARCH}\"
LDFLAGS+=-g -L/usr/local/lib -L$(LIBARCHDIR)
CFLAGS += -W -g -O0 -D_REENTRANT -DIPV6 -I/usr/local/include -I../ -DSYS_ARCH=\"${ARCH}\"
CFLAGS+=-DSYS_ARCH=\"$(ARCH)\"
#LIBS+=-lcapwap
#LIBS+=-lcapwap80211
@ -92,7 +93,11 @@ clean:
clean_deps:
$(AC_DEPS)
deps: $(AC_SRC)
$(LD) -MD -E $(AC_SRCS) $(CFLAGS) >/dev/null
deps:
echo "# DO NOT DELETE THIS LINE -- make depend depends on it." > .depend
# makedepend $(AC_SRC) -f.depend -p$(OBJDIR)/
makedepend *.c -f.depend
-include $(AC_DEPS)

View File

@ -21,7 +21,7 @@
#include <string.h>
#include <stdio.h>
#include <errno.h>
#include <unistd.h> // sleep
#include <unistd.h>
#include "cw/capwap.h"
@ -119,6 +119,7 @@ static void wtpman_run_discovery(void *arg)
}
/*
int xprocess_message(struct conn *conn, uint8_t * rawmsg, int rawlen,
struct sockaddr *from)
{
@ -132,6 +133,7 @@ int xprocess_message(struct conn *conn, uint8_t * rawmsg, int rawlen,
return process_message(conn, rawmsg, rawlen, from);
}
*/
static int wtpman_establish_dtls(void *arg)
@ -291,106 +293,6 @@ static void wtpman_image_data(struct wtpman *wtpman)
void config_to_sql(struct conn *conn)
{
/*
// XXX for the moment we use just the IP adress as ID
char *wtp_id = sock_addr2str(&conn->addr);
// cw_dbg(DBG_X, "WTPID: %s\n", wtp_id);
MAVLITER_DEFINE(it, conn->incomming);
mavliter_foreach(&it) {
mbag_item_t *i = mavliter_get(&it);
const struct cw_itemdef *cwi =
cw_itemdef_get(conn->actions->items, i->id, NULL);
cw_dbg(DBG_X,"ID GOT: %s",i->id);
if (cwi) {
DBGX("SQL ID %s,%s", i->id, cwi->id);
DBGX("SQL Type %s,Typecwd %s", i->type->name, cwi->type->name);
// printf("%s != %s ?\n",i->type->name,cwi->type->name);
char str[256];
if (i->type->to_str) {
i->type->to_str(i, str);
db_put_wtp_prop(wtp_id, cwi->id, cwi->sub_id, str);
} else {
cw_log(LOG_ERR, "Can't converto to str for %s", cwi->id,
cwi->sub_id);
}
} else {
// DBGX("ID %d",i->id);
}
}
*/
}
void xradio_to_sql(struct conn *conn, char *wtp_id, int rid, int radio)
{
/*
MAVLITER_DEFINE(it, radio);
mavliter_foreach(&it) {
mbag_item_t *i = mavliter_get(&it);
const struct cw_itemdef *cwi =
cw_itemdef_get(conn->actions->radioitems, i->id, NULL);
if (cwi) {
char str[4096];
if (i->type->to_str) {
i->type->to_str(i, str);
// printf("I would put RID: %d, %s=>%s\n",rid,cwi->id,str);
char srid[6];
sprintf(srid,"%d",rid);
db_put_radio_prop(wtp_id,srid,cwi->id,cwi->sub_id,str);
// db_put_wtp_prop(wtp_id, cwi->id, cwi->sub_id, str);
} else {
cw_log(LOG_ERR, "Can't converto to str for %s", cwi->id,
cwi->sub_id);
}
} else {
// DBGX("ID %d",i->id);
}
}
// int rid = ((struct mbag_item*)mavliter_get(&it))->iid;
*/
}
/*
void radios_to_sql(struct conn *conn)
{
char sock_buf[SOCK_ADDR_BUFSIZE];
char *wtp_id = sock_addr2str(&conn->addr,sock_buf);
MAVLITER_DEFINE(it, conn->radios);
mavliter_foreach(&it) {
struct mbag_item * i = mavliter_get(&it);
int rid = i->u1.iid;
radio_to_sql(conn,wtp_id,rid,i->u2.data);
}
}
*/
@ -418,15 +320,6 @@ void wtpman_run_data(void *wtpman_arg)
}
static int msg_end_handler(struct conn *conn, struct cw_action_in *a, uint8_t * data,
int len, struct sockaddr *from)
{
/* if (a->msg_id ==CAPWAP_MSG_CHANGE_STATE_EVENT_REQUEST) {
props_to_sql(conn,conn->incomming,0);
radios_to_sql(conn);
}
*/
}
static void wtpman_run(void *arg)
@ -518,7 +411,7 @@ static void wtpman_run(void *arg)
// radios_to_sql(conn);
*/
conn->msg_end=msg_end_handler;
/*conn->msg_end=msg_end_handler;*/
/* The main run loop */
reset_echointerval_timer(wtpman);
@ -733,14 +626,19 @@ void wtpman_addpacket(struct wtpman *wtpman, uint8_t * packet, int len)
}
int nodtls = 0;
void wtpman_start(struct wtpman *wtpman, int dtlsmode)
{
pthread_create(&wtpman->thread, NULL, (void *) wtpman_run,
(void *) wtpman);
return;
/*
if (dtlsmode) {
cw_dbg(DBG_INFO, "Starting wtpman in DTLS mode");
pthread_create(&wtpman->thread, NULL, (void *) wtpman_run_dtls,
@ -759,80 +657,11 @@ void wtpman_start(struct wtpman *wtpman, int dtlsmode)
pthread_create(&wtpman->thread, NULL, (void *) wtpman_run_discovery,
(void *) wtpman);
}
}
*/
}
void wtpman_lw_addpacket(struct wtpman *wtpman, uint8_t * packet, int len)
{
/*
// uint8_t * m = packet+12;
// int l = LWTH_GET_LENGTH(packet+6);
*/
uint8_t *msg = packet + 12;
int msgtype = LWMSG_GET_TYPE(msg);
int msglen = LWMSG_GET_LEN(msg);
printf("Type is %d, Len is %d\n", msgtype, msglen);
/*
// uint8_t *msgdata = LWMSG_GET_DATA(msg);
*/
/*
int c=0;
while (c < msglen){
int eltype = LWMSGELEM_GET_TYPE(data);
int ellen = LWMSGELEM_GET_LEN(data);
printf ("ELEM TYPE: %d, LEN: %d\n",eltype,ellen);
c+=ellen+3;
data=data+ellen+3;
}
*/
/*//uint8_t *data;*/
/*
lw_foreach_msgelem(data,msgdata,msglen){
int eltype = LWMSGELEM_GET_TYPE(data);
int ellen = LWMSGELEM_GET_LEN(data);
uint8_t * eldata = LWMSGELEM_GET_DATA(data);
wtpinfo_lwreadelem_wtp_descriptor(&wtpman->wtpinfo,eltype,eldata,ellen);
printf ("ELEM TYPE: %d, LEN: %d\n",eltype,ellen);
}
*/
/*
// char wi[4096];
// wtpinfo_print(wi, &wtpman->wtpinfo);
// printf("WTPINFO: \n%s\n", wi);
// char buffer[2048];
// struct lwmsg lwmsg;
// lwmsg_init(&lwmsg, buffer,conf_macaddress,LWMSG_DISCOVERY_RESPONSE,conn_get_next_seqnum(wtpman->conn));
// conn_send_packet(wtpman->conn,buffer,60);
*/
}
/*
void wtpman_lw_start(struct wtpman *wtpman)
{
}
*/

View File

@ -14,12 +14,6 @@
struct wtpman{
pthread_t thread;
/* packet queue */
/* uint8_t * q[WTPMAN_QSIZE];
int qrpos;
int qwpos;
sem_t q_sem;
*/
struct conn * conn;
@ -29,9 +23,6 @@ struct wtpman{
uint8_t * session_id;
uint8_t wtp_mactype;
/* //struct wtpinfo wtpinfo;*/
int socklistindex;
int connected;
@ -51,9 +42,9 @@ struct wtp{
//extern void wtpman_run(void *arg);
*/
extern struct wtpman * wtpman_create();
struct wtpman * wtpman_create();
extern struct wtpman * wtpman_create(int socklistindex,struct sockaddr * srcaddr);
struct wtpman * wtpman_create(int socklistindex,struct sockaddr * srcaddr);
extern void wtpman_addpacket(struct wtpman * wtpman,uint8_t *packet,int len);
extern void wtpman_destroy(struct wtpman * wtpman);

View File

@ -38,7 +38,6 @@ endif
CWSRC=\
cw_addelem_capwap_local_ip_addr.c\
cw_check_missing_mand.c\
cw_clock_lap.c\
cw_dbg_elem.c\

View File

@ -1,81 +0,0 @@
/*
This file is part of libcapwap.
libcapwap is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
libcapwap is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Foobar. If not, see <http://www.gnu.org/licenses/>.
*/
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include "capwap.h"
#include "cwmsg.h"
#include "conn.h"
/*
uint8_t * cw_addelem(uint8_t * buf,int type, uint8_t *elem, int len)
{
uint32_t val = type<<16|len;
*((uint32_t*)(buf))=htonl(val);
buf+=4;
memcpy(buf,elem,len);
return buf+len;
}
void cw_addelem_capwap_local_ip_addr(struct cwmsg *msg, int sock, int cw_mode)
{
struct sockaddr_storage a;
socklen_t alen = sizeof(struct sockaddr_storage);
getsockname (sock,(struct sockaddr *)&a,&alen);
int cw_mode = cwmsg->capwap_mode;
switch (((struct sockaddr*)&a)->sa_family){
case AF_INET:
{
struct sockaddr_in * sain = (struct sockaddr_in*)&a;
int id;
if (cw_mode == CWMODE_CISCO)
id = CWMSGELEM_WTP_IPV4_IP_ADDR;
else
id = CWMSGELEM_CAPWAP_LOCAL_IPV4_ADDRESS;
cwmsg_addelem(msg,id,(uint8_t*)&sain->sin_addr,4);
break;
}
case AF_INET6:
{
int id;
if (cw_mode == CWMODE_CISCO)
id = CWMSGELEM_WTP_IPV6_IP_ADDR;
else
id = CWMSGELEM_CAPWAP_LOCAL_IPV6_ADDRESS;
struct sockaddr_in6 * sain = (struct sockaddr_in6*)&a;
return cwmsg_addelem(msg,id,(uint8_t*)&sain->sin6_addr,16);
}
break;
}
}
*/