[email protected]
[Top] [All Lists]

PERFORCE change 114233 for review

Subject: PERFORCE change 114233 for review
From: Paolo Pisati
Date: Thu, 8 Feb 2007 10:59:34 GMT
http://perforce.freebsd.org/chv.cgi?CH=114233

Change 114233 by [email protected]_newluxor on 2007/02/08 10:58:34

        o when pulling up an ip hdr, if present, pullup the options too.
        o rewrite some PULLUP macros, using PULLUP_SIZE.

Affected files ...

.. //depot/projects/soc2005/libalias/sys/netinet/libalias/alias_local.h#24 edit

Differences ...

==== //depot/projects/soc2005/libalias/sys/netinet/libalias/alias_local.h#24 
(text+ko) ====

@@ -181,59 +181,50 @@
 
 #define MYMTOD(p, foo) (p != NULL) ? mtod(p, foo) : NULL
 
+#define PULLUP_SIZE(pip, ptr, s) do {           \
+        *ptr = m_pullup((*ptr), s);             \
+        (pip) = MYMTOD(*ptr, struct ip *);      \
+} while (0)
+
 #define PULLUP_IPHDR(pip, ptr) do {             \
-       *ptr = m_pullup((*ptr), sizeof(struct ip)); \
-        (pip) = MYMTOD(*ptr, struct ip *);           \
+        PULLUP_SIZE(pip, ptr, sizeof(struct ip));       \
+        if (pip != NULL && ((pip->ip_hl << 2) > sizeof(struct ip)))     \
+                PULLUP_SIZE(pip, ptr, (pip->ip_hl << 2));       \
 } while (0)
 
 #define PULLUP_UDPHDR(pip, ptr) do {            \
-       pip = mtod(*ptr, struct ip *);             \
-       *ptr = m_pullup((*ptr), (pip->ip_hl << 2) + sizeof(struct udphdr)); \
-       (pip) = MYMTOD(*ptr, struct ip *);           \
+       pip = mtod(*ptr, struct ip *);          \
+        PULLUP_SIZE(pip, ptr, (pip->ip_hl << 2) + sizeof(struct udphdr)); \
 } while (0)
 
 #define PULLUP_TCPHDR(pip, ptr) do {            \
-       pip = mtod(*ptr, struct ip *);             \
-       *ptr = m_pullup((*ptr), (pip->ip_hl << 2) + sizeof(struct tcphdr)); \
-       (pip) = MYMTOD(*ptr, struct ip *);           \
+       pip = mtod(*ptr, struct ip *);          \
+        PULLUP_SIZE(pip, ptr, (pip->ip_hl << 2) + sizeof(struct tcphdr)); \
 } while (0)
 
 #define PULLUP_ICMPHDR(pip, ptr) do {           \
-       pip = mtod(*ptr, struct ip *);           \
-       *ptr = m_pullup((*ptr), (pip->ip_hl << 2) + sizeof(struct icmp)); \
-       (pip) = MYMTOD(*ptr, struct ip *);           \
+       pip = mtod(*ptr, struct ip *);          \
+        PULLUP_SIZE(pip, ptr, (pip->ip_hl << 2) + sizeof(struct icmp)); \
 } while (0)
 
 #define PULLUP_ICMPIP64(pip, ptr, ic) do {      \
         int s;                                  \
-       pip = mtod(*ptr, struct ip *);             \
-        s = (pip->ip_hl << 2) + sizeof(struct icmp) + \
-            (ic->icmp_ip.ip_hl << 2) - sizeof(struct ip) + 8; \
-       *ptr = m_pullup((*ptr), s);                 \
-       (pip) = MYMTOD(*ptr, struct ip *);           \
+       pip = mtod(*ptr, struct ip *);          \
+        s = (pip->ip_hl << 2) + sizeof(struct icmp) +   \
+            (ic->icmp_ip.ip_hl << 2) - sizeof(struct ip) + 8;   \
+        PULLUP_SIZE(pip, ptr, s);               \
 } while (0)
 
 #define PULLUP_IPTCPHDR(pip, ptr) do {          \
-       *ptr = m_pullup((*ptr), sizeof(struct ip)); \
-        (pip) = MYMTOD(*ptr, struct ip *);           \
-        if (pip != NULL) {                       \
-                *ptr = m_pullup((*ptr), (pip->ip_hl << 2) + sizeof(struct 
tcphdr)); \
-               (pip) = MYMTOD(*ptr, struct ip *);           \
-        }                                       \
+        PULLUP_IPHDR(pip, ptr);                 \
+        if (pip != NULL)                        \
+               PULLUP_TCPHDR(pip, ptr);        \
 } while (0)
 
 #define PULLUP_IPUDPHDR(pip, ptr) do {          \
-       *ptr = m_pullup((*ptr), sizeof(struct ip)); \
-        (pip) = MYMTOD(*ptr, struct ip *);           \
-        if (pip != NULL) {                       \
-                *ptr = m_pullup((*ptr), (pip->ip_hl << 2) + sizeof(struct 
udphdr)); \
-               (pip) = MYMTOD(*ptr, struct ip *);           \
-        }                                       \
-} while (0)
-
-#define PULLUP_SIZE(pip, ptr, s) do {           \
-        *ptr = m_pullup((*ptr), s);             \
-        (pip) = MYMTOD(*ptr, struct ip *);        \
+        PULLUP_IPHDR(pip, ptr);                 \
+        if (pip != NULL)                        \
+               PULLUP_UDPHDR(pip, ptr);        \
 } while (0)
 
 #else
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/p4-projects
To unsubscribe, send any mail to "[email protected]"

<Prev in Thread] Current Thread [Next in Thread>
  • PERFORCE change 114233 for review, Paolo Pisati <=