summaryrefslogtreecommitdiff
blob: 557d71b85539a7583cc95d31232cd4d852e134e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
diff -Naur snmplib.orig/snmpUDPDomain.c snmplib/snmpUDPDomain.c
--- snmplib.orig/snmpUDPDomain.c	2007-10-11 22:46:30.000000000 +0200
+++ snmplib/snmpUDPDomain.c	2009-07-10 23:41:37.000000000 +0200
@@ -65,6 +65,12 @@
 #define INADDR_NONE	-1
 #endif
 
+#ifdef  MSG_DONTWAIT
+#define NETSNMP_DONTWAIT MSG_DONTWAIT
+#else
+#define NETSNMP_DONTWAIT 0
+#endif
+
 static netsnmp_tdomain udpDomain;
 
 typedef struct netsnmp_udp_addr_pair_s {
@@ -104,12 +110,12 @@
 	char tmp[64];
         to = (struct sockaddr_in *) &(addr_pair->remote_addr);
         if (to == NULL) {
-            sprintf(tmp, "UDP: [%s]->unknown",
+            sprintf(tmp, "UDP: unknown->[%s]",
                     inet_ntoa(addr_pair->local_addr));
         } else {
-            sprintf(tmp, "UDP: [%s]->", inet_ntoa(addr_pair->local_addr));
-            sprintf(tmp + strlen(tmp), "[%s]:%hd",
+            sprintf(tmp, "UDP: [%s]:%hu->",
                     inet_ntoa(to->sin_addr), ntohs(to->sin_port));
+            sprintf(tmp + strlen(tmp), "[%s]", inet_ntoa(addr_pair->local_addr));
         }
         return strdup(tmp);
     }
@@ -140,7 +146,7 @@
     msg.msg_control = &cmsg;
     msg.msg_controllen = sizeof(cmsg);
 
-    r = recvmsg(s, &msg, 0);
+    r = recvmsg(s, &msg, NETSNMP_DONTWAIT);
 
     if (r == -1) {
         return -1;
@@ -215,7 +221,7 @@
 #if defined(linux) && defined(IP_PKTINFO)
             rc = netsnmp_udp_recvfrom(t->sock, buf, size, from, &fromlen, &(addr_pair->local_addr));
 #else
-            rc = recvfrom(t->sock, buf, size, 0, from, &fromlen);
+            rc = recvfrom(t->sock, buf, size, NETSNMP_DONTWAIT, from, &fromlen);
 #endif /* linux && IP_PKTINFO */
 	    if (rc < 0 && errno != EINTR) {
 		break;