set promiscuous and noarp modes
authorMazet Laurent <laurent.mazet@thalesgroup.com>
Thu, 26 Jun 2025 10:22:11 +0000 (12:22 +0200)
committerMazet Laurent <laurent.mazet@thalesgroup.com>
Thu, 26 Jun 2025 10:22:11 +0000 (12:22 +0200)
morep.c

diff --git a/morep.c b/morep.c
index d30d11861399673982b77ac0e39227906d2c508d..41e0662d9d7b924932be76650fef505e04a77dad 100644 (file)
--- a/morep.c
+++ b/morep.c
@@ -336,6 +336,12 @@ int MOREP_Connect (char *url)
         VERBOSE (morep, ERROR, PRINTF ("can't get mac address for '%s'\n", addr.ifname));
         return -1;
     }
+    struct ifreq ifr = {0};
+    strncpy (ifr.ifr_name, addr.ifname, sizeof (ifr.ifr_name));
+    ifr.ifr_flags |= IFF_NOARP | IFF_PROMISC | IFF_UP;
+    if (ioctl (sock, SIOCSIFFLAGS, &ifr) != 0) {
+        VERBOSE (morep, WARNING, PRINTF ("can't set interface '%s' in promiscuous mode (%s)\n", addr.ifname, strerror (errno)));
+    }
 
     /* bind socket */
     if (bind (sock, (struct sockaddr *)&sock_addr, sizeof (sock_addr)) != 0) {