...
|
...
|
@@ -14,28 +14,30 @@ static void usage()
|
14
|
14
|
version_print();
|
15
|
15
|
printf("(Multicasts All-Kinds of Updating Operation for Servers on Administered Network)\n\n");
|
16
|
16
|
printf("usage: makuosan [OPTION]\n");
|
17
|
|
- printf(" -d num # loglevel(0-9)\n");
|
18
|
|
- printf(" -u uid # user\n");
|
19
|
|
- printf(" -g gid # group\n");
|
20
|
|
- printf(" -G gid,..# groups\n");
|
21
|
|
- printf(" -b dir # base dir\n");
|
22
|
|
- printf(" -p port # port number (default: 5000)\n");
|
23
|
|
- printf(" -m addr # multicast address (default: 224.0.0.108)\n");
|
24
|
|
- printf(" -l addr # listen address (default: 127.0.0.1)\n");
|
25
|
|
- printf(" -U path # unix domain socket\n");
|
26
|
|
- printf(" -k file # key file (encrypt password)\n");
|
27
|
|
- printf(" -K file # key file (console password)\n");
|
28
|
|
- printf(" -f num # parallel send count(default: 5) \n");
|
29
|
|
- printf(" -R num # recv buffer size [bytes]\n");
|
30
|
|
- printf(" -S num # send buffer size [bytes]\n");
|
31
|
|
- printf(" -T num # traffic rate [Mbps]\n");
|
32
|
|
- printf(" -c # chroot to base dir\n");
|
33
|
|
- printf(" -n # don't fork\n");
|
34
|
|
- printf(" -r # don't recv\n");
|
35
|
|
- printf(" -s # don't send\n");
|
36
|
|
- printf(" -o # don't listen (console off mode)\n");
|
37
|
|
- printf(" -O # owner match limitation mode\n");
|
38
|
|
- printf(" -h # help\n\n");
|
|
17
|
+ printf(" -d num # loglevel(0-9)\n");
|
|
18
|
+ printf(" -u uid # user\n");
|
|
19
|
+ printf(" -g gid # group\n");
|
|
20
|
+ printf(" -G gid,.. # groups\n");
|
|
21
|
+ printf(" -b dir # base dir\n");
|
|
22
|
+ printf(" -p port # port number (default: 5000)\n");
|
|
23
|
+ printf(" -m addr # multicast address (default: 224.0.0.108)\n");
|
|
24
|
+ printf(" -i addr # interface address (default: 0.0.0.0)\n");
|
|
25
|
+ printf(" -l addr # listen address (default: 127.0.0.1)\n");
|
|
26
|
+ printf(" -U path # unix domain socket\n");
|
|
27
|
+ printf(" -k file # key file (encrypt password)\n");
|
|
28
|
+ printf(" -K file # key file (console password)\n");
|
|
29
|
+ printf(" -f num # parallel send count(default: 5) \n");
|
|
30
|
+ printf(" -R num # recv buffer size [bytes]\n");
|
|
31
|
+ printf(" -S num # send buffer size [bytes]\n");
|
|
32
|
+ printf(" -T num # traffic rate [Mbps]\n");
|
|
33
|
+ printf(" -n # don't fork\n");
|
|
34
|
+ printf(" -r # don't recv\n");
|
|
35
|
+ printf(" -s # don't send\n");
|
|
36
|
+ printf(" -o # don't listen (console off mode)\n");
|
|
37
|
+ printf(" -O # owner match limitation mode\n");
|
|
38
|
+ printf(" -c --chroot # chroot to base dir\n");
|
|
39
|
+ printf(" -V --version # version\n");
|
|
40
|
+ printf(" -h --help # help\n\n");
|
39
|
41
|
exit(0);
|
40
|
42
|
}
|
41
|
43
|
|
...
|
...
|
@@ -70,6 +72,9 @@ static void minit_option_setdefault()
|
70
|
70
|
moption.maddr.sin_family = AF_INET;
|
71
|
71
|
moption.maddr.sin_addr.s_addr = inet_addr(MAKUO_MCAST_ADDR);
|
72
|
72
|
moption.maddr.sin_port = htons(MAKUO_MCAST_PORT);
|
|
73
|
+ moption.iaddr.sin_family = AF_INET;
|
|
74
|
+ moption.iaddr.sin_addr.s_addr = INADDR_ANY;
|
|
75
|
+ moption.iaddr.sin_port = htons(MAKUO_MCAST_PORT);
|
73
|
76
|
moption.laddr.sin_family = AF_INET;
|
74
|
77
|
moption.laddr.sin_addr.s_addr = inet_addr(MAKUO_LOCAL_ADDR);
|
75
|
78
|
moption.laddr.sin_port = htons(MAKUO_MCAST_PORT);
|
...
|
...
|
@@ -308,8 +313,14 @@ static void minit_password(char *filename, int n)
|
308
|
308
|
static void minit_getopt(int argc, char *argv[])
|
309
|
309
|
{
|
310
|
310
|
int r;
|
311
|
|
-
|
312
|
|
- while((r=getopt(argc, argv, "T:R:S:f:u:g:G:d:b:p:m:l:U:k:K:VhnsroOc")) != -1){
|
|
311
|
+ struct option opt[]={
|
|
312
|
+ "chroot", 0, NULL, 'c',
|
|
313
|
+ "help", 0, NULL, 'h',
|
|
314
|
+ "version", 0, NULL, 'V',
|
|
315
|
+ 0, 0, 0, 0
|
|
316
|
+ };
|
|
317
|
+
|
|
318
|
+ while((r=getopt_long(argc, argv, "T:R:S:f:u:g:G:d:b:p:m:i:l:U:k:K:VhnsroOc", opt, NULL)) != -1){
|
313
|
319
|
switch(r){
|
314
|
320
|
case 'V':
|
315
|
321
|
version_print();
|
...
|
...
|
@@ -391,6 +402,10 @@ static void minit_getopt(int argc, char *argv[])
|
391
|
391
|
moption.maddr.sin_addr.s_addr = inet_addr(optarg);
|
392
|
392
|
break;
|
393
|
393
|
|
|
394
|
+ case 'i':
|
|
395
|
+ moption.iaddr.sin_addr.s_addr = inet_addr(optarg);
|
|
396
|
+ break;
|
|
397
|
+
|
394
|
398
|
case 'l':
|
395
|
399
|
moption.laddr.sin_addr.s_addr = inet_addr(optarg);
|
396
|
400
|
break;
|
...
|
...
|
@@ -439,7 +454,7 @@ static void minit_socket()
|
439
|
439
|
struct ip_mreq mg;
|
440
|
440
|
struct sockaddr_in addr;
|
441
|
441
|
mg.imr_multiaddr.s_addr = moption.maddr.sin_addr.s_addr;
|
442
|
|
- mg.imr_interface.s_addr = INADDR_ANY;
|
|
442
|
+ mg.imr_interface.s_addr = moption.iaddr.sin_addr.s_addr;
|
443
|
443
|
addr.sin_family = AF_INET;
|
444
|
444
|
addr.sin_port = moption.maddr.sin_port;
|
445
|
445
|
addr.sin_addr.s_addr = INADDR_ANY;
|
...
|
...
|
@@ -653,6 +668,7 @@ static void minit_bootlog()
|
653
|
653
|
lprintf(0, "base dir : %s\n", moption.base_dir);
|
654
|
654
|
}
|
655
|
655
|
lprintf(0, "multicast : %s\n", inet_ntoa(moption.maddr.sin_addr));
|
|
656
|
+ lprintf(0, "interface : %s\n", inet_ntoa(moption.iaddr.sin_addr));
|
656
|
657
|
lprintf(0, "port : %d\n", ntohs(moption.maddr.sin_port));
|
657
|
658
|
lprintf(0, "uid : %d(%s)\n", moption.uid, moption.user_name);
|
658
|
659
|
lprintf(0, "gid : %d(%s)" , moption.gid, moption.group_name);
|