# HG changeset patch # User Hajime Tazaki # Date 1334070696 -32400 # Node ID 1c3c791066b8713db8ddd0fa345a58385412b3d1 # Parent 26675cdba3ce5d38582776732e41a81d7bb4fec2 if_nmaetoindex update diff -r 26675cdba3ce -r 1c3c791066b8 120410-dce-umip-support.patch --- a/120410-dce-umip-support.patch Tue Apr 10 18:07:08 2012 +0900 +++ b/120410-dce-umip-support.patch Wed Apr 11 00:11:36 2012 +0900 @@ -2,7 +2,7 @@ diff -r e503e546d382 model/dce-fd.cc --- a/model/dce-fd.cc Mon Apr 09 10:03:33 2012 +0900 -+++ b/model/dce-fd.cc Tue Apr 10 14:47:37 2012 +0900 ++++ b/model/dce-fd.cc Wed Apr 11 00:10:58 2012 +0900 @@ -367,11 +367,30 @@ } @@ -36,7 +36,7 @@ Thread *current = Current (); diff -r e503e546d382 model/dce-manager.cc --- a/model/dce-manager.cc Mon Apr 09 10:03:33 2012 +0900 -+++ b/model/dce-manager.cc Tue Apr 10 14:47:37 2012 +0900 ++++ b/model/dce-manager.cc Wed Apr 11 00:10:58 2012 +0900 @@ -1096,6 +1096,22 @@ libpthread_setup = (void (*)(const struct Libc *))(symbol); libpthread_setup (libc); @@ -62,7 +62,7 @@ diff -r e503e546d382 model/dce-poll.cc --- a/model/dce-poll.cc Mon Apr 09 10:03:33 2012 +0900 -+++ b/model/dce-poll.cc Tue Apr 10 14:47:37 2012 +0900 ++++ b/model/dce-poll.cc Wed Apr 11 00:10:58 2012 +0900 @@ -180,7 +180,12 @@ } } @@ -79,7 +79,7 @@ return -1; diff -r e503e546d382 model/dce-signal.cc --- a/model/dce-signal.cc Mon Apr 09 10:03:33 2012 +0900 -+++ b/model/dce-signal.cc Tue Apr 10 14:47:37 2012 +0900 ++++ b/model/dce-signal.cc Wed Apr 11 00:10:58 2012 +0900 @@ -3,6 +3,7 @@ #include "process.h" #include "ns3/log.h" @@ -109,7 +109,7 @@ Thread *current = Current (); diff -r e503e546d382 model/dce-signal.h --- a/model/dce-signal.h Mon Apr 09 10:03:33 2012 +0900 -+++ b/model/dce-signal.h Tue Apr 10 14:47:37 2012 +0900 ++++ b/model/dce-signal.h Wed Apr 11 00:10:58 2012 +0900 @@ -17,6 +17,7 @@ int dce_pthread_kill (pthread_t thread, int sig); void dce_abort (); @@ -120,7 +120,7 @@ } diff -r e503e546d382 model/dce-time.cc --- a/model/dce-time.cc Mon Apr 09 10:03:33 2012 +0900 -+++ b/model/dce-time.cc Tue Apr 10 14:47:37 2012 +0900 ++++ b/model/dce-time.cc Wed Apr 11 00:10:58 2012 +0900 @@ -54,3 +54,12 @@ return asctime_r (tm, Current ()->process->asctime_result); @@ -136,7 +136,7 @@ +} diff -r e503e546d382 model/dce-time.h --- a/model/dce-time.h Mon Apr 09 10:03:33 2012 +0900 -+++ b/model/dce-time.h Tue Apr 10 14:47:37 2012 +0900 ++++ b/model/dce-time.h Wed Apr 11 00:10:58 2012 +0900 @@ -3,6 +3,7 @@ #include "sys/dce-time.h" @@ -156,7 +156,7 @@ } diff -r e503e546d382 model/dce.cc --- a/model/dce.cc Mon Apr 09 10:03:33 2012 +0900 -+++ b/model/dce.cc Tue Apr 10 14:47:37 2012 +0900 ++++ b/model/dce.cc Wed Apr 11 00:10:58 2012 +0900 @@ -22,6 +22,8 @@ #include #include @@ -166,27 +166,65 @@ #include "dce-random.h" #include "net/dce-if.h" #include "ns3/node.h" -@@ -639,6 +641,43 @@ +@@ -30,6 +32,7 @@ + #include "ns3/names.h" + #include "ns3/random-variable.h" + #include "ns3/ipv4-l3-protocol.h" ++#include "socket-fd-factory.h" + + NS_LOG_COMPONENT_DEFINE ("Dce"); + +@@ -639,20 +642,60 @@ } unsigned dce_if_nametoindex (const char *ifname) { -+ struct ifreq ifr; -+ int fd = dce_socket (AF_INET, SOCK_DGRAM, 0); -+ if (fd < 0) +- int index = 0; +- Ptr node = Current ()->process->manager->GetObject (); +- Ptr ipv4 = node->GetObject (); ++ Thread *current = Current (); ++ Ptr factory = 0; ++ factory = current->process->manager->GetObject (); + +- for (uint32_t i = 0; i < node->GetNDevices (); ++i) ++ if (factory->GetInstanceTypeId () == TypeId::LookupByName ("ns3::LinuxSocketFdFactory")) + { +- Ptr dev = node->GetDevice (i); +- if (ifname == Names::FindName (dev)) ++ struct ifreq ifr; ++ int fd = dce_socket (AF_INET, SOCK_DGRAM, 0); ++ if (fd < 0) + { +- index = ipv4->GetInterfaceForDevice (dev); +- return index; ++ return 0; + } ++ ++ strncpy (ifr.ifr_name, ifname, sizeof (ifr.ifr_name)); ++ if (dce_ioctl (fd, SIOCGIFINDEX, (char *)&ifr) < 0) ++ { ++ current->err = errno; ++ return -1; ++ } ++ return ifr.ifr_ifindex; + } +- return 0; ++ else + { ++ int index = 0; ++ Ptr node = Current ()->process->manager->GetObject (); ++ Ptr ipv4 = node->GetObject (); ++ ++ for (uint32_t i = 0; i < node->GetNDevices (); ++i) ++ { ++ Ptr dev = node->GetDevice (i); ++ if (ifname == Names::FindName (dev)) ++ { ++ index = ipv4->GetInterfaceForDevice (dev); ++ return index; ++ } ++ } + return 0; + } -+ -+ strncpy (ifr.ifr_name, ifname, sizeof (ifr.ifr_name)); -+ if (dce_ioctl (fd, SIOCGIFINDEX, (char *)&ifr) < 0) -+ { -+ // int saved_errno = errno; -+ // close_not_cancel_no_status (fd); -+ // if (saved_errno == EINVAL) -+ // __set_errno (ENOSYS); -+ return 0; -+ } -+ return ifr.ifr_ifindex; +} +char *dce_if_indextoname (unsigned ifindex, char *ifname) +{ @@ -203,22 +241,10 @@ + return 0; + } + return strncpy (ifname, ifr.ifr_name, IFNAMSIZ); -+} -+#if 0 -+unsigned dce_if_nametoindex (const char *ifname) -+{ - int index = 0; - Ptr node = Current ()->process->manager->GetObject (); - Ptr ipv4 = node->GetObject (); -@@ -654,6 +693,7 @@ - } - return 0; } -+#endif pid_t dce_fork (void) { - Thread *thread = Current (); -@@ -849,6 +889,21 @@ +@@ -849,6 +892,21 @@ static char loc[] = ""; return loc; } @@ -242,7 +268,7 @@ { diff -r e503e546d382 model/elf-cache.cc --- a/model/elf-cache.cc Mon Apr 09 10:03:33 2012 +0900 -+++ b/model/elf-cache.cc Tue Apr 10 14:47:37 2012 +0900 ++++ b/model/elf-cache.cc Wed Apr 11 00:10:58 2012 +0900 @@ -26,6 +26,9 @@ overriden.from = "libpthread.so.0"; overriden.to = "libpthread-ns3.so"; @@ -255,7 +281,7 @@ std::string diff -r e503e546d382 model/libc-dce.cc --- a/model/libc-dce.cc Mon Apr 09 10:03:33 2012 +0900 -+++ b/model/libc-dce.cc Tue Apr 10 14:47:37 2012 +0900 ++++ b/model/libc-dce.cc Wed Apr 11 00:10:58 2012 +0900 @@ -52,6 +52,7 @@ #include #include @@ -266,7 +292,7 @@ #include diff -r e503e546d382 model/libc-ns3.h --- a/model/libc-ns3.h Mon Apr 09 10:03:33 2012 +0900 -+++ b/model/libc-ns3.h Tue Apr 10 14:47:37 2012 +0900 ++++ b/model/libc-ns3.h Wed Apr 11 00:10:58 2012 +0900 @@ -73,6 +73,7 @@ NATIVE (ntohl) NATIVE (ntohs) @@ -343,7 +369,7 @@ NATIVE (__sigsetjmp) diff -r e503e546d382 model/librt-ns3.version --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/model/librt-ns3.version Tue Apr 10 14:47:37 2012 +0900 ++++ b/model/librt-ns3.version Wed Apr 11 00:10:58 2012 +0900 @@ -0,0 +1,4 @@ +NS3 { +global: @@ -351,7 +377,7 @@ +}; diff -r e503e546d382 model/linux-socket-fd-factory.cc --- a/model/linux-socket-fd-factory.cc Mon Apr 09 10:03:33 2012 +0900 -+++ b/model/linux-socket-fd-factory.cc Tue Apr 10 14:47:37 2012 +0900 ++++ b/model/linux-socket-fd-factory.cc Wed Apr 11 00:10:58 2012 +0900 @@ -537,6 +537,8 @@ this)); Set (".net.ipv4.conf.all.forwarding", "1"); @@ -363,7 +389,7 @@ { diff -r e503e546d382 model/linux-socket-fd.cc --- a/model/linux-socket-fd.cc Mon Apr 09 10:03:33 2012 +0900 -+++ b/model/linux-socket-fd.cc Tue Apr 10 14:47:37 2012 +0900 ++++ b/model/linux-socket-fd.cc Wed Apr 11 00:10:58 2012 +0900 @@ -177,6 +177,7 @@ return 0; break; @@ -374,7 +400,7 @@ return -1; diff -r e503e546d382 model/net/dce-if.h --- a/model/net/dce-if.h Mon Apr 09 10:03:33 2012 +0900 -+++ b/model/net/dce-if.h Tue Apr 10 14:47:37 2012 +0900 ++++ b/model/net/dce-if.h Wed Apr 11 00:10:58 2012 +0900 @@ -7,6 +7,7 @@ #endif @@ -385,7 +411,7 @@ #ifdef __cplusplus diff -r e503e546d382 model/ns3-socket-fd-factory.cc --- a/model/ns3-socket-fd-factory.cc Mon Apr 09 10:03:33 2012 +0900 -+++ b/model/ns3-socket-fd-factory.cc Tue Apr 10 14:47:37 2012 +0900 ++++ b/model/ns3-socket-fd-factory.cc Wed Apr 11 00:10:58 2012 +0900 @@ -142,7 +142,8 @@ } else @@ -398,7 +424,7 @@ return socket; diff -r e503e546d382 model/sys/dce-socket.h --- a/model/sys/dce-socket.h Mon Apr 09 10:03:33 2012 +0900 -+++ b/model/sys/dce-socket.h Tue Apr 10 14:47:37 2012 +0900 ++++ b/model/sys/dce-socket.h Wed Apr 11 00:10:58 2012 +0900 @@ -28,6 +28,7 @@ ssize_t dce_sendmsg(int s, const struct msghdr *msg, int flags); int dce_getsockname(int s, struct sockaddr *name, socklen_t *namelen); @@ -409,7 +435,7 @@ } diff -r e503e546d382 wscript --- a/wscript Mon Apr 09 10:03:33 2012 +0900 -+++ b/wscript Tue Apr 10 14:47:37 2012 +0900 ++++ b/wscript Wed Apr 11 00:10:58 2012 +0900 @@ -26,7 +26,7 @@ ns3waf.check_modules(conf, ['point-to-point', 'tap-bridge', 'netanim'], mandatory = False) ns3waf.check_modules(conf, ['wifi', 'point-to-point', 'csma', 'mobility'], mandatory = False)