diff options
| -rw-r--r-- | package/ead/src/ead-client.c | 40 | ||||
| -rw-r--r-- | package/ead/src/ead.h | 2 | ||||
| -rw-r--r-- | package/ead/src/filter.c | 16 | 
3 files changed, 37 insertions, 21 deletions
| diff --git a/package/ead/src/ead-client.c b/package/ead/src/ead-client.c index 14e04c40b..74b0b4361 100644 --- a/package/ead/src/ead-client.c +++ b/package/ead/src/ead-client.c @@ -16,6 +16,7 @@  #include <sys/socket.h>  #include <sys/time.h>  #include <netinet/in.h> +#include <arpa/inet.h>  #include <stdio.h>  #include <stddef.h>  #include <stdint.h> @@ -293,12 +294,13 @@ send_command(const char *command)  static int  usage(const char *prog)  { -	fprintf(stderr, "Usage: %s <node> <username>[:<password>]\n" +	fprintf(stderr, "Usage: %s [-b <addr>] <node> <username>[:<password>] <command>\n"  		"\n" -		"\n<node>:     Node ID (4 digits hex)\n" -		"\n<username>: Username to authenticate with\n" +		"\t-b <addr>:  Set the broadcast address to <addr>\n" +		"\t<node>:     Node ID (4 digits hex)\n" +		"\t<username>: Username to authenticate with\n"  		"\n" -		"\nPassing no arguments shows a list of active nodes on the network\n" +		"\tPassing no arguments shows a list of active nodes on the network\n"  		"\n", prog);  	return -1;  } @@ -309,6 +311,8 @@ int main(int argc, char **argv)  	int val = 1;  	char *st = NULL;  	const char *command = NULL; +	const char *prog = argv[0]; +	int ch;  	msg->magic = htonl(EAD_MAGIC);  	msg->tid = 0; @@ -324,12 +328,22 @@ int main(int argc, char **argv)  	local.sin_addr.s_addr = INADDR_ANY;  	local.sin_port = 0; +	while ((ch = getopt(argc, argv, "b:")) != -1) { +		switch(ch) { +		case 'b': +			inet_aton(optarg, &remote.sin_addr); +			break; +		} +	} +	argv += optind; +	argc -= optind; +  	switch(argc) { -	case 4: -		command = argv[3]; -		/* fall through */  	case 3: -		username = argv[2]; +		command = argv[2]; +		/* fall through */ +	case 2: +		username = argv[1];  		st = strchr(username, ':');  		if (st) {  			*st = 0; @@ -340,15 +354,15 @@ int main(int argc, char **argv)  			memset(st, 0, strlen(st));  		}  		/* fall through */ -	case 2: -		nid = strtoul(argv[1], &st, 16); +	case 1: +		nid = strtoul(argv[0], &st, 16);  		if (st && st[0] != 0) -			return usage(argv[0]); +			return usage(prog);  		/* fall through */ -	case 1: +	case 0:  		break;  	default: -		return usage(argv[0]); +		return usage(prog);  	}  	msg->nid = htons(nid); diff --git a/package/ead/src/ead.h b/package/ead/src/ead.h index 3bd64f9d5..3cc12c8a4 100644 --- a/package/ead/src/ead.h +++ b/package/ead/src/ead.h @@ -14,7 +14,7 @@  #ifndef __EAD_H  #define __EAD_H -#define EAD_DEBUGLEVEL	1 +#define EAD_DEBUGLEVEL	2  #include <stdint.h>  #include <stddef.h> diff --git a/package/ead/src/filter.c b/package/ead/src/filter.c index ffa69f18b..0759dc330 100644 --- a/package/ead/src/filter.c +++ b/package/ead/src/filter.c @@ -1,13 +1,15 @@ -/* precompiled expression: udp and dst host 255.255.255.255 and dst port 56026 */ +/* precompiled expression: udp and dst port 56026 */  static struct bpf_insn pktfilter_insns[] = {  	{ .code = 0x0028, .jt = 0x00, .jf = 0x00, .k = 0x0000000c }, -	{ .code = 0x0015, .jt = 0x0b, .jf = 0x00, .k = 0x000086dd }, -	{ .code = 0x0015, .jt = 0x00, .jf = 0x0a, .k = 0x00000800 }, +	{ .code = 0x0015, .jt = 0x00, .jf = 0x04, .k = 0x000086dd }, +	{ .code = 0x0030, .jt = 0x00, .jf = 0x00, .k = 0x00000014 }, +	{ .code = 0x0015, .jt = 0x00, .jf = 0x0b, .k = 0x00000011 }, +	{ .code = 0x0028, .jt = 0x00, .jf = 0x00, .k = 0x00000038 }, +	{ .code = 0x0015, .jt = 0x08, .jf = 0x09, .k = 0x0000dada }, +	{ .code = 0x0015, .jt = 0x00, .jf = 0x08, .k = 0x00000800 },  	{ .code = 0x0030, .jt = 0x00, .jf = 0x00, .k = 0x00000017 }, -	{ .code = 0x0015, .jt = 0x00, .jf = 0x08, .k = 0x00000011 }, -	{ .code = 0x0020, .jt = 0x00, .jf = 0x00, .k = 0x0000001e }, -	{ .code = 0x0015, .jt = 0x00, .jf = 0x06, .k = 0xffffffff }, +	{ .code = 0x0015, .jt = 0x00, .jf = 0x06, .k = 0x00000011 },  	{ .code = 0x0028, .jt = 0x00, .jf = 0x00, .k = 0x00000014 },  	{ .code = 0x0045, .jt = 0x04, .jf = 0x00, .k = 0x00001fff },  	{ .code = 0x00b1, .jt = 0x00, .jf = 0x00, .k = 0x0000000e }, @@ -18,6 +20,6 @@ static struct bpf_insn pktfilter_insns[] = {  };  static struct bpf_program pktfilter = { -	.bf_len = 14, +	.bf_len = 16,  	.bf_insns = pktfilter_insns,  }; | 
