Added command line parsing, reformatted.
FossilOrigin-Name: 2b4ff900c9ee7fd36afc54d46d3dc64a98dd7a09a3836d7e19763bba9918bb8c
This commit is contained in:
		
							
								
								
									
										103
									
								
								src/ac/ac_main.c
									
									
									
									
									
								
							
							
						
						
									
										103
									
								
								src/ac/ac_main.c
									
									
									
									
									
								
							| @ -16,22 +16,20 @@ | ||||
|  | ||||
| */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <unistd.h> | ||||
| #include <errno.h> | ||||
| #include <stdint.h> | ||||
| #include <netinet/in.h> | ||||
| #include <arpa/inet.h> | ||||
| #include <sys/socket.h> | ||||
| #include <unistd.h> | ||||
| #include <netdb.h> | ||||
| //#include <netinet/in.h> | ||||
|  | ||||
| #include "actube.h" | ||||
| #include "wtplist.h" | ||||
| #include "capwap/dtls.h" | ||||
| #include "capwap/log.h" | ||||
| #include "capwap/dbg.h" | ||||
| #include "conf.h" | ||||
| #include "capwap/sock.h" | ||||
| #include "conf.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 n; | ||||
| 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); | ||||
| */ | ||||
| 	/* parse arguments */ | ||||
| 	parse_args(argc, argv); | ||||
|  | ||||
| 	cw_log_name = "AC-Tube"; | ||||
|  | ||||
| @ -104,14 +106,13 @@ exit(0); | ||||
| 	if (!db_init()) | ||||
| 		goto errX; | ||||
|  | ||||
| 	/* Start the database */ | ||||
| 	if (!db_start()) | ||||
| 		goto errX; | ||||
|  | ||||
| 	db_ping(); | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| 	/* Start a database "pinger thread", which inserts | ||||
| 	   every xx seconds a timestamp into the DB */ | ||||
| 	pthread_t alth; | ||||
| @ -126,8 +127,7 @@ exit(0); | ||||
| 	if (conf_capwap_mode == CW_MODE_CIPWAP) { | ||||
| 		cw_dbg(DBG_INFO, "Loading CIPWAP Actions ..."); | ||||
| 		regn = cw_register_actions_cipwap_ac(&capwap_actions); | ||||
| 	} | ||||
| 	else { | ||||
| 	} else { | ||||
| 		cw_dbg(DBG_INFO, "Loading standard CAPWAP Actions ..."); | ||||
| 		regn = cw_register_actions_capwap_ac(&capwap_actions); | ||||
| 	} | ||||
| @ -189,10 +189,12 @@ int ac_run() | ||||
|  | ||||
| 	int 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 | ||||
| 		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 | ||||
| 	} | ||||
|  | ||||
| @ -203,21 +205,25 @@ int ac_run() | ||||
|  | ||||
| 	/* create multicast sockets */ | ||||
| 	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 | ||||
| 		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 | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	/* broadcast sockety ipv4 only */ | ||||
| 	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 | ||||
| //              printf("Adding %d\n",socklist_len); | ||||
| 		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); | ||||
| #endif | ||||
| 	} | ||||
| @ -263,7 +269,8 @@ int ac_run() | ||||
| 			int len = sock_receive(socklist[i].sockfd, | ||||
| 					       buffer, sizeof(buffer), | ||||
| 					       0, | ||||
| 					(struct sockaddr*)&srcaddr, &sockaddrlen); | ||||
| 					       (struct sockaddr *) &srcaddr, | ||||
| 					       &sockaddrlen); | ||||
|  | ||||
| 			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); | ||||
|  | ||||
| 	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; | ||||
| 	} | ||||
|  | ||||
| @ -373,7 +382,6 @@ void process_lw_ctrl_packet(int index,struct sockaddr * addr, uint8_t * buffer, | ||||
|  | ||||
| 		//wtpman_lw_start(wtpman); | ||||
| 	} | ||||
|  | ||||
| 	//wtpman_lw_addpacket(wtpman,buffer,len); | ||||
| 	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) | ||||
| { | ||||
| 	switch (socklist[index].ac_proto) { | ||||
| @ -405,6 +401,3 @@ void process_ctrl_packet(int index,struct sockaddr * addr, uint8_t * buffer, int | ||||
| 			return; | ||||
| 	} | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user