mn_socket; linux does not have multicast enabled for loopback itf by default.


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/8ab70737
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/8ab70737
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/8ab70737

Branch: refs/heads/develop
Commit: 8ab70737e2987ff6614ebd19a62cbd7f8ac27ad3
Parents: 097535b
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Fri Sep 16 15:20:16 2016 -0700
Committer: Marko Kiiskila <ma...@runtime.io>
Committed: Fri Sep 16 15:23:01 2016 -0700

----------------------------------------------------------------------
 sys/mn_socket/src/test/mn_sock_test.c | 25 +++++++++----------------
 1 file changed, 9 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/8ab70737/sys/mn_socket/src/test/mn_sock_test.c
----------------------------------------------------------------------
diff --git a/sys/mn_socket/src/test/mn_sock_test.c 
b/sys/mn_socket/src/test/mn_sock_test.c
index d4276a3..7ab4c3b 100644
--- a/sys/mn_socket/src/test/mn_sock_test.c
+++ b/sys/mn_socket/src/test/mn_sock_test.c
@@ -21,6 +21,7 @@
 #include <string.h>
 
 #include <os/os.h>
+#include <os/endian.h>
 #include <os/../../src/test/os_test_priv.h>
 #include <testutil/testutil.h>
 
@@ -601,13 +602,9 @@ sock_udp_ll(void)
 }
 
 static int
-sock_find_loopback_if(void)
+sock_find_multicast_if(void)
 {
     struct mn_itf itf;
-    struct mn_itf_addr itf_addr;
-    struct mn_in_addr addr127;
-
-    mn_inet_pton(MN_PF_INET, "127.0.0.1", &addr127);
 
     memset(&itf, 0, sizeof(itf));
 
@@ -615,15 +612,11 @@ sock_find_loopback_if(void)
         if (mn_itf_getnext(&itf)) {
             break;
         }
-        memset(&itf_addr, 0, sizeof(itf_addr));
-        while (1) {
-            if (mn_itf_addr_getnext(&itf, &itf_addr)) {
-                break;
-            }
-            if (itf_addr.mifa_family == MN_AF_INET &&
-              !memcmp(&itf_addr.mifa_addr, &addr127, sizeof(addr127))) {
-                return itf.mif_idx;
-            }
+        if ((itf.mif_flags & MN_ITF_F_UP) == 0) {
+            continue;
+        }
+        if (itf.mif_flags & MN_ITF_F_MULTICAST) {
+            return itf.mif_idx;
         }
     }
     return -1;
@@ -649,7 +642,7 @@ sock_udp_mcast_v4(void)
     char data[] = "1234567890";
     int rc;
     struct mn_mreq mreq;
-    loop_if_idx = sock_find_loopback_if();
+    loop_if_idx = sock_find_multicast_if();
     TEST_ASSERT(loop_if_idx > 0);
 
     msin.msin_family = MN_AF_INET;
@@ -756,7 +749,7 @@ sock_udp_mcast_v6(void)
         0, 0, 0, 2
     };
 
-    loop_if_idx = sock_find_loopback_if();
+    loop_if_idx = sock_find_multicast_if();
     TEST_ASSERT(loop_if_idx > 0);
 
     msin6.msin6_family = MN_AF_INET6;

Reply via email to