diff --git a/src/ac/ac_main.c b/src/ac/ac_main.c index 5a9e4935..e4c69a4c 100644 --- a/src/ac/ac_main.c +++ b/src/ac/ac_main.c @@ -34,6 +34,8 @@ #include "socklist.h" + + int ac_run(); int main (int argc, const char * argv[]) @@ -44,12 +46,10 @@ int main (int argc, const char * argv[]) read_config("ac.conf"); cw_log_debug_level=conf_debug_level; - cw_log(LOG_INFO,"Starting AC-Tube"); + cw_log(LOG_INFO,"Starting AC-Tube, Name=%s, ID=%s",conf_acname,conf_acid); db_init(); - - - + #ifdef WITH_DTLS dtls_init(); diff --git a/src/ac/conf.c b/src/ac/conf.c index e608b694..13cd3be3 100644 --- a/src/ac/conf.c +++ b/src/ac/conf.c @@ -29,9 +29,17 @@ #include "cw_log.h" #include "cw_util.h" +uint8_t conf_macaddress[12]; +uint8_t conf_macaddress_len=0; + + char * conf_acname = NULL; int conf_acname_len = 0; +char * conf_acid = 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; @@ -85,12 +93,51 @@ cfg_bool_t conf_ignore_wtp_source_port = cfg_false; static int init_acname() { if (conf_acname == NULL){ - conf_acname=CONF_DEFAULT_ACNAME; + conf_acname=malloc(strlen(CONF_DEFAULT_ACNAME)+strlen(conf_acid)+1); + sprintf(conf_acname,"%s%s",CONF_DEFAULT_ACNAME,conf_acid); } conf_acname_len=strlen(conf_acname); return 1; } +static int init_acid() +{ + + if (conf_acid != NULL) + return 1; + + +#ifdef WITH_IPV6 + conf_primary_if = sock_get_primary_if(AF_INET6); + if (!conf_primary_if) + conf_primary_if = sock_get_primary_if(AF_INET); +#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"); + 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); + return 0; + }; + + int i; + + + conf_acid = malloc(2*conf_macaddress_len+1); + char *s = conf_acid; + + for (i=0; i