summaryrefslogtreecommitdiffhomepage
path: root/src/odhcpd.c
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2015-07-14 17:56:38 +0200
committerSteven Barth <steven@midlink.org>2015-07-14 17:56:38 +0200
commit01bfec4c333d906ca4d2230c804dfe361779f42f (patch)
tree58021fdf40cf8d918b1b85b108eecbbf945e1c63 /src/odhcpd.c
parent10fc5665634151fbd8bfd6503db25a4652a0839a (diff)
Remove unsolicited unicast RAs, adjust intervals
Diffstat (limited to 'src/odhcpd.c')
-rw-r--r--src/odhcpd.c55
1 files changed, 0 insertions, 55 deletions
diff --git a/src/odhcpd.c b/src/odhcpd.c
index c411542..5774a4f 100644
--- a/src/odhcpd.c
+++ b/src/odhcpd.c
@@ -188,61 +188,6 @@ ssize_t odhcpd_send(int socket, struct sockaddr_in6 *dest,
}
-int odhcpd_iterate_interface_neighbors(const struct interface *iface,
- void(*cb_neigh)(const struct in6_addr *addr,
- const struct interface *iface, void *data), void *data)
-{
- struct {
- struct nlmsghdr nhm;
- struct ndmsg ndm;
- } req = {{sizeof(req), RTM_GETNEIGH, NLM_F_REQUEST | NLM_F_DUMP,
- ++rtnl_seq, 0}, {AF_INET6, 0, 0, iface->ifindex, 0, 0, 0}};
-
- if (send(rtnl_socket, &req, sizeof(req), 0) < (ssize_t)sizeof(req))
- return -1;
-
- uint8_t buf[8192];
- ssize_t len = 0;
-
- for (struct nlmsghdr *nhm = NULL; ; nhm = NLMSG_NEXT(nhm, len)) {
- while (len < 0 || !NLMSG_OK(nhm, (size_t)len)) {
- len = recv(rtnl_socket, buf, sizeof(buf), 0);
- nhm = (struct nlmsghdr*)buf;
- if (len < 0 || !NLMSG_OK(nhm, (size_t)len)) {
- if (errno == EINTR)
- continue;
- else
- return -1;
- }
- }
-
- if (nhm->nlmsg_type != RTM_NEWNEIGH)
- break;
-
- struct ndmsg *ndm = NLMSG_DATA(nhm);
- if (ndm->ndm_ifindex != iface->ifindex ||
- !(ndm->ndm_state & (NUD_STALE | NUD_REACHABLE | NUD_PERMANENT)))
- continue;
-
- struct rtattr *rta = (struct rtattr*)&ndm[1];
- size_t alen = NLMSG_PAYLOAD(nhm, sizeof(*ndm));
-
- while (RTA_OK(rta, alen)) {
- if (rta->rta_type == NDA_DST &&
- RTA_PAYLOAD(rta) == sizeof(struct in6_addr)) {
- cb_neigh(RTA_DATA(rta), iface, data);
- break;
- } else {
- rta = RTA_NEXT(rta, alen);
- }
- }
-
- }
-
- return 0;
-}
-
-
// Detect an IPV6-address currently assigned to the given interface
ssize_t odhcpd_get_interface_addresses(int ifindex,
struct odhcpd_ipaddr *addrs, size_t cnt)