Need Help!

Jeff Mo mo0118 at gmail.com
Sun Aug 17 00:11:11 UTC 2008


Dear All ,

After I run the following commands three times,

      1 ifconfig gre0 create
      2 ifconfig gre0 tunnel 10.101.1.1 10.101.1.2 netmask 255.255.255.255
      3 ifconfig gre0 destroy

I found something weird:

   1. in /var/log/messages , line 907 , there should be TAILQ_REMOVE because
   of  ifconfig gre0 destroy, but nothing happened.
   2. when i do the command second time, ia1=0xc2df1600 supposed not be
   there.
   3. Some thing wrong with line 914,915,920,921,931,932,937,938
   4. does "ifconfig gre0 destroy" causes TAILQ_REMOVE be called?

Please nicely give me some comments.

Thanks and Regards
Jeff

/var/log/messages

first time

    895 Aug 16 16:30:11 JeffMo kernel: TAILQ_INSERT_TAIL:ia=0xc2df1600
    896 Aug 16 16:30:11 JeffMo kernel:
TAILQ_INSERT_TAIL:ia->ia_ifp=0xc27d6c00
    897 Aug 16 16:30:11 JeffMo kernel: before TAILQ_FOREACH:ia1=0xc28e6b00
    898 Aug 16 16:30:11 JeffMo kernel: before
TAILQ_FOREACH:ia1->ia_ifp=0xc2824400
    899 Aug 16 16:30:11 JeffMo kernel: before TAILQ_FOREACH:ia1=0xc298ca00
    900 Aug 16 16:30:11 JeffMo kernel: before
TAILQ_FOREACH:ia1->ia_ifp=0xc27d6000
    901 Aug 16 16:30:11 JeffMo kernel: after TAILQ_FOREACH:ia1=0xc28e6b00
    902 Aug 16 16:30:11 JeffMo kernel: after
TAILQ_FOREACH:ia1->ia_ifp=0xc2824400
    903 Aug 16 16:30:11 JeffMo kernel: after TAILQ_FOREACH:ia1=0xc298ca00
    904 Aug 16 16:30:11 JeffMo kernel: after
TAILQ_FOREACH:ia1->ia_ifp=0xc27d6000
    905 Aug 16 16:30:11 JeffMo kernel: after TAILQ_FOREACH:ia1=0xc2df1600
    906 Aug 16 16:30:11 JeffMo kernel: after
TAILQ_FOREACH:ia1->ia_ifp=0xc27d6c00
    907 Aug 16 16:30:11 JeffMo kernel:

second time

    908 Aug 16 16:30:34 JeffMo kernel: TAILQ_INSERT_TAIL:ia=0xc3144d00
    909 Aug 16 16:30:34 JeffMo kernel:
TAILQ_INSERT_TAIL:ia->ia_ifp=0xc27d1c00
    910 Aug 16 16:30:34 JeffMo kernel: before TAILQ_FOREACH:ia1=0xc28e6b00
    911 Aug 16 16:30:34 JeffMo kernel: before
TAILQ_FOREACH:ia1->ia_ifp=0xc2824400
    912 Aug 16 16:30:34 JeffMo kernel: before TAILQ_FOREACH:ia1=0xc298ca00
    913 Aug 16 16:30:34 JeffMo kernel: before
TAILQ_FOREACH:ia1->ia_ifp=0xc27d6000
    914 Aug 16 16:30:34 JeffMo kernel: before TAILQ_FOREACH:ia1=0xc2df1600
    915 Aug 16 16:30:34 JeffMo kernel: before
TAILQ_FOREACH:ia1->ia_ifp=0x3e391
    916 Aug 16 16:30:34 JeffMo kernel: after TAILQ_FOREACH:ia1=0xc28e6b00
    917 Aug 16 16:30:34 JeffMo kernel: after
TAILQ_FOREACH:ia1->ia_ifp=0xc2824400
    918 Aug 16 16:30:34 JeffMo kernel: after TAILQ_FOREACH:ia1=0xc298ca00
    919 Aug 16 16:30:34 JeffMo kernel: after
TAILQ_FOREACH:ia1->ia_ifp=0xc27d6000
    920 Aug 16 16:30:34 JeffMo kernel: after TAILQ_FOREACH:ia1=0xc2df1600
    921 Aug 16 16:30:34 JeffMo kernel: after
TAILQ_FOREACH:ia1->ia_ifp=0x3e391
    922 Aug 16 16:30:34 JeffMo kernel: after TAILQ_FOREACH:ia1=0xc3144d00
    923 Aug 16 16:30:34 JeffMo kernel: after
