Added command line parsing, reformatted.
FossilOrigin-Name: 2b4ff900c9ee7fd36afc54d46d3dc64a98dd7a09a3836d7e19763bba9918bb8c
This commit is contained in:
parent
5c36230620
commit
ea179aaf38
103
src/ac/ac_main.c
103
src/ac/ac_main.c
@ -16,22 +16,20 @@
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <netinet/in.h>
|
//#include <netinet/in.h>
|
||||||
#include <arpa/inet.h>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <netdb.h>
|
|
||||||
|
|
||||||
#include "actube.h"
|
#include "actube.h"
|
||||||
#include "wtplist.h"
|
#include "wtplist.h"
|
||||||
#include "capwap/dtls.h"
|
#include "capwap/dtls.h"
|
||||||
#include "capwap/log.h"
|
#include "capwap/log.h"
|
||||||
#include "capwap/dbg.h"
|
#include "capwap/dbg.h"
|
||||||
#include "conf.h"
|
|
||||||
#include "capwap/sock.h"
|
#include "capwap/sock.h"
|
||||||
|
#include "conf.h"
|
||||||
|
|
||||||
#include "socklist.h"
|
#include "socklist.h"
|
||||||
|
|
||||||
@ -59,30 +57,34 @@ static void * alive_thread(void *data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int main (int argc, const char * argv[])
|
#include <getopt.h>
|
||||||
|
static int parse_args(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int getopt_ret, option_index;
|
||||||
|
|
||||||
|
static struct option long_options[] = {
|
||||||
|
{"version", optional_argument, 0, 'v'},
|
||||||
|
{0, 0, 0, 0}
|
||||||
|
};
|
||||||
|
int o;
|
||||||
|
while ((o = getopt_long(argc, argv, "v", long_options, &option_index)) != -1) {
|
||||||
|
switch (o) {
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
case 'v':
|
||||||
|
printf("AC-Tube 0.01, %s\n", SYS_ARCH);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
/*
|
/* parse arguments */
|
||||||
int n;
|
parse_args(argc, argv);
|
||||||
cw_itemdefheap_t h=cw_itemdefheap_create();
|
|
||||||
n=cw_itemdefheap_register(h,capwap_itemdefs);
|
|
||||||
printf("Registered: %d\n",n);
|
|
||||||
|
|
||||||
const cw_itemdef_t * id = cw_itemdef_get(h,"wtp_name",NULL);
|
|
||||||
|
|
||||||
if (id) {
|
|
||||||
printf("Found %s is of type %s\n",id->id,id->type->name);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
printf("Not found, why?\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
mavl_destroy(h);
|
|
||||||
|
|
||||||
|
|
||||||
exit(0);
|
|
||||||
*/
|
|
||||||
|
|
||||||
cw_log_name = "AC-Tube";
|
cw_log_name = "AC-Tube";
|
||||||
|
|
||||||
@ -104,14 +106,13 @@ exit(0);
|
|||||||
if (!db_init())
|
if (!db_init())
|
||||||
goto errX;
|
goto errX;
|
||||||
|
|
||||||
|
/* Start the database */
|
||||||
if (!db_start())
|
if (!db_start())
|
||||||
goto errX;
|
goto errX;
|
||||||
|
|
||||||
db_ping();
|
db_ping();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Start a database "pinger thread", which inserts
|
/* Start a database "pinger thread", which inserts
|
||||||
every xx seconds a timestamp into the DB */
|
every xx seconds a timestamp into the DB */
|
||||||
pthread_t alth;
|
pthread_t alth;
|
||||||
@ -126,8 +127,7 @@ exit(0);
|
|||||||
if (conf_capwap_mode == CW_MODE_CIPWAP) {
|
if (conf_capwap_mode == CW_MODE_CIPWAP) {
|
||||||
cw_dbg(DBG_INFO, "Loading CIPWAP Actions ...");
|
cw_dbg(DBG_INFO, "Loading CIPWAP Actions ...");
|
||||||
regn = cw_register_actions_cipwap_ac(&capwap_actions);
|
regn = cw_register_actions_cipwap_ac(&capwap_actions);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
cw_dbg(DBG_INFO, "Loading standard CAPWAP Actions ...");
|
cw_dbg(DBG_INFO, "Loading standard CAPWAP Actions ...");
|
||||||
regn = cw_register_actions_capwap_ac(&capwap_actions);
|
regn = cw_register_actions_capwap_ac(&capwap_actions);
|
||||||
}
|
}
|
||||||
@ -189,10 +189,12 @@ int ac_run()
|
|||||||
|
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < conf_listen_addrs_len; i++) {
|
for (i = 0; i < conf_listen_addrs_len; i++) {
|
||||||
socklist_add_unicast(conf_listen_addrs[i],conf_control_port,AC_PROTO_CAPWAP);
|
socklist_add_unicast(conf_listen_addrs[i], conf_control_port,
|
||||||
|
AC_PROTO_CAPWAP);
|
||||||
#ifdef WITH_LWAPP
|
#ifdef WITH_LWAPP
|
||||||
if (conf_lwapp)
|
if (conf_lwapp)
|
||||||
socklist_add_unicast(conf_listen_addrs[i],conf_lw_control_port,AC_PROTO_LWAPP);
|
socklist_add_unicast(conf_listen_addrs[i], conf_lw_control_port,
|
||||||
|
AC_PROTO_LWAPP);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,21 +205,25 @@ int ac_run()
|
|||||||
|
|
||||||
/* create multicast sockets */
|
/* create multicast sockets */
|
||||||
for (i = 0; i < conf_mcast_groups_len; i++) {
|
for (i = 0; i < conf_mcast_groups_len; i++) {
|
||||||
socklist_add_multicast(conf_mcast_groups[i],conf_control_port,AC_PROTO_CAPWAP);
|
socklist_add_multicast(conf_mcast_groups[i], conf_control_port,
|
||||||
|
AC_PROTO_CAPWAP);
|
||||||
#ifdef WITH_LWAPP
|
#ifdef WITH_LWAPP
|
||||||
if (conf_lwapp)
|
if (conf_lwapp)
|
||||||
socklist_add_multicast(conf_mcast_groups[i],conf_lw_control_port,AC_PROTO_LWAPP);
|
socklist_add_multicast(conf_mcast_groups[i], conf_lw_control_port,
|
||||||
|
AC_PROTO_LWAPP);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* broadcast sockety ipv4 only */
|
/* broadcast sockety ipv4 only */
|
||||||
for (i = 0; i < conf_bcast_addrs_len; i++) {
|
for (i = 0; i < conf_bcast_addrs_len; i++) {
|
||||||
socklist_add_broadcast(conf_bcast_addrs[i],conf_control_port,AC_PROTO_CAPWAP);
|
socklist_add_broadcast(conf_bcast_addrs[i], conf_control_port,
|
||||||
|
AC_PROTO_CAPWAP);
|
||||||
#ifdef WITH_LWAPP
|
#ifdef WITH_LWAPP
|
||||||
// printf("Adding %d\n",socklist_len);
|
// printf("Adding %d\n",socklist_len);
|
||||||
if (conf_lwapp)
|
if (conf_lwapp)
|
||||||
socklist_add_broadcast(conf_bcast_addrs[i],conf_lw_control_port,AC_PROTO_LWAPP);
|
socklist_add_broadcast(conf_bcast_addrs[i], conf_lw_control_port,
|
||||||
|
AC_PROTO_LWAPP);
|
||||||
// printf ("SI %d, PROTO: %d\n",socklist_len-1,socklist[socklist_len-1].ac_proto);
|
// printf ("SI %d, PROTO: %d\n",socklist_len-1,socklist[socklist_len-1].ac_proto);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -263,7 +269,8 @@ int ac_run()
|
|||||||
int len = sock_receive(socklist[i].sockfd,
|
int len = sock_receive(socklist[i].sockfd,
|
||||||
buffer, sizeof(buffer),
|
buffer, sizeof(buffer),
|
||||||
0,
|
0,
|
||||||
(struct sockaddr*)&srcaddr, &sockaddrlen);
|
(struct sockaddr *) &srcaddr,
|
||||||
|
&sockaddrlen);
|
||||||
|
|
||||||
process_ctrl_packet(i, (struct sockaddr *) &srcaddr, buffer, len);
|
process_ctrl_packet(i, (struct sockaddr *) &srcaddr, buffer, len);
|
||||||
}
|
}
|
||||||
@ -287,7 +294,9 @@ void process_cw_ctrl_packet(int index,struct sockaddr * addr, uint8_t * buffer,
|
|||||||
int preamble = cw_get_hdr_preamble(buffer);
|
int preamble = cw_get_hdr_preamble(buffer);
|
||||||
|
|
||||||
if (preamble != CAPWAP_PACKET_PREAMBLE && preamble != CAPWAP_DTLS_PACKET_PREAMBLE) {
|
if (preamble != CAPWAP_PACKET_PREAMBLE && preamble != CAPWAP_DTLS_PACKET_PREAMBLE) {
|
||||||
cw_dbg(DBG_PKT_ERR,"Discarding packet from %s, wrong preamble, preamble = 0x%01X",sock_addr2str(addr),preamble);
|
cw_dbg(DBG_PKT_ERR,
|
||||||
|
"Discarding packet from %s, wrong preamble, preamble = 0x%01X",
|
||||||
|
sock_addr2str(addr), preamble);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -373,7 +382,6 @@ void process_lw_ctrl_packet(int index,struct sockaddr * addr, uint8_t * buffer,
|
|||||||
|
|
||||||
//wtpman_lw_start(wtpman);
|
//wtpman_lw_start(wtpman);
|
||||||
}
|
}
|
||||||
|
|
||||||
//wtpman_lw_addpacket(wtpman,buffer,len);
|
//wtpman_lw_addpacket(wtpman,buffer,len);
|
||||||
wtplist_unlock();
|
wtplist_unlock();
|
||||||
}
|
}
|
||||||
@ -382,18 +390,6 @@ void process_lw_ctrl_packet(int index,struct sockaddr * addr, uint8_t * buffer,
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void process_ctrl_packet(int index, struct sockaddr *addr, uint8_t * buffer, int len)
|
void process_ctrl_packet(int index, struct sockaddr *addr, uint8_t * buffer, int len)
|
||||||
{
|
{
|
||||||
switch (socklist[index].ac_proto) {
|
switch (socklist[index].ac_proto) {
|
||||||
@ -405,6 +401,3 @@ void process_ctrl_packet(int index,struct sockaddr * addr, uint8_t * buffer, int
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user