Introduction
Introduction Statistics Contact Development Disclaimer Help
replace UDPWRAPPER macro with readable normal version - sdhcp - simple dhcp cli…
git clone git://git.codemadness.org/sdhcp
Log
Files
Refs
LICENSE
---
commit 7780d06e8ee64392f8c852ae24cdf5ff8c11845a
parent 253bb65b9f029890469c3726c446daf34747bcba
Author: Hiltjo Posthuma <[email protected]>
Date: Fri, 25 Apr 2014 21:58:18 +0200
replace UDPWRAPPER macro with readable normal version
fix some compiler warnings aswell (signed/unsigned)
Signed-off-by: Hiltjo Posthuma <[email protected]>
Diffstat:
M sdhcp.c | 31 ++++++++++++++++++++++-------…
1 file changed, 22 insertions(+), 9 deletions(-)
---
diff --git a/sdhcp.c b/sdhcp.c
@@ -122,16 +122,29 @@ iptoaddr(unsigned char ip[4], int port)
return *(struct sockaddr*)&ifaddr;
}
-#define UDPWRAPPER(name, func, port, hack) \
-static int name(unsigned char ip[4], int fd, void *data, size_t n){\
- struct sockaddr addr = iptoaddr(ip, port);\
- int x, y = sizeof addr;\
- if((x=func(fd, data, n, 0, &addr, hack y))==-1)\
- die(#func);\
- return x;\
+/* sendto UDP wrapper */
+static ssize_t
+udpsend(unsigned char ip[4], int fd, void *data, size_t n) {
+ struct sockaddr addr = iptoaddr(ip, 67);
+ socklen_t addrlen = sizeof addr;
+ ssize_t sent;
+
+ if((sent = sendto(fd, data, n, 0, &addr, addrlen)) == -1)
+ eprintf("sendto:");
+ return sent;
+}
+
+/* recvfrom UDP wrapper */
+static ssize_t
+udprecv(unsigned char ip[4], int fd, void *data, size_t n) {
+ struct sockaddr addr = iptoaddr(ip, 68);
+ socklen_t addrlen = sizeof addr;
+ ssize_t r;
+
+ if((r = recvfrom(fd, data, n, 0, &addr, &addrlen)) == -1)
+ eprintf("recvfrom:");
+ return r;
}
-UDPWRAPPER(udpsend, sendto, 67, )
-UDPWRAPPER(udprecv, recvfrom, 68, &)
static void
setip(unsigned char ip[4], unsigned char mask[4], unsigned char gateway[4])
You are viewing proxied material from codemadness.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.