allow the ead client to override the broadcast address
SVN-Revision: 13849
This commit is contained in:
		@@ -16,6 +16,7 @@
 | 
				
			|||||||
#include <sys/socket.h>
 | 
					#include <sys/socket.h>
 | 
				
			||||||
#include <sys/time.h>
 | 
					#include <sys/time.h>
 | 
				
			||||||
#include <netinet/in.h>
 | 
					#include <netinet/in.h>
 | 
				
			||||||
 | 
					#include <arpa/inet.h>
 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
#include <stddef.h>
 | 
					#include <stddef.h>
 | 
				
			||||||
#include <stdint.h>
 | 
					#include <stdint.h>
 | 
				
			||||||
@@ -293,12 +294,13 @@ send_command(const char *command)
 | 
				
			|||||||
static int
 | 
					static int
 | 
				
			||||||
usage(const char *prog)
 | 
					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"
 | 
				
			||||||
		"\n<node>:     Node ID (4 digits hex)\n"
 | 
							"\t-b <addr>:  Set the broadcast address to <addr>\n"
 | 
				
			||||||
		"\n<username>: Username to authenticate with\n"
 | 
							"\t<node>:     Node ID (4 digits hex)\n"
 | 
				
			||||||
 | 
							"\t<username>: Username to authenticate with\n"
 | 
				
			||||||
		"\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);
 | 
							"\n", prog);
 | 
				
			||||||
	return -1;
 | 
						return -1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -309,6 +311,8 @@ int main(int argc, char **argv)
 | 
				
			|||||||
	int val = 1;
 | 
						int val = 1;
 | 
				
			||||||
	char *st = NULL;
 | 
						char *st = NULL;
 | 
				
			||||||
	const char *command = NULL;
 | 
						const char *command = NULL;
 | 
				
			||||||
 | 
						const char *prog = argv[0];
 | 
				
			||||||
 | 
						int ch;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	msg->magic = htonl(EAD_MAGIC);
 | 
						msg->magic = htonl(EAD_MAGIC);
 | 
				
			||||||
	msg->tid = 0;
 | 
						msg->tid = 0;
 | 
				
			||||||
@@ -324,12 +328,22 @@ int main(int argc, char **argv)
 | 
				
			|||||||
	local.sin_addr.s_addr = INADDR_ANY;
 | 
						local.sin_addr.s_addr = INADDR_ANY;
 | 
				
			||||||
	local.sin_port = 0;
 | 
						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) {
 | 
						switch(argc) {
 | 
				
			||||||
	case 4:
 | 
					 | 
				
			||||||
		command = argv[3];
 | 
					 | 
				
			||||||
		/* fall through */
 | 
					 | 
				
			||||||
	case 3:
 | 
						case 3:
 | 
				
			||||||
		username = argv[2];
 | 
							command = argv[2];
 | 
				
			||||||
 | 
							/* fall through */
 | 
				
			||||||
 | 
						case 2:
 | 
				
			||||||
 | 
							username = argv[1];
 | 
				
			||||||
		st = strchr(username, ':');
 | 
							st = strchr(username, ':');
 | 
				
			||||||
		if (st) {
 | 
							if (st) {
 | 
				
			||||||
			*st = 0;
 | 
								*st = 0;
 | 
				
			||||||
@@ -340,15 +354,15 @@ int main(int argc, char **argv)
 | 
				
			|||||||
			memset(st, 0, strlen(st));
 | 
								memset(st, 0, strlen(st));
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		/* fall through */
 | 
							/* fall through */
 | 
				
			||||||
	case 2:
 | 
					 | 
				
			||||||
		nid = strtoul(argv[1], &st, 16);
 | 
					 | 
				
			||||||
		if (st && st[0] != 0)
 | 
					 | 
				
			||||||
			return usage(argv[0]);
 | 
					 | 
				
			||||||
		/* fall through */
 | 
					 | 
				
			||||||
	case 1:
 | 
						case 1:
 | 
				
			||||||
 | 
							nid = strtoul(argv[0], &st, 16);
 | 
				
			||||||
 | 
							if (st && st[0] != 0)
 | 
				
			||||||
 | 
								return usage(prog);
 | 
				
			||||||
 | 
							/* fall through */
 | 
				
			||||||
 | 
						case 0:
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		return usage(argv[0]);
 | 
							return usage(prog);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	msg->nid = htons(nid);
 | 
						msg->nid = htons(nid);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,7 @@
 | 
				
			|||||||
#ifndef __EAD_H
 | 
					#ifndef __EAD_H
 | 
				
			||||||
#define __EAD_H
 | 
					#define __EAD_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define EAD_DEBUGLEVEL	1
 | 
					#define EAD_DEBUGLEVEL	2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <stdint.h>
 | 
					#include <stdint.h>
 | 
				
			||||||
#include <stddef.h>
 | 
					#include <stddef.h>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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[] = {
 | 
					static struct bpf_insn pktfilter_insns[] = {
 | 
				
			||||||
	{ .code = 0x0028, .jt = 0x00, .jf = 0x00, .k = 0x0000000c },
 | 
						{ .code = 0x0028, .jt = 0x00, .jf = 0x00, .k = 0x0000000c },
 | 
				
			||||||
	{ .code = 0x0015, .jt = 0x0b, .jf = 0x00, .k = 0x000086dd },
 | 
						{ .code = 0x0015, .jt = 0x00, .jf = 0x04, .k = 0x000086dd },
 | 
				
			||||||
	{ .code = 0x0015, .jt = 0x00, .jf = 0x0a, .k = 0x00000800 },
 | 
						{ .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 = 0x0030, .jt = 0x00, .jf = 0x00, .k = 0x00000017 },
 | 
				
			||||||
	{ .code = 0x0015, .jt = 0x00, .jf = 0x08, .k = 0x00000011 },
 | 
						{ .code = 0x0015, .jt = 0x00, .jf = 0x06, .k = 0x00000011 },
 | 
				
			||||||
	{ .code = 0x0020, .jt = 0x00, .jf = 0x00, .k = 0x0000001e },
 | 
					 | 
				
			||||||
	{ .code = 0x0015, .jt = 0x00, .jf = 0x06, .k = 0xffffffff },
 | 
					 | 
				
			||||||
	{ .code = 0x0028, .jt = 0x00, .jf = 0x00, .k = 0x00000014 },
 | 
						{ .code = 0x0028, .jt = 0x00, .jf = 0x00, .k = 0x00000014 },
 | 
				
			||||||
	{ .code = 0x0045, .jt = 0x04, .jf = 0x00, .k = 0x00001fff },
 | 
						{ .code = 0x0045, .jt = 0x04, .jf = 0x00, .k = 0x00001fff },
 | 
				
			||||||
	{ .code = 0x00b1, .jt = 0x00, .jf = 0x00, .k = 0x0000000e },
 | 
						{ .code = 0x00b1, .jt = 0x00, .jf = 0x00, .k = 0x0000000e },
 | 
				
			||||||
@@ -18,6 +20,6 @@ static struct bpf_insn pktfilter_insns[] = {
 | 
				
			|||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static struct bpf_program pktfilter = {
 | 
					static struct bpf_program pktfilter = {
 | 
				
			||||||
	.bf_len = 14,
 | 
						.bf_len = 16,
 | 
				
			||||||
	.bf_insns = pktfilter_insns,
 | 
						.bf_insns = pktfilter_insns,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user