diff --git a/.gitignore b/.gitignore
index 50b47adf..1d3e5b1a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -47,4 +47,7 @@ ssl/intermediate-ca/
# other stuff
.codelite/
+lib/
+obj/
+bin/
diff --git a/actube.workspace b/actube.workspace
index e0162c79..b8870938 100644
--- a/actube.workspace
+++ b/actube.workspace
@@ -3,9 +3,9 @@
-
+
-
+
diff --git a/src/ACConfig.mak b/src/ACConfig.mak
index a010dc95..b8bd23b5 100644
--- a/src/ACConfig.mak
+++ b/src/ACConfig.mak
@@ -1,8 +1,7 @@
include ../Config.mak
-#Define SSL Library: OPENSSL or GNUTLS
-#SSL_LIBRARY=OPENSSL
-SSL_LIBRARY=GNUTLS
-
+# Define SSL Library: OPENSSL or GNUTLS
+# SSL_LIBRARY=OPENSSL
+SSL_LIBRARY=OPENSSL
diff --git a/src/CapwapConfig.mak b/src/CWConfig.mak
similarity index 100%
rename from src/CapwapConfig.mak
rename to src/CWConfig.mak
diff --git a/src/Config.mak b/src/Config.mak
index 1c0f0f40..2d0e2e69 100644
--- a/src/Config.mak
+++ b/src/Config.mak
@@ -1,25 +1,37 @@
-
#
# OpenSSL definitions
#
-#OPENSSL_VERSION=openssl-1.0.1l # doesn't work
-#OPENSSL_VERSION=openssl-1.0.2 # doesn't work
-OPENSSL_VERSION=openssl-1.0.1i
+# OPENSSL_VERSION=openssl-1.0.1i
USE_CONTRIB_OPENSSL=0
# GnuTLS definitions
-GNUTLS_VERSION=3.3.9
+# GNUTLS_VERSION=3.3.9
+
USE_CONTRIB_GNUTLS=0
# Compiler to use
-CC=clang
-#CC=gcc
-#CC=mips-openwrt-linux-uclibc-gcc
-#LD=mips-openwrt-linux-uclibc-ld
-#AR=mips-openwrt-linux-uclibc-ar
-
-
+# CC=clang
+# CC=mips-openwrt-linux-uclibc-gcc
+# LD=mips-openwrt-linux-uclibc-ld
+# AR=mips-openwrt-linux-uclibc-ar
+# CC=clang
COMPDEFS=-DWITH_CW_LOG
COMPDEFS+=-DWITH_CW_LOG_DEBUG
+
+# LIBCW settings
+
+# WITH_GNUTLS
+# compile in support for GnuTLS
+#
+WITH_GNUTLS=1
+
+# Compile in openssl support
+WITH_OPENSSL=1
+
+#
+#
+LIBDIR=lib
+
+
diff --git a/src/Macros.mak b/src/Macros.mak
index 1b0f1e6b..d58ae344 100644
--- a/src/Macros.mak
+++ b/src/Macros.mak
@@ -9,16 +9,12 @@ endif
ifeq ($(USE_CONTRIB_GNUTLS),1)
GNUTLS_CFLAGS=-I../contrib/gnutls-${GNUTLS_VERSION}/lib/includes
-#GNUTLS_LIBS=-lnettle -lgmp ../contrib/gnutls-${GNUTLS_VERSION}/lib/.libs/libgnutls.a
GNUTLS_LIBS=-lgmp -lgnutls -lnettle
-
GNUTLS_LDFLAGS=-L../contrib/gnutls-${GNUTLS_VERSION}/lib/.libs/
else
GNUTLS_CFLAGS=
GNUTLS_LIBS=-lgnutls -lnettle -lgmp
GNUTLS_LDFLAGS=
-#-lgnutls -lnettle -lgmp
-
endif
diff --git a/src/ac/Makefile b/src/ac/Makefile
index cdbbcdfe..53bfbe2b 100644
--- a/src/ac/Makefile
+++ b/src/ac/Makefile
@@ -1,25 +1,21 @@
-
-include ../ACConfig.mak
include ../Macros.mak
-
-ifndef CC
- CC=gcc
-endif
-#SYSARCH := $(shell uname -m)
-ifndef ARCH
- ARCH = $(shell $(CC) -dumpmachine)
-endif
-
-LDFLAGS+=-g -D_REENTRANT -L/usr/local/lib -L../lib/$(ARCH)
-CFLAGS += -Wall -g -O0 -D_REENTRANT -DIPV6 -I/usr/local/include -I../ -DSYS_ARCH=\"${ARCH}\"
+include ../Config.mak
+include ../ACConfig.mak
+-include ../Config.local.mak
-LIBS+=-lcapwap
-LIBS+=-lcapwap80211
-LIBS+=-lcipwap
-LIBS+=-lcisco
-LIBS+=-lfortinet
-LIBS+=-lzyxel
+LIBARCHDIR=../../lib/$(ARCH)
+
+LDFLAGS+=-g -D_REENTRANT -L/usr/local/lib -L$(LIBARCHDIR)
+CFLAGS += -W -g -O0 -D_REENTRANT -DIPV6 -I/usr/local/include -I../ -DSYS_ARCH=\"${ARCH}\"
+
+
+#LIBS+=-lcapwap
+#LIBS+=-lcapwap80211
+#LIBS+=-lcipwap
+#LIBS+=-lcisco
+#LIBS+=-lfortinet
+#LIBS+=-lzyxel
LIBS+=-lcw
LIBS+=-lrt
LIBS+=-lpthread
@@ -52,7 +48,7 @@ CFLAGS += -DWITH_IPV6
RM = /bin/rm -f
-AC_MODULES = mod_cipwap.o
+#AC_MODULES = mod_cipwap.o
# list of generated object files for AC.
@@ -78,12 +74,13 @@ AC_NAME = actube
all: $(AC_NAME)
%.o:%.c
- @echo " CC "$<
+ @echo " $(CC) "$<
@$(CC) -c $(CFLAGS) $< -o $@
$(AC_NAME): $(AC_OBJS)
- $(CC) $(AC_OBJS) ../mod/modload_ac.o -o $(AC_NAME) $(LDFLAGS) $(LIBS)
+# $(CC) $(AC_OBJS) ../mod/modload_ac.o -o $(AC_NAME) $(LDFLAGS) $(LIBS)
+ $(CC) $(AC_OBJS) -o $(AC_NAME) $(LDFLAGS) $(LIBS)
clean:
diff --git a/src/ac/ac_main.c b/src/ac/ac_main.c
index 61484bb9..e852a35d 100644
--- a/src/ac/ac_main.c
+++ b/src/ac/ac_main.c
@@ -99,10 +99,6 @@ int main(int argc, char *argv[])
- cw_mod_add_dynamic("../../lib/actube/capwap.so" );
-
- exit(0);
-
@@ -128,6 +124,10 @@ int main(int argc, char *argv[])
developers is turned on ;) */
DBGX("Attention! %s", "DBG X is ON!");
+ cw_mod_add_dynamic("../../lib/actube","capwap");
+
+ exit(0);
+
test_sets();
exit(0);
diff --git a/src/ac/conf.c b/src/ac/conf.c
index 38506b49..bf683a1e 100644
--- a/src/ac/conf.c
+++ b/src/ac/conf.c
@@ -574,7 +574,7 @@ static int conf_read_mods(cfg_t *cfg){
for (i=0; i < n; i++){
char *modname = cfg_getnstr(cfg, CFG_ENTRY_MODS, i);
- conf_mods[i] = modload_ac(modname);
+ conf_mods[i] = NULL; //modload_ac(modname);
if (!conf_mods[i]){
cw_log(LOG_ERR,"Can't load mod: %s",modname);
return 0;
diff --git a/src/cw/Makefile b/src/cw/Makefile
index f5bf9feb..25233b89 100644
--- a/src/cw/Makefile
+++ b/src/cw/Makefile
@@ -1,25 +1,16 @@
-include ../CapwapConfig.mak
include ../Macros.mak
-
-ifndef CC
- CC=gcc
-endif
-
-ifndef AR
- AR = ar
-endif
-
-#ifndef ARCH
-# ARCH = $(shell $(CC) -dumpmachine)
-#endif
+include ../CWConfig.mak
+-include ../Config.local.mak
+LIBARCHDIR := ../../lib/$(ARCH)
+OBJDIR := ../../obj/cw/$(ARCH)
-#OPENSSLINC=$(OPENSSLINC)
-#../contrib/openssl-1.0.1i/include
+SNAME := $(LIBARCHDIR)/libcw.a
+DNAME := $(LIBARCHDIR)/libcw.so
+
+LDFLAGS+=-g -D_REENTRANT -L/usr/local/lib
-NAME=libcw.a
-LIBDIR=../lib/$(ARCH)
SOCKOBJS=\
sock_create.o\
@@ -203,6 +194,8 @@ CAPWAP80211OBJS=\
# SSL objects
#
+LIBS=
+
ifeq ($(WITH_OPENSSL),1)
CFLAGS+=$(OPENSSL_CFLAGS)
CFLAGS+=-DWITH_OPENSSL
@@ -211,6 +204,7 @@ DTLSOBJS += dtls_openssl.o \
dtls_openssl_connect.o \
dtls_openssl_get_cipher.o \
dtls_openssl_bio.o
+LIBS+=-lssl
endif
ifeq ($(WITH_GNUTLS),1)
@@ -222,6 +216,7 @@ DTLSOBJS+= dtls_gnutls.o \
dtls_gnutls_bio.o \
dtls_gnutls_get_cipher.o \
dtls_gnutls_get_peers_cert.o
+LIBS+=-lgnutls
endif
DTLSOBJS+=dtls_bio.o
@@ -323,18 +318,15 @@ OBJS=$(CONNOBJS) $(FRAGOBJS) $(SOCKOBJS) $(CAPWAPOBJS) $(WTPINFOOBJS) \
$(MBAGOBJS) \
$(CAPWAP80211OBJS)
-#include $(OBJS:.o=.d)
-
O:=$(OBJS);
-OBJS:=$(patsubst %.o,$(ARCH)/%.o,$(OBJS))
+OBJS:=$(patsubst %.o,$(OBJDIR)/%.o,$(OBJS))
+all: $(SNAME) $(DNAME)
-
-CFLAGS = -Wall -fPIC -g -O0 -D_REENTRANT -DWITH_IPV6 -DWITH_RMAC_SUPPORT -I /usr/local/include -I../
-#CFLAGS = -Wall -Os -D_REENTRANT -DWITH_IPV6 -DWITH_RMAC_SUPPORT -I/usr/local/include
+CFLAGS = -W -fPIC -g -O0 -D_REENTRANT -DWITH_IPV6 -DWITH_RMAC_SUPPORT -I /usr/local/include -I../
CFLAGS += $(GNUTLS_CFLAGS) \
-DWITH_CW_LOG \
@@ -345,22 +337,21 @@ CFLAGS += $(GNUTLS_CFLAGS) \
-Werror
-
-
-#SRCS = $(OBJS:.o=.c)
-#MODOBJS=$(wildcard ./mod/cipwap/$(ARCH)/*.o)
-#MODOBJS+=$(wildcard ./mod/capwap/$(ARCH)/*.o)
-
-$(ARCH)/%.o:%.c
- @mkdir -p $(ARCH)
- @echo " CC "$<
+$(OBJDIR)/%.o:%.c
+ @mkdir -p $(OBJDIR)
+ @echo " $(CC) "$<
@$(CC) -c $(CFLAGS) $< -o $@
-# @$(CC) -MM $(CFLAGS) $< > $*.d
-$(LIBDIR)/$(NAME) : $(OBJS) $(MODOBJS)
- @mkdir -p $(LIBDIR)
- @echo " AR $(LIBDIR)/$(NAME)"
- @$(AR) rcs $(LIBDIR)/$(NAME) $(OBJS) $(MODOBJS)
+$(SNAME) : $(OBJS) $(MODOBJS)
+ @mkdir -p $(LIBARCHDIR)
+ @echo " AR $(SNAME)"
+ @$(AR) rcs $(SNAME) $(OBJS) $(MODOBJS)
+
+$(DNAME) : $(OBJS) $(MODOBJS)
+ @mkdir -p $(LIBARCHDIR)
+ @echo " AR $(DNAME)"
+ @$(CC) $(LDFLAGS) -shared -o $(DNAME) $(OBJS) $(MODOBJS) $(LIBS)
+
SRCS = $(OBJS:.o=.c)
@@ -370,19 +361,11 @@ DEPS := $(OBJS:.o=.d)
.PHONY: deps clean clean_libs libs
-# top-level rule, to compile everything.
-all: $(ARCH)/$(NAME)
-
-
-
-
clean:
- $(RM) $(ARCH)/*
- $(RM) $(LIBDIR)/$(NAME)
-# $(RM) $(OBJS)
-# $(RM) $(DEPS)
-# $(RM) $(ARCH)/$(NAME)
+ $(RM) $(OBJDIR)/*
+ $(RM) $(DNAME)
+ $(RM) $(SNAME)
clean_deps:
diff --git a/src/cw/mbag.c b/src/cw/mbag.c
index 0829e848..e2ff03e1 100644
--- a/src/cw/mbag.c
+++ b/src/cw/mbag.c
@@ -94,14 +94,15 @@ static void mbag_type_mbag_del(void *i)
mavl_destroy(x);
}
-const struct mbag_typedef mbag_type_mbag = {
+/*const struct mbag_typedef mbag_type_mbag = {
+# "mbag",mbag_type_mbag_del
+};
+*/
+
+/*const struct mbag_typedef mbag_type_mbag_dyn = {
"mbag",mbag_type_mbag_del
};
-
-const struct mbag_typedef mbag_type_mbag_dyn = {
- "mbag",mbag_type_mbag_del
-};
-
+*/
static void mbag_del_data(struct mbag_item *i)
{
diff --git a/src/cw/mod.c b/src/cw/mod.c
index d7272259..fd6ce57b 100644
--- a/src/cw/mod.c
+++ b/src/cw/mod.c
@@ -182,16 +182,32 @@ int cw_mod_add(struct cw_Mod * (*modfn)() ){
}
-int cw_mod_add_dynamic(const char * filename){
+int cw_mod_add_dynamic(const char * path, const char * mod_name){
+
+ char * filename = malloc(strlen(path)+strlen(mod_name)+8);
+ if (!filename)
+ return 0;
+ strcpy(filename,path);
+ strcat(filename,"/");
+ strcat(filename,mod_name);
+ strcat(filename,".so");
+
+ int rc=0;
+
void * handle;
handle = dlopen(filename,RTLD_NOW);
if (!handle){
- printf("Error: %s",dlerror());
+ cw_log(LOG_ERROR,"Failed to load module: %s",dlerror());
+ goto errX;
}
- printf("Load DLL %p\n",handle);
+ void * ifu = dlsym(handle,"mod_get_interface");
+ if (!ifu){
+ cw_log(LOG_ERROR,"Failed to load module: %s",dlerror());
+ goto errX;
+ }
- void * ifu = dlsym(handle,"bstr_create");
-
- printf("IFU DLL %p\n",ifu);
+errX:
+ free(filename);
+ return rc;
}
\ No newline at end of file
diff --git a/src/cw/mod.h b/src/cw/mod.h
index 97558c72..e5d8d26c 100644
--- a/src/cw/mod.h
+++ b/src/cw/mod.h
@@ -84,6 +84,6 @@ extern int mod_caching;
#define mod_set_caching(var) (mod_caching=var)
#define mod_get_caching() (mod_caching)
-extern int cw_mod_add_dynamic(const char * filename);
+extern int cw_mod_add_dynamic(const char * path, const char * file);
#endif
diff --git a/src/mod/capwap/mod_capwap_ac.c b/src/mod/capwap/mod_capwap_ac.c
index 84faeac1..37ac3278 100644
--- a/src/mod/capwap/mod_capwap_ac.c
+++ b/src/mod/capwap/mod_capwap_ac.c
@@ -53,3 +53,8 @@ struct cw_Mod *mod_capwap_ac()
{
return &capwap_ac;
};
+
+
+struct cw_Mod * mod_get_interface(){
+ return &capwap_ac;
+}
\ No newline at end of file