1 diff -Naur smap.orig/icmpping.c smap/icmpping.c
2 --- smap.orig/icmpping.c 2007-10-07 06:15:11.000000000 -0400
3 +++ smap/icmpping.c 2009-06-13 11:57:28.000000000 -0400
5 struct sockaddr_in sin;
6 #define ICMP_PKT_LEN (sizeof(struct icmp) + ICMP_PAYLOAD_LEN)
7 char icmpbuf[ICMP_PKT_LEN];
10 /* prepare ICMP packet */
11 memset(&icmpbuf, 'A', ICMP_PKT_LEN);
13 if (setsockopt(sock, SOL_SOCKET, SO_REUSEPORT, &one, sizeof(one)) != 0)
16 + if (setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &one, sizeof(one)) != 0)
17 + perror("setsockopt");
18 icmp->icmp_cksum = icmp_in_cksum((unsigned short *) &icmpbuf, ICMP_PKT_LEN);
21 diff -Naur smap.orig/smap.c smap/smap.c
22 --- smap.orig/smap.c 2007-11-03 14:14:52.000000000 -0400
23 +++ smap/smap.c 2009-06-13 10:49:15.000000000 -0400
26 case 't': /* TCP transport */
27 /* UDP is default so TCP would override it */
28 - config.flags ^= FLAG_UDP_TRANSPORT;
29 + config.flags &= ~FLAG_UDP_TRANSPORT;
30 config.flags |= FLAG_TCP_TRANSPORT;
32 case 'u': /* UDP transport */
33 - config.flags ^= FLAG_TCP_TRANSPORT;
34 + config.flags &= ~FLAG_TCP_TRANSPORT;
35 config.flags |= FLAG_UDP_TRANSPORT;
37 case 'r': /* ratelimit messages/sec */
38 diff -Naur smap.orig/transport_udp.c smap/transport_udp.c
39 --- smap.orig/transport_udp.c 2008-08-20 09:02:57.000000000 -0400
40 +++ smap/transport_udp.c 2009-06-13 11:56:15.000000000 -0400
42 extern int udp_sendsock;
43 extern struct sockaddr_in udp_sendsock_sockaddr;
47 /* is 5060 (DEFAULT_SIP_PORT) available?
48 * if yes, we'll use it since some clients send responses to
50 error(ERR_DEBUG, "bind() successful");
54 + if (setsockopt(udp_sendsock, SOL_SOCKET, SO_BROADCAST, &one, sizeof(one)) != 0) {
55 + perror("setsockopt");
56 + error(ERR_ERROR, "unable to set socket to broadcast");
60 if (getsockname(udp_sendsock, (struct sockaddr *) &udp_sendsock_sockaddr,
61 (socklen_t *) &sockaddrlen) != 0)
62 if (DEBUG) perror("getsocknameudp_sendsock");