1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-12-18 03:42:28 +02:00

allow the ead client to override the broadcast address

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13849 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
nbd 2009-01-04 01:24:00 +00:00
parent a4087cd37a
commit db3cdd7448
3 changed files with 38 additions and 22 deletions

View File

@ -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);

View File

@ -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>

View File

@ -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,
}; };