chiark / gitweb /
resolved: simplify detection of packets from the loopback device
[elogind.git] / src / resolve / resolved-manager.c
index 74f4ad5dba40c3494bf51675b03270724a678d6d..c4a5b08773995b26b7c123f66f40fc703b52f6e5 100644 (file)
@@ -960,7 +960,7 @@ int manager_recv(Manager *m, int fd, DnsProtocol protocol, DnsPacket **ret) {
          * device if the packet came from the local host since it
          * avoids the routing table in such a case. Let's unset the
          * interface index in such a case. */
-        if (p->ifindex > 0 && manager_ifindex_is_loopback(m, p->ifindex) != 0)
+        if (p->ifindex == LOOPBACK_IFINDEX)
                 p->ifindex = 0;
 
         /* If we don't know the interface index still, we look for the
@@ -1695,26 +1695,6 @@ fail:
         return r;
 }
 
-/* lo having ifindex 1 is hardcoded in the kernel */
-#define LOOPBACK_IFINDEX 1
-
-int manager_ifindex_is_loopback(Manager *m, int ifindex) {
-        Link *l;
-        assert(m);
-
-        if (ifindex <= 0)
-                return -EINVAL;
-
-        l = hashmap_get(m->links, INT_TO_PTR(ifindex));
-        if (!l)
-                /* in case we don't yet track the link, rely on the hardcoded value */
-                return ifindex == LOOPBACK_IFINDEX;
-        else if (l->flags & IFF_LOOPBACK)
-                return 1;
-
-        return 0;
-}
-
 int manager_find_ifindex(Manager *m, int family, const union in_addr_union *in_addr) {
         LinkAddress *a;