aboutsummaryrefslogtreecommitdiff
path: root/dhcp6relay.c
diff options
context:
space:
mode:
Diffstat (limited to 'dhcp6relay.c')
-rw-r--r--dhcp6relay.c118
1 files changed, 59 insertions, 59 deletions
diff --git a/dhcp6relay.c b/dhcp6relay.c
index eb0bce9..99b1227 100644
--- a/dhcp6relay.c
+++ b/dhcp6relay.c
@@ -228,7 +228,7 @@ main(argc, argv)
relay6_init(argc, argv);
- dprintf(LOG_INFO, FNAME, "dhcp6relay started");
+ debug_printf(LOG_INFO, FNAME, "dhcp6relay started");
relay6_loop();
exit(0);
@@ -246,7 +246,7 @@ make_prefix(pstr0)
/* make a local copy for safety */
if (strlcpy(pstr, pstr0, sizeof (pstr)) >= sizeof (pstr)) {
- dprintf(LOG_WARNING, FNAME,
+ debug_printf(LOG_WARNING, FNAME,
"prefix string too long (maybe bogus): %s", pstr0);
return (NULL);
}
@@ -256,27 +256,27 @@ make_prefix(pstr0)
plen = 128; /* assumes it as a host prefix */
else {
if (p[1] == '\0') {
- dprintf(LOG_WARNING, FNAME,
+ debug_printf(LOG_WARNING, FNAME,
"no prefix length (ignored): %s", p + 1);
return (NULL);
}
plen = (int)strtoul(p + 1, &ep, 10);
if (*ep != '\0') {
- dprintf(LOG_WARNING, FNAME,
+ debug_printf(LOG_WARNING, FNAME,
"illegal prefix length (ignored): %s", p + 1);
return (NULL);
}
*p = '\0';
}
if (inet_pton(AF_INET6, pstr, &paddr) != 1) {
- dprintf(LOG_ERR, FNAME,
+ debug_printf(LOG_ERR, FNAME,
"inet_pton failed for %s", pstr);
return (NULL);
}
/* allocate a new entry */
if ((pent = (struct prefix_list *)malloc(sizeof (*pent))) == NULL) {
- dprintf(LOG_WARNING, FNAME, "memory allocation failed");
+ debug_printf(LOG_WARNING, FNAME, "memory allocation failed");
return (NULL); /* or abort? */
}
@@ -318,14 +318,14 @@ relay6_init(int ifnum, char *iflist[])
hints.ai_flags = AI_PASSIVE;
error = getaddrinfo(serveraddr, DH6PORT_UPSTREAM, &hints, &res);
if (error) {
- dprintf(LOG_ERR, FNAME, "getaddrinfo: %s",
+ debug_printf(LOG_ERR, FNAME, "getaddrinfo: %s",
gai_strerror(error));
goto failexit;
}
if (res->ai_family != PF_INET6 ||
res->ai_addrlen < sizeof (sa6_server)) {
/* this should be impossible, but check for safety */
- dprintf(LOG_ERR, FNAME,
+ debug_printf(LOG_ERR, FNAME,
"getaddrinfo returned a bogus address: %s",
strerror(errno));
goto failexit;
@@ -341,7 +341,7 @@ relay6_init(int ifnum, char *iflist[])
rmh.msg_iovlen = 1;
rmsgctllen = CMSG_SPACE(sizeof (struct in6_pktinfo));
if ((rmsgctlbuf = (char *)malloc(rmsgctllen)) == NULL) {
- dprintf(LOG_ERR, FNAME, "memory allocation failed");
+ debug_printf(LOG_ERR, FNAME, "memory allocation failed");
goto failexit;
}
@@ -355,13 +355,13 @@ relay6_init(int ifnum, char *iflist[])
hints.ai_flags = AI_PASSIVE;
error = getaddrinfo(NULL, DH6PORT_UPSTREAM, &hints, &res);
if (error) {
- dprintf(LOG_ERR, FNAME, "getaddrinfo: %s",
+ debug_printf(LOG_ERR, FNAME, "getaddrinfo: %s",
gai_strerror(error));
goto failexit;
}
csock = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
if (csock < 0) {
- dprintf(LOG_ERR, FNAME, "socket(csock): %s", strerror(errno));
+ debug_printf(LOG_ERR, FNAME, "socket(csock): %s", strerror(errno));
goto failexit;
}
if (csock > maxfd)
@@ -369,20 +369,20 @@ relay6_init(int ifnum, char *iflist[])
on = 1;
if (setsockopt(csock, SOL_SOCKET, SO_REUSEPORT,
&on, sizeof(on)) < 0) {
- dprintf(LOG_ERR, FNAME, "setsockopt(csock, SO_REUSEPORT): %s",
+ debug_printf(LOG_ERR, FNAME, "setsockopt(csock, SO_REUSEPORT): %s",
strerror(errno));
goto failexit;
}
#ifdef IPV6_V6ONLY
if (setsockopt(csock, IPPROTO_IPV6, IPV6_V6ONLY,
&on, sizeof (on)) < 0) {
- dprintf(LOG_ERR, FNAME, "setsockopt(csock, IPV6_V6ONLY): %s",
+ debug_printf(LOG_ERR, FNAME, "setsockopt(csock, IPV6_V6ONLY): %s",
strerror(errno));
goto failexit;
}
#endif
if (bind(csock, res->ai_addr, res->ai_addrlen) < 0) {
- dprintf(LOG_ERR, FNAME, "bind(csock): %s", strerror(errno));
+ debug_printf(LOG_ERR, FNAME, "bind(csock): %s", strerror(errno));
goto failexit;
}
freeaddrinfo(res);
@@ -390,14 +390,14 @@ relay6_init(int ifnum, char *iflist[])
#ifdef IPV6_RECVPKTINFO
if (setsockopt(csock, IPPROTO_IPV6, IPV6_RECVPKTINFO,
&on, sizeof (on)) < 0) {
- dprintf(LOG_ERR, FNAME, "setsockopt(IPV6_RECVPKTINFO): %s",
+ debug_printf(LOG_ERR, FNAME, "setsockopt(IPV6_RECVPKTINFO): %s",
strerror(errno));
goto failexit;
}
#else
if (setsockopt(csock, IPPROTO_IPV6, IPV6_PKTINFO,
&on, sizeof (on)) < 0) {
- dprintf(LOG_ERR, FNAME, "setsockopt(IPV6_PKTINFO): %s",
+ debug_printf(LOG_ERR, FNAME, "setsockopt(IPV6_PKTINFO): %s",
strerror(errno));
goto failexit;
}
@@ -406,7 +406,7 @@ relay6_init(int ifnum, char *iflist[])
hints.ai_flags = 0;
error = getaddrinfo(DH6ADDR_ALLAGENT, 0, &hints, &res2);
if (error) {
- dprintf(LOG_ERR, FNAME, "getaddrinfo: %s",
+ debug_printf(LOG_ERR, FNAME, "getaddrinfo: %s",
gai_strerror(error));
goto failexit;
}
@@ -422,21 +422,21 @@ relay6_init(int ifnum, char *iflist[])
ifd = (struct ifid_list *)malloc(sizeof (*ifd));
if (ifd == NULL) {
- dprintf(LOG_WARNING, FNAME,
+ debug_printf(LOG_WARNING, FNAME,
"memory allocation failed");
goto failexit;
}
memset(ifd, 0, sizeof (*ifd));
ifd->ifid = if_nametoindex(ifp);
if (ifd->ifid == 0) {
- dprintf(LOG_ERR, FNAME, "invalid interface %s", ifp);
+ debug_printf(LOG_ERR, FNAME, "invalid interface %s", ifp);
goto failexit;
}
mreq6.ipv6mr_interface = ifd->ifid;
if (setsockopt(csock, IPPROTO_IPV6, IPV6_JOIN_GROUP,
&mreq6, sizeof (mreq6))) {
- dprintf(LOG_ERR, FNAME,
+ debug_printf(LOG_ERR, FNAME,
"setsockopt(csock, IPV6_JOIN_GROUP): %s",
strerror(errno));
goto failexit;
@@ -451,7 +451,7 @@ relay6_init(int ifnum, char *iflist[])
*/
relayifid = if_nametoindex(relaydevice);
if (relayifid == 0)
- dprintf(LOG_ERR, FNAME, "invalid interface %s", relaydevice);
+ debug_printf(LOG_ERR, FNAME, "invalid interface %s", relaydevice);
/*
* We are not really sure if we need to listen on the downstream
* port to receive packets from servers. We'll need to clarify the
@@ -460,14 +460,14 @@ relay6_init(int ifnum, char *iflist[])
hints.ai_flags = AI_PASSIVE;
error = getaddrinfo(boundaddr, DH6PORT_DOWNSTREAM, &hints, &res);
if (error) {
- dprintf(LOG_ERR, FNAME, "getaddrinfo: %s",
+ debug_printf(LOG_ERR, FNAME, "getaddrinfo: %s",
gai_strerror(error));
goto failexit;
}
memcpy(&sa6_client, res->ai_addr, sizeof (sa6_client));
ssock = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
if (ssock < 0) {
- dprintf(LOG_ERR, FNAME, "socket(outsock): %s",
+ debug_printf(LOG_ERR, FNAME, "socket(outsock): %s",
strerror(error));
goto failexit;
}
@@ -480,7 +480,7 @@ relay6_init(int ifnum, char *iflist[])
*/
if (setsockopt(ssock, SOL_SOCKET, SO_REUSEPORT,
&on, sizeof (on)) < 0) {
- dprintf(LOG_ERR, FNAME, "setsockopt(ssock, SO_REUSEPORT): %s",
+ debug_printf(LOG_ERR, FNAME, "setsockopt(ssock, SO_REUSEPORT): %s",
strerror(errno));
goto failexit;
}
@@ -488,13 +488,13 @@ relay6_init(int ifnum, char *iflist[])
#ifdef IPV6_V6ONLY
if (setsockopt(ssock, IPPROTO_IPV6, IPV6_V6ONLY,
&on, sizeof (on)) < 0) {
- dprintf(LOG_ERR, FNAME, "setsockopt(ssock, IPV6_V6ONLY): %s",
+ debug_printf(LOG_ERR, FNAME, "setsockopt(ssock, IPV6_V6ONLY): %s",
strerror(errno));
goto failexit;
}
#endif
if (bind(ssock, res->ai_addr, res->ai_addrlen) < 0) {
- dprintf(LOG_ERR, FNAME, "bind(ssock): %s", strerror(errno));
+ debug_printf(LOG_ERR, FNAME, "bind(ssock): %s", strerror(errno));
goto failexit;
}
freeaddrinfo(res);
@@ -503,21 +503,21 @@ relay6_init(int ifnum, char *iflist[])
#ifdef IPV6_RECVPKTINFO
if (setsockopt(ssock, IPPROTO_IPV6, IPV6_RECVPKTINFO,
&on, sizeof (on)) < 0) {
- dprintf(LOG_ERR, FNAME, "setsockopt(IPV6_RECVPKTINFO): %s",
+ debug_printf(LOG_ERR, FNAME, "setsockopt(IPV6_RECVPKTINFO): %s",
strerror(errno));
goto failexit;
}
#else
if (setsockopt(ssock, IPPROTO_IPV6, IPV6_PKTINFO,
&on, sizeof (on)) < 0) {
- dprintf(LOG_ERR, FNAME, "setsockopt(IPV6_PKTINFO): %s",
+ debug_printf(LOG_ERR, FNAME, "setsockopt(IPV6_PKTINFO): %s",
strerror(errno));
goto failexit;
}
#endif
if (signal(SIGTERM, relay6_signal) == SIG_ERR) {
- dprintf(LOG_WARNING, FNAME, "failed to set signal: %s",
+ debug_printf(LOG_WARNING, FNAME, "failed to set signal: %s",
strerror(errno));
exit(1);
}
@@ -605,15 +605,15 @@ relay6_recv(s, fromclient)
rmh.msg_namelen = sizeof (from);
if ((len = recvmsg(s, &rmh, 0)) < 0) {
- dprintf(LOG_WARNING, FNAME, "recvmsg: %s", strerror(errno));
+ debug_printf(LOG_WARNING, FNAME, "recvmsg: %s", strerror(errno));
return;
}
- dprintf(LOG_DEBUG, FNAME, "from %s, size %d",
+ debug_printf(LOG_DEBUG, FNAME, "from %s, size %d",
addr2str((struct sockaddr *)&from), len);
if (((struct sockaddr *)&from)->sa_family != AF_INET6) {
- dprintf(LOG_WARNING, FNAME,
+ debug_printf(LOG_WARNING, FNAME,
"non-IPv6 packet is received (AF %d) ",
((struct sockaddr *)&from)->sa_family);
return;
@@ -632,7 +632,7 @@ relay6_recv(s, fromclient)
}
}
if (pi == NULL) {
- dprintf(LOG_WARNING, FNAME,
+ debug_printf(LOG_WARNING, FNAME,
"failed to get the arrival interface");
return;
}
@@ -649,7 +649,7 @@ relay6_recv(s, fromclient)
if (ifd == NULL && pi->ipi6_ifindex != relayifid)
return;
if (if_indextoname(pi->ipi6_ifindex, ifname) == NULL) {
- dprintf(LOG_WARNING, FNAME,
+ debug_printf(LOG_WARNING, FNAME,
"if_indextoname(id = %d): %s",
pi->ipi6_ifindex, strerror(errno));
return;
@@ -657,12 +657,12 @@ relay6_recv(s, fromclient)
/* packet validation */
if (len < sizeof (*dh6)) {
- dprintf(LOG_INFO, FNAME, "short packet (%d bytes)", len);
+ debug_printf(LOG_INFO, FNAME, "short packet (%d bytes)", len);
return;
}
dh6 = (struct dhcp6 *)rdatabuf;
- dprintf(LOG_DEBUG, FNAME, "received %s from %s",
+ debug_printf(LOG_DEBUG, FNAME, "received %s from %s",
dhcp6msgstr(dh6->dh6_msgtype), addr2str((struct sockaddr *)&from));
/*
@@ -694,7 +694,7 @@ relay6_recv(s, fromclient)
(struct sockaddr *)&from);
break;
default:
- dprintf(LOG_INFO, FNAME,
+ debug_printf(LOG_INFO, FNAME,
"unexpected message (%s) on the client side "
"from %s", dhcp6msgstr(dh6->dh6_msgtype),
addr2str((struct sockaddr *)&from));
@@ -702,7 +702,7 @@ relay6_recv(s, fromclient)
}
} else {
if (dh6->dh6_msgtype != DH6_RELAY_REPLY) {
- dprintf(LOG_INFO, FNAME,
+ debug_printf(LOG_INFO, FNAME,
"unexpected message (%s) on the server side"
"from %s", dhcp6msgstr(dh6->dh6_msgtype),
addr2str((struct sockaddr *)&from));
@@ -787,7 +787,7 @@ relay_to_server(dh6, len, from, ifname, ifid)
/* Relay message */
if ((optinfo.relaymsg_msg = malloc(len)) == NULL) {
- dprintf(LOG_WARNING, FNAME,
+ debug_printf(LOG_WARNING, FNAME,
"failed to allocate memory to copy the original packet: "
"%s", strerror(errno));
goto out;
@@ -797,7 +797,7 @@ relay_to_server(dh6, len, from, ifname, ifid)
/* Interface-id. We always use this option. */
if ((optinfo.ifidopt_id = malloc(sizeof (ifid))) == NULL) {
- dprintf(LOG_WARNING, FNAME,
+ debug_printf(LOG_WARNING, FNAME,
"failed to allocate memory for IFID: %s", strerror(errno));
goto out;
}
@@ -823,7 +823,7 @@ relay_to_server(dh6, len, from, ifname, ifid)
break;
}
if (p == NULL) {
- dprintf(LOG_NOTICE, FNAME,
+ debug_printf(LOG_NOTICE, FNAME,
"failed to find a global address on %s", ifname);
/*
@@ -848,7 +848,7 @@ relay_to_server(dh6, len, from, ifname, ifid)
* [RFC3315 Section 20.1.2]
*/
if (dh6relay0->dh6relay_hcnt >= DHCP6_RELAY_HOP_COUNT_LIMIT) {
- dprintf(LOG_INFO, FNAME, "too many relay forwardings");
+ debug_printf(LOG_INFO, FNAME, "too many relay forwardings");
goto out;
}
@@ -871,7 +871,7 @@ relay_to_server(dh6, len, from, ifname, ifid)
(struct dhcp6opt *)(dh6relay + 1),
(struct dhcp6opt *)(relaybuf + sizeof (relaybuf)),
&optinfo)) < 0) {
- dprintf(LOG_INFO, FNAME,
+ debug_printf(LOG_INFO, FNAME,
"failed to construct relay options");
goto out;
}
@@ -892,22 +892,22 @@ relay_to_server(dh6, len, from, ifname, ifid)
pktinfo.ipi6_ifindex = relayifid;
if (make_msgcontrol(&mh, ctlbuf, sizeof (ctlbuf),
&pktinfo, mhops)) {
- dprintf(LOG_WARNING, FNAME,
+ debug_printf(LOG_WARNING, FNAME,
"failed to make message control data");
goto out;
}
}
if ((cc = sendmsg(ssock, &mh, 0)) < 0) {
- dprintf(LOG_WARNING, FNAME,
+ debug_printf(LOG_WARNING, FNAME,
"sendmsg %s failed: %s",
addr2str((struct sockaddr *)&sa6_server), strerror(errno));
} else if (cc != relaylen) {
- dprintf(LOG_WARNING, FNAME,
+ debug_printf(LOG_WARNING, FNAME,
"failed to send a complete packet to %s",
addr2str((struct sockaddr *)&sa6_server));
} else {
- dprintf(LOG_DEBUG, FNAME,
+ debug_printf(LOG_DEBUG, FNAME,
"relay a message to a server %s",
addr2str((struct sockaddr *)&sa6_server));
}
@@ -934,7 +934,7 @@ relay_to_client(dh6relay, len, from)
static struct iovec iov[2];
char ctlbuf[CMSG_SPACE(sizeof (struct in6_pktinfo))];
- dprintf(LOG_DEBUG, FNAME,
+ debug_printf(LOG_DEBUG, FNAME,
"dhcp6 relay reply: hop=%d, linkaddr=%s, peeraddr=%s",
dh6relay->dh6relay_hcnt,
in6addr2str(&dh6relay->dh6relay_linkaddr, 0),
@@ -946,20 +946,20 @@ relay_to_client(dh6relay, len, from)
dhcp6_init_options(&optinfo);
if (dhcp6_get_options((struct dhcp6opt *)(dh6relay + 1),
(struct dhcp6opt *)((char *)dh6relay + len), &optinfo) < 0) {
- dprintf(LOG_INFO, FNAME, "failed to parse options");
+ debug_printf(LOG_INFO, FNAME, "failed to parse options");
return;
}
/* A relay reply message must include a relay message option */
if (optinfo.relaymsg_msg == NULL) {
- dprintf(LOG_INFO, FNAME, "relay reply message from %s "
+ debug_printf(LOG_INFO, FNAME, "relay reply message from %s "
"without a relay message", addr2str(from));
goto out;
}
/* minimum validation for the inner message */
if (optinfo.relaymsg_len < sizeof (struct dhcp6)) {
- dprintf(LOG_INFO, FNAME, "short relay message from %s",
+ debug_printf(LOG_INFO, FNAME, "short relay message from %s",
addr2str(from));
goto out;
}
@@ -971,7 +971,7 @@ relay_to_client(dh6relay, len, from)
ifid = 0;
if (optinfo.ifidopt_id) {
if (optinfo.ifidopt_len != sizeof (ifid)) {
- dprintf(LOG_INFO, FNAME,
+ debug_printf(LOG_INFO, FNAME,
"unexpected length (%d) for Interface ID from %s",
optinfo.ifidopt_len, addr2str(from));
goto out;
@@ -981,13 +981,13 @@ relay_to_client(dh6relay, len, from)
/* validation for ID */
if ((if_indextoname(ifid, ifnamebuf)) == NULL) {
- dprintf(LOG_INFO, FNAME,
+ debug_printf(LOG_INFO, FNAME,
"invalid interface ID: %x", ifid);
goto out;
}
}
} else {
- dprintf(LOG_INFO, FNAME,
+ debug_printf(LOG_INFO, FNAME,
"Interface ID is not included from %s", addr2str(from));
/*
* the responding server should be buggy, but we deal with it.
@@ -1005,7 +1005,7 @@ relay_to_client(dh6relay, len, from)
}
if (ifid == 0) {
- dprintf(LOG_INFO, FNAME, "failed to determine relay link");
+ debug_printf(LOG_INFO, FNAME, "failed to determine relay link");
goto out;
}
@@ -1036,22 +1036,22 @@ relay_to_client(dh6relay, len, from)
memset(&pktinfo, 0, sizeof (pktinfo));
pktinfo.ipi6_ifindex = ifid;
if (make_msgcontrol(&mh, ctlbuf, sizeof (ctlbuf), &pktinfo, 0)) {
- dprintf(LOG_WARNING, FNAME,
+ debug_printf(LOG_WARNING, FNAME,
"failed to make message control data");
goto out;
}
/* send packet */
if ((cc = sendmsg(csock, &mh, 0)) < 0) {
- dprintf(LOG_WARNING, FNAME,
+ debug_printf(LOG_WARNING, FNAME,
"sendmsg to %s failed: %s",
addr2str((struct sockaddr *)&peer), strerror(errno));
} else if (cc != optinfo.relaymsg_len) {
- dprintf(LOG_WARNING, FNAME,
+ debug_printf(LOG_WARNING, FNAME,
"failed to send a complete packet to %s",
addr2str((struct sockaddr *)&peer));
} else {
- dprintf(LOG_DEBUG, FNAME,
+ debug_printf(LOG_DEBUG, FNAME,
"relay a message to a client %s",
addr2str((struct sockaddr *)&peer));
}