]> git.pld-linux.org Git - packages/apinger.git/blob - apinger-srcip.patch
- require target and source IP addresses to be specified in config
[packages/apinger.git] / apinger-srcip.patch
1 diff -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
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 @@
15         else
16                 fprintf(f,"alarm canceled: %s\n",a->name);
17         fprintf(f,"Target: %s\n",t->name);
18 +       fprintf(f,"Source: %s\n",t->config->srcip);
19         fprintf(f,"Description: %s\n",t->description);
20         fprintf(f,"Probes sent: %i\n",t->last_sent+1);
21         fprintf(f,"Replies received: %i\n",t->received);
22 @@ -646,7 +650,7 @@
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  
31 @@ -666,6 +670,8 @@
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);
40 @@ -682,20 +688,16 @@
41                                 break;
42                 if (t==NULL) { /* new target */
43                         memset(&addr,0,sizeof(addr));
44 +                       logit("Checking target IP %s", tc->srcip);
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
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 @@
64                                 addr.addr.sa_family=AF_INET6;
65  #endif
66                         }
67 +                       memset(&srcaddr,0,sizeof(srcaddr));
68 +                       logit("Checking source IP %s", tc->srcip);
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
77 +                                       logit("Bad source IP address %s for target %s\n", tc->srcip, tc->name);
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;
102 @@ -733,6 +761,7 @@
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);
110 @@ -753,6 +782,8 @@
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);
119 @@ -800,6 +831,7 @@
120         fprintf(f,"%s\n",ctime(&tm));
121         for(t=targets;t;t=t->next){
122                 fprintf(f,"Target: %s\n",t->name);
123 +               fprintf(f,"Source: %s\n",t->config->srcip);
124                 fprintf(f,"Description: %s\n",t->description);
125                 fprintf(f,"Last reply received: #%i %s",t->last_received,
126                         ctime(&t->last_received_tv.tv_sec));
127 @@ -865,7 +897,7 @@
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;
136 @@ -876,16 +908,8 @@
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;
155 @@ -893,10 +917,16 @@
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;
172 @@ -972,8 +1002,20 @@
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){
195 diff -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)
202 +       ##      %i - source name (address)
203         ##      %T - target description
204         ##      %a - alarm name
205         ##      %A - alarm type ("down"/"loss"/"delay")
206 diff -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);
261 diff -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
281 diff -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_; }
292 diff -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)
310 diff -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;
321 diff -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  
423 diff -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*/
535 diff -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.136778 seconds and 3 git commands to generate.