diff options
Diffstat (limited to 'dhcp6relay.c')
-rw-r--r-- | dhcp6relay.c | 118 |
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)); } |