]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
Some ipv6 fixes by kisza:
authorAndrás Kis-Szabó <kisza@securityaudit.hu>
Wed, 24 Apr 2002 09:36:30 +0000 (09:36 +0000)
committerHarald Welte <laforge@gnumonks.org>
Wed, 24 Apr 2002 09:36:30 +0000 (09:36 +0000)
AH save function fix (problem with --len ! 0)
FRAG help fix
FRAG save and prtint fix (problem with --len [!] 0)

extensions/libip6t_ah.c
extensions/libip6t_frag.c

index f1696597d5c6aa3fcfa3f266a257fd4d7825c61e..e778557cab2b4cd852a0740332681307327bc34d 100644 (file)
@@ -203,7 +203,7 @@ static void save(const struct ip6t_ip6 *ip, const struct ip6t_entry_match *match
                               ahinfo->spis[0]);
        }
 
-       if (ahinfo->hdrlen != 0 ) {
+       if (ahinfo->hdrlen != 0 || (ahinfo->invflags & IP6T_AH_INV_LEN) ) {
                printf("--ahlen %s%u ", 
                        (ahinfo->invflags & IP6T_AH_INV_LEN) ? "! " : "", 
                        ahinfo->hdrlen);
index aabb334cb0986df692d84fc5058db0b54a4a1e0b..f3882018bc03f9b4b96db7175f000feb5a4d00cd 100644 (file)
@@ -17,7 +17,7 @@ help(void)
 " --fragid [!] id[:id]          match the id (range)\n"
 " --fraglen [!] length          total length of this header\n"
 " --fragres                     check the reserved filed, too\n"
-" --fragfirst                   matches on the frst fragment\n"
+" --fragfirst                   matches on the first fragment\n"
 " [--fragmore|--fraglast]       there are more fragments or this\n"
 "                               is the last one\n",
 NETFILTER_VERSION);
@@ -184,19 +184,6 @@ print_ids(const char *name, u_int32_t min, u_int32_t max,
        }
 }
 
-static void
-print_len(const char *name, u_int32_t len, int invert)
-{
-       const char *inv = invert ? "!" : "";
-
-       if (len != 0 || invert) {
-               printf("%s", name);
-               printf(":%s", inv);
-               printf("%u", len);
-               printf(" ");
-       }
-}
-
 /* Prints out the union ip6t_matchinfo. */
 static void
 print(const struct ip6t_ip6 *ip,
@@ -207,8 +194,12 @@ print(const struct ip6t_ip6 *ip,
        printf("frag ");
        print_ids("id", frag->ids[0], frag->ids[1],
                    frag->invflags & IP6T_FRAG_INV_IDS);
-       print_len("length", frag->hdrlen, 
-                   frag->invflags & IP6T_FRAG_INV_LEN);
+       if (frag->flags & IP6T_FRAG_LEN) {
+               printf("length");
+               printf(":%s", frag->invflags & IP6T_FRAG_INV_LEN ? "!" : "");
+               printf("%u", frag->hdrlen);
+               printf(" ");
+       }
        if (frag->flags & IP6T_FRAG_RES) printf("reserved ");
        if (frag->flags & IP6T_FRAG_FST) printf("first ");
        if (frag->flags & IP6T_FRAG_MF) printf("more ");
@@ -237,7 +228,7 @@ static void save(const struct ip6t_ip6 *ip, const struct ip6t_entry_match *match
                               fraginfo->ids[0]);
        }
 
-       if (fraginfo->hdrlen != 0 ) {
+       if (fraginfo->flags & IP6T_FRAG_LEN) {
                printf("--fraglen %s%u ", 
                        (fraginfo->invflags & IP6T_FRAG_INV_LEN) ? "! " : "", 
                        fraginfo->hdrlen);