diff --git a/src/ac/conf.c b/src/ac/conf.c index a7df25b6..95b39ac5 100644 --- a/src/ac/conf.c +++ b/src/ac/conf.c @@ -31,64 +31,66 @@ #include "capwap/cw_util.h" #include "capwap/action.h" +#include "ac.h" + uint8_t conf_macaddress[12]; -uint8_t conf_macaddress_len=0; +uint8_t conf_macaddress_len = 0; -long conf_strict_capwap=1; -long conf_strict_headers=0; -char * conf_capwap_mode_str=NULL; -int conf_capwap_mode=CW_MODE_CAPWAP; +long conf_strict_capwap = 1; +long conf_strict_headers = 0; +char *conf_capwap_mode_str = NULL; +int conf_capwap_mode = CW_MODE_CAPWAP; -const char * conf_acname = NULL; +const char *conf_acname = NULL; int conf_acname_len = 0; -char * conf_acid = NULL; +char *conf_acid = NULL; -char * conf_primary_if = NULL; +char *conf_primary_if = NULL; long conf_max_wtps = CONF_DEFAULT_MAXWTPS; -char * conf_logfilename=CONF_DEFAULT_LOGFILENAME; -struct sockaddr_storage * conf_salist=NULL; +char *conf_logfilename = CONF_DEFAULT_LOGFILENAME; +struct sockaddr_storage *conf_salist = NULL; -char ** conf_listen_addrs; -int conf_listen_addrs_len=0; +char **conf_listen_addrs; +int conf_listen_addrs_len = 0; -char ** conf_mcast_groups=0; -int conf_mcast_groups_len=0; +char **conf_mcast_groups = 0; +int conf_mcast_groups_len = 0; -char ** conf_bcast_addrs=0; +char **conf_bcast_addrs = 0; int conf_bcast_addrs_len; -struct sockaddr_storage * conf_bsalist=NULL; +struct sockaddr_storage *conf_bsalist = NULL; -int conf_salist_len=0; -int conf_bsalist_len=0; +int conf_salist_len = 0; +int conf_bsalist_len = 0; -struct sockaddr * conf_ac_ips; +struct sockaddr *conf_ac_ips; int conf_ac_ips_len; -char * conf_sslcertfilename=NULL; -char * conf_sslkeyfilename=NULL; -char * conf_sslkeypass=NULL; -char * conf_sslcipher=NULL; -char * conf_dtls_psk=NULL; +char *conf_sslcertfilename = NULL; +char *conf_sslkeyfilename = NULL; +char *conf_sslkeypass = NULL; +char *conf_sslcipher = NULL; +char *conf_dtls_psk = NULL; //char * conf_ac_hardware_version=NULL; //char * conf_ac_software_version=NULL; -int conf_security=0; -long conf_vendor_id=CONF_DEFAULT_VENDOR_ID; +int conf_security = 0; +long conf_vendor_id = CONF_DEFAULT_VENDOR_ID; -bstr_t conf_hardware_version=NULL; -bstr_t conf_software_version=NULL; +bstr_t conf_hardware_version = NULL; +bstr_t conf_software_version = NULL; -bstr_t conf_cisco_hardware_version=NULL; -bstr_t conf_cisco_software_version=NULL; +bstr_t conf_cisco_hardware_version = NULL; +bstr_t conf_cisco_software_version = NULL; //int conf_hardware_version_len=0; @@ -98,37 +100,37 @@ bstr_t conf_cisco_software_version=NULL; int conf_use_loopback = 0; -long conf_debug_level=-1; +long conf_debug_level = -1; -char * conf_db_file =0; +char *conf_db_file = 0; -int conf_ipv4=1; +int conf_ipv4 = 1; #ifdef WITH_IPV6 -int conf_ipv6=1; +int conf_ipv6 = 1; #endif #ifdef WITH_LWAPP -int conf_lwapp=1; -char * conf_lw_control_port=0; -#endif +int conf_lwapp = 1; +char *conf_lw_control_port = 0; +#endif -char * conf_image_dir=0; +char *conf_image_dir = 0; -char * conf_control_port=0; +char *conf_control_port = 0; -int conf_dtls_verify_peer=1; +int conf_dtls_verify_peer = 1; static int init_acname() { - if (conf_acname == NULL){ - char *s=malloc(strlen(CONF_DEFAULT_ACNAME)+strlen(conf_acid)+1); - sprintf(s,"%s%s",CONF_DEFAULT_ACNAME,conf_acid); - conf_acname=s; + if (conf_acname == NULL) { + char *s = malloc(strlen(CONF_DEFAULT_ACNAME) + strlen(conf_acid) + 1); + sprintf(s, "%s%s", CONF_DEFAULT_ACNAME, conf_acid); + conf_acname = s; } - conf_acname_len=strlen(conf_acname); + conf_acname_len = strlen(conf_acname); return 1; } @@ -140,31 +142,33 @@ static int init_acid() #ifdef WITH_IPV6 - conf_primary_if = sock_get_primary_if(AF_INET6); + conf_primary_if = sock_get_primary_if(AF_INET6); if (!conf_primary_if) conf_primary_if = sock_get_primary_if(AF_INET); -#else +#else conf_primary_if = get_primary_if(AF_INET); #endif - if (!conf_primary_if){ - cw_log(LOG_ERR,"Fatal: Unable to detect primary interface, needed to set ac_id. Pleas use confiPleas u to set ac_id"); + if (!conf_primary_if) { + cw_log(LOG_ERR, + "Fatal: Unable to detect primary interface, needed to set ac_id. Pleas use confiPleas u to set ac_id"); return 0; - } + } - if (!sock_getifhwaddr(conf_primary_if,conf_macaddress,&conf_macaddress_len)){ - cw_log(LOG_ERR,"Fatal: Unable to detect link layer address for %s\n",conf_primary_if); + if (!sock_getifhwaddr(conf_primary_if, conf_macaddress, &conf_macaddress_len)) { + cw_log(LOG_ERR, "Fatal: Unable to detect link layer address for %s\n", + conf_primary_if); return 0; }; int i; - conf_acid = malloc(2*conf_macaddress_len+1); + conf_acid = malloc(2 * conf_macaddress_len + 1); char *s = conf_acid; - for (i=0; iifa_next){ - if (ifa->ifa_addr->sa_family==AF_INET && conf_ipv4) + int ctr = 0; + for (ifa = ifap; ifa != 0; ifa = ifa->ifa_next) { + if (ifa->ifa_addr->sa_family == AF_INET && conf_ipv4) ctr++; #ifdef WITH_IPV6 - if (ifa->ifa_addr->sa_family==AF_INET6 && conf_ipv6) + if (ifa->ifa_addr->sa_family == AF_INET6 && conf_ipv6) ctr++; -#endif +#endif } - conf_listen_addrs = malloc(sizeof(char*)*ctr); - if (!conf_listen_addrs){ - rc=0; + conf_listen_addrs = malloc(sizeof(char *) * ctr); + if (!conf_listen_addrs) { + rc = 0; goto errX; } - memset(conf_listen_addrs,0,sizeof(char*)*ctr); + memset(conf_listen_addrs, 0, sizeof(char *) * ctr); - ctr=0; + ctr = 0; /* get the addresses */ - for (ifa=ifap; ifa!=0; ifa=ifa->ifa_next){ + for (ifa = ifap; ifa != 0; ifa = ifa->ifa_next) { char str[100]; /** ignore loopback interfaces if configured*/ - if(!conf_use_loopback){ - if ((ifa->ifa_flags & IFF_LOOPBACK)){ + if (!conf_use_loopback) { + if ((ifa->ifa_flags & IFF_LOOPBACK)) { continue; } - } - if (ifa->ifa_addr->sa_family==AF_INET && conf_ipv4){ - sock_addrtostr(ifa->ifa_addr,str,100); - *strchr(str,':')=0; - conf_listen_addrs[ctr]=(char*)cw_setstr((uint8_t**)&conf_listen_addrs[ctr],(uint8_t*)str,strlen(str)); + if (ifa->ifa_addr->sa_family == AF_INET && conf_ipv4) { + sock_addrtostr(ifa->ifa_addr, str, 100); + *strchr(str, ':') = 0; + conf_listen_addrs[ctr] = + (char *) cw_setstr((uint8_t **) & conf_listen_addrs[ctr], + (uint8_t *) str, strlen(str)); if (conf_listen_addrs[ctr]) ctr++; } #ifdef WITH_IPV6 - if (ifa->ifa_addr->sa_family==AF_INET6 && conf_ipv6){ - sock_addrtostr(ifa->ifa_addr,str,100); - if (strncmp(str,"fe80:",5)==0){ - strcat(str,"%"); - strcat(str,ifa->ifa_name); + if (ifa->ifa_addr->sa_family == AF_INET6 && conf_ipv6) { + sock_addrtostr(ifa->ifa_addr, str, 100); + if (strncmp(str, "fe80:", 5) == 0) { + strcat(str, "%"); + strcat(str, ifa->ifa_name); } - conf_listen_addrs[ctr]=(char*)cw_setstr((uint8_t**)&conf_listen_addrs[ctr],(uint8_t*)str,strlen(str)); + conf_listen_addrs[ctr] = + (char *) cw_setstr((uint8_t **) & conf_listen_addrs[ctr], + (uint8_t *) str, strlen(str)); if (conf_listen_addrs[ctr]) ctr++; } -#endif +#endif } - conf_listen_addrs_len=ctr; - rc=1; -errX: + conf_listen_addrs_len = ctr; + rc = 1; + errX: freeifaddrs(ifap); return rc; } -static char * conf_default_mcast_groups_ipv4[] = { +static char *conf_default_mcast_groups_ipv4[] = { "224.0.1.140", }; #ifdef WITH_IPV6 -static char * conf_default_mcast_groups_ipv6[] = { +static char *conf_default_mcast_groups_ipv6[] = { /* "ff01:0:0:0:0:0:0:18c", "ff02:0:0:0:0:0:0:18c%em0", "ff03:0:0:0:0:0:0:18c", "ff04:0:0:0:0:0:0:18c", "ff05:0:0:0:0:0:0:18c", "ff06:0:0:0:0:0:0:18c" -*/ +*/ }; #endif @@ -405,11 +418,11 @@ static char * conf_default_mcast_groups_ipv6[] = { -static int add_bcast_addr(void *priv, void * addr) +static int add_bcast_addr(void *priv, void *addr) { - char *s = (char*)addr; - conf_bcast_addrs[conf_bcast_addrs_len]=strdup(s); - if (conf_bcast_addrs[conf_bcast_addrs_len]!=0) + char *s = (char *) addr; + conf_bcast_addrs[conf_bcast_addrs_len] = strdup(s); + if (conf_bcast_addrs[conf_bcast_addrs_len] != 0) conf_bcast_addrs_len++; return 1; } @@ -430,43 +443,43 @@ int init_bcast_addrs() return 0; /* add the default broadast address */ - stravltree_add(t,"255.255.255.255"); + stravltree_add(t, "255.255.255.255"); /* add all other local broadcast addresses */ - struct ifaddrs * ifa0,*ifa; + struct ifaddrs *ifa0, *ifa; int rc = getifaddrs(&ifa0); - if (rc==-1) + if (rc == -1) return 0; - for (ifa=ifa0; ifa!=0; ifa=ifa->ifa_next){ - struct sockaddr * sa; + for (ifa = ifa0; ifa != 0; ifa = ifa->ifa_next) { + struct sockaddr *sa; if (!(ifa->ifa_flags & IFF_BROADCAST)) continue; - - if(!conf_use_loopback){ + + if (!conf_use_loopback) { if ((ifa->ifa_flags & IFF_LOOPBACK)) continue; } sa = ifa->ifa_addr; - if(sa->sa_family != AF_INET) + if (sa->sa_family != AF_INET) continue; char str[100]; - if (ifa->ifa_broadaddr){ - sock_addrtostr(ifa->ifa_broadaddr,str,100); - *strchr(str,':')=0; - stravltree_add(t,str); + if (ifa->ifa_broadaddr) { + sock_addrtostr(ifa->ifa_broadaddr, str, 100); + *strchr(str, ':') = 0; + stravltree_add(t, str); } } - conf_bcast_addrs=malloc(t->count*sizeof(char*)); + conf_bcast_addrs = malloc(t->count * sizeof(char *)); - stravltree_foreach_asc(t,add_bcast_addr,0); + stravltree_foreach_asc(t, add_bcast_addr, 0); stravltree_destroy(t); freeifaddrs(ifa0); @@ -480,68 +493,71 @@ int init_mcast_groups() return 1; int n = 0; - int n4=0,n6=0; - if (conf_ipv4){ - n4=sizeof(conf_default_mcast_groups_ipv4)/sizeof(char*); + int n4 = 0, n6 = 0; + if (conf_ipv4) { + n4 = sizeof(conf_default_mcast_groups_ipv4) / sizeof(char *); } - #ifdef WITH_IPV6 - if (conf_ipv6){ - n6=sizeof(conf_default_mcast_groups_ipv6)/sizeof(char*); + if (conf_ipv6) { + n6 = sizeof(conf_default_mcast_groups_ipv6) / sizeof(char *); } -#endif - n=n4+n6; - if (n==0) +#endif + n = n4 + n6; + if (n == 0) return 1; - conf_mcast_groups=malloc(sizeof(char*)*n); + conf_mcast_groups = malloc(sizeof(char *) * n); if (!conf_mcast_groups) return 0; - memset(conf_mcast_groups,0,n*sizeof(char*)); + memset(conf_mcast_groups, 0, n * sizeof(char *)); - int ctr=0; + int ctr = 0; int i; - for(i=0; i