Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include <u.h>
2
#include <libc.h>
3
 
4
void
5
hogport(char *proto, int port)
6
{
7
	char buf[256];
8
	char dir[40];
9
 
10
	snprint(buf, sizeof(buf), "%s!%d", proto, port);
11
	if(announce(buf, dir) < 0)
12
		fprint(2, "%s: can't hog %s\n", argv0, buf);
13
}
14
 
15
void
16
hogrange(char *str)
17
{
18
	char *er, *sr;
19
	int start, end;
20
 
21
	sr = strrchr(str, '!');
22
	if(sr == nil)
23
		sysfatal("bad range: %s", str);
24
	*sr++ = 0;
25
 
26
	er = strchr(sr, '-');
27
	if(er == nil)
28
		er = sr;
29
	else
30
		er++;
31
 
32
	start = atoi(sr);
33
	end = atoi(er);
34
	if(end < start)
35
		sysfatal("bad range: %s", sr);
36
 
37
	for(; start <= end; start++)
38
		hogport(str, start);
39
}
40
 
41
void
42
main(int argc, char **argv)
43
{
44
	int i;
45
 
46
	ARGBEGIN{
47
	}ARGEND;
48
 
49
	if(argc == 0){
50
		fprint(2, "usage: %s portrange\n", argv0);
51
		exits("usage");
52
	}
53
 
54
	switch(rfork(RFREND|RFNOTEG|RFFDG|RFPROC|RFNAMEG)){
55
	case 0:
56
		close(0);
57
		close(1);
58
		break;
59
	case -1:
60
		abort(); /* "fork failed\n" */;
61
	default:
62
		_exits(0);
63
	}
64
 
65
	for(i = 0; i < argc; i++)
66
		hogrange(argv[i]);
67
 
68
	close(2);
69
	for(;;)
70
		sleep(10000);
71
}