TAILQ_FOREACH:ia1->ia_ifp=0xc27d1c00
    924 Aug 16 16:30:34 JeffMo kernel:

third time

   925 Aug 16 16:30:57 JeffMo kernel: TAILQ_INSERT_TAIL:ia=0xc3145800
    926 Aug 16 16:30:57 JeffMo kernel:
TAILQ_INSERT_TAIL:ia->ia_ifp=0xc2812400
    927 Aug 16 16:30:57 JeffMo kernel: before TAILQ_FOREACH:ia1=0xc28e6b00
    928 Aug 16 16:30:57 JeffMo kernel: before
TAILQ_FOREACH:ia1->ia_ifp=0xc2824400
    929 Aug 16 16:30:57 JeffMo kernel: before TAILQ_FOREACH:ia1=0xc298ca00
    930 Aug 16 16:30:57 JeffMo kernel: before
TAILQ_FOREACH:ia1->ia_ifp=0xc27d6000
    931 Aug 16 16:30:57 JeffMo kernel: before TAILQ_FOREACH:ia1=0xc2df1600
    932 Aug 16 16:30:57 JeffMo kernel: before TAILQ_FOREACH:ia1->ia_ifp=0
    933 Aug 16 16:30:57 JeffMo kernel: after TAILQ_FOREACH:ia1=0xc28e6b00
    934 Aug 16 16:30:57 JeffMo kernel: after
TAILQ_FOREACH:ia1->ia_ifp=0xc2824400
    935 Aug 16 16:30:57 JeffMo kernel: after TAILQ_FOREACH:ia1=0xc298ca00
    936 Aug 16 16:30:57 JeffMo kernel: after
TAILQ_FOREACH:ia1->ia_ifp=0xc27d6000
    937 Aug 16 16:30:57 JeffMo kernel: after TAILQ_FOREACH:ia1=0xc2df1600
    938 Aug 16 16:30:57 JeffMo kernel: after TAILQ_FOREACH:ia1->ia_ifp=0

#diff -uw in.c.ori in.c

--- in.c.ori    2008-08-16 13:50:54.000000000 +0000
+++ in.c    2008-08-16 16:43:29.000000000 +0000
@@ -320,7 +320,23 @@
                     ia->ia_broadaddr.sin_family = AF_INET;
                 }
                 ia->ia_ifp = ifp;
+                //add by jeff:start
+                 printf("TAILQ_INSERT_TAIL:ia=%p\n" , ia);
+                printf("TAILQ_INSERT_TAIL:ia->ia_ifp=%p\n" , ia->ia_ifp);
+                struct in_ifaddr *ia1;
+                TAILQ_FOREACH(ia1, &in_ifaddrhead, ia_link) {
+                     printf("before TAILQ_FOREACH:ia1=%p\n" , ia1);
+                     printf("before TAILQ_FOREACH:ia1->ia_ifp=%p\n" ,
ia1->ia_ifp);
+                }
+                //add by jeff:end
                 TAILQ_INSERT_TAIL(&in_ifaddrhead, ia, ia_link);
+                //add by jeff:start
+                TAILQ_FOREACH(ia1, &in_ifaddrhead, ia_link) {
+                     printf("after TAILQ_FOREACH:ia1=%p\n" , ia1);
+                     printf("after TAILQ_FOREACH:ia1->ia_ifp=%p\n" ,
ia1->ia_ifp);
+                }
+                printf("\n");
+                //add by jeff:end
                 splx(s);
                 iaIsNew = 1;
             }
@@ -485,6 +501,7 @@
      */
     s = splnet();
     TAILQ_REMOVE(&ifp->if_addrhead, &ia->ia_ifa, ifa_link);
+    printf("TAILQ_REMOVE:ia=%p\n" , ia);
     TAILQ_REMOVE(&in_ifaddrhead, ia, ia_link);
     if (ia->ia_addr.sin_family == AF_INET) {
         LIST_REMOVE(ia, ia_hash);
@@ -803,8 +820,9 @@
         mask = target->ia_sockmask.sin_addr;
         prefix.s_addr &= mask.s_addr;
     }
-
     TAILQ_FOREACH(ia, &in_ifaddrhead, ia_link) {
+        printf("TAILQ_FOREACH:ia=%p\n", ia);
+        printf("TAILQ_FOREACH:ia->ia_ifp=%p\n", ia->ia_ifp);
         if (rtinitflags(ia)) {
             p = ia->ia_addr.sin_addr;

@@ -833,6 +851,7 @@
                 return (0);
         }
     }
+    printf("\n");
     /*
      * No-one seem to have this prefix route, so we try to insert it.
      */


More information about the freebsd-net mailing list