Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 17 Aug 2008 00:11:09 +0000
From:      "Jeff Mo" <mo0118@gmail.com>
To:        linimon@freebsd.org, freebsd-bugs@freebsd.org, freebsd-net@freebsd.org,  rfrench@freebsd.org, gnn@freebsd.org, jfvogel@gmail.com,  paul@gtcomm.net, viper@perm.raid.ru, brutal_hitman_@hotmail.com,  pyunyh@gmail.com, naddy@mips.inka.de, andrew@modulus.org,  remko@freebsd.org
Subject:   Need Help!
Message-ID:  <c62705fb0808161711j119aa9a2wab1f59141182950d@mail.gmail.com>
In-Reply-To: <c62705fb0808161709r16b1e166kc5fad54572ed5009@mail.gmail.com>
References:  <c62705fb0808161709r16b1e166kc5fad54572ed5009@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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.
      */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?c62705fb0808161711j119aa9a2wab1f59141182950d>