]> git.pld-linux.org Git - packages/apinger.git/blame - apinger-srcip.patch
- disable parallel build
[packages/apinger.git] / apinger-srcip.patch
CommitLineData
c3818ac3
MK
1diff -ur apinger-0.6.1.orig//src/apinger.c apinger-0.6.1/src/apinger.c
2--- apinger-0.6.1.orig//src/apinger.c 2012-07-25 17:46:59.421182293 +0000
3+++ apinger-0.6.1/src/apinger.c 2012-07-25 17:44:41.642064536 +0000
972c05fb
MK
4@@ -162,6 +162,9 @@
5 case 't':
6 values[n]=t->name;
7 break;
8+ case 'i':
9+ values[n]=t->config->srcip;
10+ break;
11 case 'T':
12 values[n]=t->description;
13 break;
14@@ -277,6 +280,7 @@
23868a1a
MK
15 else
16 fprintf(f,"alarm canceled: %s\n",a->name);
a561f599 17 fprintf(f,"Target: %s\n",t->name);
f640c300 18+ fprintf(f,"Source: %s\n",t->config->srcip);
a561f599 19 fprintf(f,"Description: %s\n",t->description);
23868a1a
MK
20 fprintf(f,"Probes sent: %i\n",t->last_sent+1);
21 fprintf(f,"Replies received: %i\n",t->received);
972c05fb 22@@ -646,7 +650,7 @@
c3818ac3
MK
23 struct target *t,*pt,*nt;
24 struct target_cfg *tc;
25 struct active_alarm_list *al,*nal;
26-union addr addr;
27+union addr addr, srcaddr;
28 int r;
29 int l;
30
972c05fb 31@@ -666,6 +670,8 @@
c3818ac3
MK
32 nal=al->next;
33 free(al);
34 }
35+ if (t->socket)
36+ close(t->socket);
37 free(t->queue);
38 free(t->rbuf);
39 free(t->name);
f640c300
MK
40@@ -682,20 +688,16 @@
41 break;
42 if (t==NULL) { /* new target */
c3818ac3 43 memset(&addr,0,sizeof(addr));
f640c300 44+ logit("Checking target IP %s", tc->srcip);
c3818ac3
MK
45 r=inet_pton(AF_INET,tc->name,&addr.addr4.sin_addr);
46 if (r){
47- if (icmp_sock<0){
48- logit("Sorry, IPv4 is not available\n");
49- logit("Ignoring target %s\n",tc->name);
50- continue;
51- }
52 addr.addr.sa_family=AF_INET;
53 }else{
54 #ifdef HAVE_IPV6
f640c300
MK
55 r=inet_pton(AF_INET6,tc->name,&addr.addr6.sin6_addr);
56 if (r==0){
57 #endif
58- logit("Bad host address: %s\n",tc->name);
59+ logit("Bad target IP address: %s\n",tc->name);
60 logit("Ignoring target %s\n",tc->name);
61 continue;
62 #ifdef HAVE_IPV6
63@@ -708,12 +710,38 @@
c3818ac3
MK
64 addr.addr.sa_family=AF_INET6;
65 #endif
66 }
67+ memset(&srcaddr,0,sizeof(srcaddr));
f640c300 68+ logit("Checking source IP %s", tc->srcip);
c3818ac3
MK
69+ r=inet_pton(AF_INET,tc->srcip,&srcaddr.addr4.sin_addr);
70+ if (r){
71+ srcaddr.addr.sa_family=AF_INET;
72+ }else{
73+#ifdef HAVE_IPV6
74+ r=inet_pton(AF_INET6,tc->srcip,&srcaddr.addr6.sin6_addr);
75+ if (r==0){
76+#endif
f640c300 77+ logit("Bad source IP address %s for target %s\n", tc->srcip, tc->name);
c3818ac3
MK
78+ logit("Ignoring target %s\n",tc->name);
79+ continue;
80+#ifdef HAVE_IPV6
81+ }
82+ if (icmp6_sock<0){
83+ logit("Sorry, IPv6 is not available\n");
84+ logit("Ignoring target %s\n",tc->name);
85+ continue;
86+ }
87+ srcaddr.addr.sa_family=AF_INET6;
88+#endif
89+ }
90 t=NEW(struct target,1);
91 memset(t,0,sizeof(struct target));
92 t->name=strdup(tc->name);
93 t->description=strdup(tc->description);
94 t->addr=addr;
95+ t->ifaddr=srcaddr;
96 t->next=targets;
97+ if(t->addr.addr.sa_family==AF_INET) make_icmp_socket(t);
98+ if(t->addr.addr.sa_family==AF_INET6) make_icmp6_socket(t);
99 targets=t;
100 }
101 t->config=tc;
f640c300 102@@ -733,6 +761,7 @@
c3818ac3
MK
103 assert(t->rbuf!=NULL);
104 memset(t->rbuf,0,l);
105 }
106+
107 if (targets==NULL){
108 logit("No usable targets found, exiting");
109 exit(1);
f640c300 110@@ -753,6 +782,8 @@
c3818ac3
MK
111 nal=al->next;
112 free(al);
113 }
114+ if (t->socket)
115+ close(t->socket);
116 free(t->queue);
117 free(t->rbuf);
118 free(t->name);
f640c300 119@@ -800,6 +831,7 @@
23868a1a
MK
120 fprintf(f,"%s\n",ctime(&tm));
121 for(t=targets;t;t=t->next){
a561f599 122 fprintf(f,"Target: %s\n",t->name);
f640c300 123+ fprintf(f,"Source: %s\n",t->config->srcip);
a561f599 124 fprintf(f,"Description: %s\n",t->description);
23868a1a
MK
125 fprintf(f,"Last reply received: #%i %s",t->last_received,
126 ctime(&t->last_received_tv.tv_sec));
f640c300 127@@ -865,7 +897,7 @@
c3818ac3
MK
128 void main_loop(void){
129 struct target *t;
130 struct timeval cur_time,next_status={0,0},tv,next_report={0,0},next_rrd_update={0,0};
131-struct pollfd pfd[2];
132+struct pollfd pfd[1024];
133 int timeout;
134 int npfd=0;
135 int i;
f640c300 136@@ -876,16 +908,8 @@
c3818ac3
MK
137 struct alarm_cfg *a;
138
139 configure_targets();
140- if (icmp_sock){
141- pfd[npfd].events=POLLIN|POLLERR|POLLHUP|POLLNVAL;
142- pfd[npfd].revents=0;
143- pfd[npfd++].fd=icmp_sock;
144- }
145- if (icmp6_sock){
146- pfd[npfd].events=POLLIN|POLLERR|POLLHUP|POLLNVAL;
147- pfd[npfd++].fd=icmp6_sock;
148- pfd[npfd].revents=0;
149- }
150+ memset(&pfd, '\0', sizeof pfd);
151+
152 if (config->status_interval){
153 gettimeofday(&cur_time,NULL);
154 tv.tv_sec=config->status_interval/1000;
f640c300 155@@ -893,10 +917,16 @@
c3818ac3
MK
156 timeradd(&cur_time,&tv,&next_status);
157 }
158 while(!interrupted_by){
159+ npfd = 0;
160 gettimeofday(&cur_time,NULL);
161 if ( !timercmp(&next_probe,&cur_time,>) )
162 timerclear(&next_probe);
163 for(t=targets;t;t=t->next){
164+ if (t->socket){
165+ pfd[npfd].events=POLLIN|POLLERR|POLLHUP|POLLNVAL;
166+ pfd[npfd].revents=0;
167+ pfd[npfd++].fd=t->socket;
168+ }
169 for(al=t->config->alarms;al;al=nal){
170 a=al->alarm;
171 nal=al->next;
f640c300 172@@ -972,8 +1002,20 @@
c3818ac3
MK
173 poll(pfd,npfd,timeout);
174 for(i=0;i<npfd;i++){
175 if (!pfd[i].revents&POLLIN) continue;
176- if (pfd[i].fd==icmp_sock) recv_icmp();
177- else if (pfd[i].fd==icmp6_sock) recv_icmp6();
178+ for(t=targets;t;t=t->next){
179+ if (t->addr.addr.sa_family==AF_INET) {
180+ if (t->socket == pfd[i].fd) {
181+ recv_icmp(t);
182+ break;
183+ }
184+ }
185+ if (t->addr.addr.sa_family==AF_INET6) {
186+ if (t->socket == pfd[i].fd) {
187+ recv_icmp6(t);
188+ break;
189+ }
190+ }
191+ }
192 pfd[i].revents=0;
193 }
194 if (status_request){
972c05fb
MK
195diff -ur apinger-0.6.1.orig//src/apinger.conf apinger-0.6.1/src/apinger.conf
196--- apinger-0.6.1.orig//src/apinger.conf 2012-07-26 11:14:05.000000000 +0000
197+++ apinger-0.6.1/src/apinger.conf 2012-07-26 11:21:50.624064932 +0000
198@@ -48,6 +48,7 @@
199
200 ## Following "macros" may be used in options below:
201 ## %t - target name (address)
67a10869 202+ ## %i - source name (address)
972c05fb
MK
203 ## %T - target description
204 ## %a - alarm name
205 ## %A - alarm type ("down"/"loss"/"delay")
c3818ac3
MK
206diff -ur apinger-0.6.1.orig//src/apinger.h apinger-0.6.1/src/apinger.h
207--- apinger-0.6.1.orig//src/apinger.h 2012-07-25 17:46:59.422189729 +0000
208+++ apinger-0.6.1/src/apinger.h 2012-07-25 17:44:41.642064536 +0000
209@@ -47,6 +47,8 @@
210 #endif
211 #include "conf.h"
212
213+#include <ifaddrs.h>
214+
215 union addr {
216 struct sockaddr addr;
217 struct sockaddr_in addr4;
218@@ -67,10 +69,11 @@
219 char *description; /* description */
220
221 union addr addr; /* target address */
222-
223+
224 char *queue; /*
225 contains info about recently sent packets
226 "1" means it was received */
227+ int socket;
228 int last_sent; /* sequence number of the last ping sent */
229 int last_received; /* sequence number of the last ping received */
230 struct timeval last_received_tv; /* timestamp of the last ping received */
231@@ -90,6 +93,7 @@
232 struct target_cfg *config;
233
234 struct target *next;
235+ union addr ifaddr; /* iface address */
236 };
237
238 #define AVG_DELAY_KNOWN(t) (t->upsent >= t->config->avg_delay_samples)
239@@ -111,16 +115,16 @@
240
241 extern int icmp_sock;
242 extern int icmp6_sock;
243-extern int ident;
244+extern uint16_t ident;
245
246 extern struct timeval next_probe;
247
248-int make_icmp_socket(void);
249-void recv_icmp(void);
250+int make_icmp_socket(struct target *t);
251+void recv_icmp(struct target *t);
252 void send_icmp_probe(struct target *t,int seq);
253
254-int make_icmp6_socket(void);
255-void recv_icmp6(void);
256+int make_icmp6_socket(struct target *t);
257+void recv_icmp6(struct target *t);
258 void send_icmp6_probe(struct target *t,int seq);
259
260 void analyze_reply(struct timeval time_recv,int seq,struct trace_info *ti);
261diff -ur apinger-0.6.1.orig//src/cfgparser1.y apinger-0.6.1/src/cfgparser1.y
262--- apinger-0.6.1.orig//src/cfgparser1.y 2003-03-26 11:27:47.000000000 +0000
263+++ apinger-0.6.1/src/cfgparser1.y 2012-07-25 17:44:41.643063909 +0000
264@@ -97,6 +97,7 @@
265 %token DELAY_HIGH
266
267 %token DESCRIPTION
268+%token SRCIP
269 %token ALARMS
270 %token INTERVAL
271 %token AVG_DELAY_SAMPLES
272@@ -248,6 +249,8 @@
273 targetcfg: /* */
274 | DESCRIPTION string
275 { cur_target->description=$2; }
276+ | SRCIP string
277+ { cur_target->srcip = $2; }
278 | ALARMS alarmlist
279 { cur_target->alarms=$2; }
280 | ALARMS OVERRIDE alarmlist
281diff -ur apinger-0.6.1.orig//src/cfgparser2.l apinger-0.6.1/src/cfgparser2.l
282--- apinger-0.6.1.orig//src/cfgparser2.l 2003-03-26 11:27:47.000000000 +0000
283+++ apinger-0.6.1/src/cfgparser2.l 2012-07-25 17:44:41.643063909 +0000
284@@ -82,6 +82,7 @@
285 delay_high { LOC; LOCINC; return DELAY_HIGH; }
286 delay_low { LOC; LOCINC; return DELAY_LOW; }
287 description { LOC; LOCINC; return DESCRIPTION; }
288+srcip { LOC; LOCINC; return SRCIP; }
289 down { LOC; LOCINC; return DOWN; }
290 false { LOC; LOCINC; return FALSE; }
291 file { LOC; LOCINC; return FILE_; }
f640c300
MK
292diff -ur apinger-0.6.1.orig//src/conf.c apinger-0.6.1/src/conf.c
293--- apinger-0.6.1.orig//src/conf.c 2003-03-26 11:27:47.000000000 +0000
294+++ apinger-0.6.1/src/conf.c 2012-07-27 10:54:53.563251145 +0000
295@@ -175,6 +175,14 @@
296 }
297 }
298 for(t=cur_config.targets;t;t=t->next){
299+ if (t->name==NULL || strlen(t->name)==0){
300+ logit("Target name can't be empty.");
301+ return 1;
302+ }
303+ else if (t->srcip==NULL){
304+ logit("No source IP defined for target \"%s\".", t->name);
305+ return 1;
306+ }
307 if (t->description==NULL)
308 t->description=cur_config.target_defaults.description;
309 if (t->interval<=0)
c3818ac3
MK
310diff -ur apinger-0.6.1.orig//src/conf.h apinger-0.6.1/src/conf.h
311--- apinger-0.6.1.orig//src/conf.h 2003-03-26 11:27:47.000000000 +0000
312+++ apinger-0.6.1/src/conf.h 2012-07-25 17:44:41.643063909 +0000
313@@ -72,6 +72,7 @@
314 struct target_cfg {
315 char *name;
316 char *description;
317+ char *srcip;
318 int interval;
319 int avg_delay_samples;
320 int avg_loss_delay_samples;
321diff -ur apinger-0.6.1.orig//src/icmp.c apinger-0.6.1/src/icmp.c
322--- apinger-0.6.1.orig//src/icmp.c 2012-07-25 17:46:59.422189729 +0000
323+++ apinger-0.6.1/src/icmp.c 2012-07-25 17:44:41.644063862 +0000
324@@ -151,14 +151,14 @@
325 size=sizeof(*p)+sizeof(ti);
326
327 p->icmp_cksum = in_cksum((u_short *)p,size,0);
328- ret=sendto(icmp_sock,p,size,MSG_DONTWAIT,
329+ ret=sendto(t->socket,p,size,MSG_DONTWAIT,
330 (struct sockaddr *)&t->addr.addr4,sizeof(t->addr.addr4));
331 if (ret<0){
332 if (config->debug) myperror("sendto");
333 }
334 }
335
336-void recv_icmp(void){
337+void recv_icmp(struct target *t){
338 int len,hlen,icmplen,datalen;
339 char buf[1024];
340 struct sockaddr_in from;
341@@ -171,6 +171,7 @@
342 struct iovec iov;
343 struct msghdr msg;
344 struct cmsghdr *c;
345+reloophack:
346
347 iov.iov_base=buf;
348 iov.iov_len=1000;
349@@ -180,12 +181,13 @@
350 msg.msg_iovlen=1;
351 msg.msg_control=ans_data;
352 msg.msg_controllen=sizeof(ans_data);
353- len=recvmsg(icmp_sock, &msg, MSG_DONTWAIT);
354+ len=recvmsg(t->socket, &msg, MSG_DONTWAIT);
355 #else
356 socklen_t sl;
357+reloophack:
358
359 sl=sizeof(from);
360- len=recvfrom(icmp_sock,buf,1024,MSG_DONTWAIT,(struct sockaddr *)&from,&sl);
361+ len=recvfrom(t->socket,buf,1024,MSG_DONTWAIT,(struct sockaddr *)&from,&sl);
362 #endif
363 if (len<0){
364 if (errno==EAGAIN) return;
365@@ -197,7 +199,7 @@
366 debug("checking CMSG...");
367 for (c = CMSG_FIRSTHDR(&msg); c; c = CMSG_NXTHDR(&msg, c)) {
368 debug("CMSG level: %i type: %i",c->cmsg_level,c->cmsg_type);
369- if (c->cmsg_level != SOL_SOCKET || c->cmsg_type != SO_TIMESTAMP)
370+ if (c->cmsg_level != SOL_SOCKET || c->cmsg_type != SCM_TIMESTAMP)
371 continue;
372 if (c->cmsg_len < CMSG_LEN(sizeof(struct timeval)))
373 continue;
374@@ -207,7 +209,7 @@
375 #endif
376 if (time_recvp==NULL){
377 #ifdef SIOCGSTAMP
378- if (!ioctl(icmp_sock, SIOCGSTAMP, &time_recv)){
379+ if (!ioctl(t->socket, SIOCGSTAMP, &time_recv)){
380 debug("Got timestampt from ioctl()");
381 }else
382 #endif
383@@ -227,7 +229,8 @@
384 return;
385 }
386 if (icmp->icmp_id != ident){
387- debug("Alien echo-reply received");
388+ debug("Alien echo-reply received from %s. Expected %i, received %i",inet_ntoa(from.sin_addr), ident, icmp->icmp_id);
389+ goto reloophack;
390 return;
391 }
392 debug("Ping reply from %s",inet_ntoa(from.sin_addr));
393@@ -239,19 +242,23 @@
394 analyze_reply(*time_recvp,icmp->icmp_seq,(struct trace_info*)(icmp+1));
395 }
396
397-int make_icmp_socket(void){
398+int make_icmp_socket(struct target *t){
399 int on;
400
401- icmp_sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
402- if (icmp_sock<0)
403+ t->socket = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
404+ if (t->socket < 0)
405 myperror("socket");
406 #ifdef SO_TIMESTAMP
407- else{
408+ else {
409 on=1;
410- if (setsockopt(icmp_sock, SOL_SOCKET, SO_TIMESTAMP, &on, sizeof(on)))
411+ if (setsockopt(t->socket, SOL_SOCKET, SO_TIMESTAMP, &on, sizeof(on)))
412 myperror("setsockopt(SO_TIMESTAMP)");
413 }
414 #endif
415- return icmp_sock;
416+
417+ if (bind(t->socket, (struct sockaddr *)&t->ifaddr.addr4, sizeof(t->ifaddr.addr4)) < 0)
418+ myperror("bind socket");
419+
420+ return t->socket;
421 }
422
423diff -ur apinger-0.6.1.orig//src/icmp6.c apinger-0.6.1/src/icmp6.c
424--- apinger-0.6.1.orig//src/icmp6.c 2012-07-25 17:46:59.422189729 +0000
425+++ apinger-0.6.1/src/icmp6.c 2012-07-25 17:44:41.644063862 +0000
426@@ -113,14 +113,14 @@
427 memcpy(p+1,&ti,sizeof(ti));
428 size=sizeof(*p)+sizeof(ti);
429
430- ret=sendto(icmp6_sock,p,size,MSG_DONTWAIT,
431+ ret=sendto(t->socket,p,size,MSG_DONTWAIT,
432 (struct sockaddr *)&t->addr.addr6,sizeof(t->addr.addr6));
433 if (ret<0){
434 if (config->debug) myperror("sendto");
435 }
436 }
437
438-void recv_icmp6(void){
439+void recv_icmp6(struct target *t){
440 int len,icmplen,datalen;
441 char buf[1024];
442 char abuf[100];
443@@ -134,6 +134,7 @@
444 struct iovec iov;
445 struct msghdr msg;
446 struct cmsghdr *c;
447+reloophack6:
448
449 iov.iov_base=buf;
450 iov.iov_len=1000;
451@@ -143,12 +144,13 @@
452 msg.msg_iovlen=1;
453 msg.msg_control=ans_data;
454 msg.msg_controllen=sizeof(ans_data);
455- len=recvmsg(icmp6_sock, &msg, MSG_DONTWAIT);
456+ len=recvmsg(t->socket, &msg, MSG_DONTWAIT);
457 #else
458 socklen_t sl;
459+reloophack6:
460
461 sl=sizeof(from);
462- len=recvfrom(icmp6_sock,buf,1024,0,(struct sockaddr *)&from,&sl);
463+ len=recvfrom(t->socket,buf,1024,0,(struct sockaddr *)&from,&sl);
464 #endif
465 if (len<0){
466 if (errno==EAGAIN) return;
467@@ -170,7 +172,7 @@
468 #endif
469 if (time_recvp==NULL){
470 #ifdef SIOCGSTAMP
471- if (!ioctl(icmp6_sock, SIOCGSTAMP, &time_recv)){
472+ if (!ioctl(t->socket, SIOCGSTAMP, &time_recv)){
473 debug("Got timestamp from ioctl()");
474 }else
475 #endif
476@@ -183,8 +185,11 @@
477 icmplen=len;
478 icmp=(struct icmp6_hdr *)buf;
479 if (icmp->icmp6_type != ICMP6_ECHO_REPLY) return;
480- if (icmp->icmp6_id != ident) return;
481-
482+ if (icmp->icmp6_id != ident){
483+ debug("Alien echo-reply received from xxx. Expected %i, received %i", ident, icmp->icmp6_id);
484+ goto reloophack6;
485+ return;
486+ }
487 name=inet_ntop(AF_INET6,&from.sin6_addr,abuf,100);
488 debug("Ping reply from %s",name);
489 datalen=icmplen-sizeof(*icmp);
490@@ -196,33 +201,36 @@
491 }
492
493
494-int make_icmp6_socket(void){
495+int make_icmp6_socket(struct target *t){
496 int opt;
497
498- icmp6_sock = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6);
499- if (icmp6_sock<0)
500+ t->socket = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6);
501+ if (t->socket <0)
502 myperror("socket");
503 else {
504 opt=2;
505 #if defined(SOL_RAW) && defined(IPV6_CHECKSUM)
506- if (setsockopt(icmp6_sock, SOL_RAW, IPV6_CHECKSUM, &opt, sizeof(int)))
507+ if (setsockopt(t->socket, SOL_RAW, IPV6_CHECKSUM, &opt, sizeof(int)))
508 myperror("setsockopt(IPV6_CHECKSUM)");
509 #endif
510 #ifdef SO_TIMESTAMP
511 opt=1;
512- if (setsockopt(icmp6_sock, SOL_SOCKET, SO_TIMESTAMP, &opt, sizeof(opt)))
513+ if (setsockopt(t->socket, SOL_SOCKET, SO_TIMESTAMP, &opt, sizeof(opt)))
514 myperror("setsockopt(SO_TIMESTAMP)");
515 #endif
516 /*install_filter6();*/
517 }
518- return icmp6_sock;
519+ if (bind(t->socket, (struct sockaddr *)&t->ifaddr.addr6, sizeof(t->ifaddr.addr6)) < 0)
520+ myperror("bind socket");
521+
522+ return t->socket;
523 }
524
525 #else /*HAVE_IPV6*/
526 #include "apinger.h"
527
528-int make_icmp6_socket(void){ return -1; }
529-void recv_icmp6(void){}
530+int make_icmp6_socket(struct target *t){ return -1; }
531+void recv_icmp6(struct target *t){}
532 void send_icmp6_probe(struct target *t,int seq){}
533
534 #endif /*HAVE_IPV6*/
535diff -ur apinger-0.6.1.orig//src/main.c apinger-0.6.1/src/main.c
536--- apinger-0.6.1.orig//src/main.c 2012-07-25 17:46:59.423189376 +0000
537+++ apinger-0.6.1/src/main.c 2012-07-25 17:49:53.167255387 +0000
538@@ -72,6 +72,7 @@
539 { /* target defaults */
540 "default", /* name */
541 "", /* description */
542+ "", /* interface */
543 1000, /* interval */
544 20, /* avg_delay_samples */
545 5, /* avg_loss_delay_samples */
546@@ -96,7 +97,7 @@
547
548 int icmp_sock;
549 int icmp6_sock;
550-int ident;
551+uint16_t ident;
552
553 struct timeval next_probe={0,0};
554
555@@ -204,12 +205,6 @@
556 }
557 }
558
559- make_icmp_socket();
560- make_icmp6_socket();
561- if (icmp6_sock<0 && icmp_sock<0){
562- return 1;
563- }
564-
565 pw=getpwnam(config->user);
566 if (!pw) {
567 debug("getpwnam(\"%s\") failed.",config->user);
568@@ -264,15 +259,15 @@
569 return 1;
570 }
571
572- ident=getpid();
573+ ident=getpid() & 0xFFFF;
574 signal(SIGTERM,signal_handler);
575 signal(SIGINT,signal_handler);
576 signal(SIGHUP,signal_handler);
577 signal(SIGUSR1,signal_handler);
578 signal(SIGPIPE,signal_handler);
579+ logit("Starting Alarm Pinger, apinger(%i)", ident);
580+
581 main_loop();
582- if (icmp_sock>=0) close(icmp_sock);
583- if (icmp6_sock>=0) close(icmp6_sock);
584
585 logit("Exiting on signal %i.",interrupted_by);
586
This page took 0.139499 seconds and 4 git commands to generate.