X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Fnet%2Finet_ecn.h;h=55dc2b3be699e6b34b1b456df74a494ae5e30f8f;hb=40b5a8819a087d0a4ad418754432e71c49f98ae2;hp=4b9c7556273ae877578b6821c0e2868667a167f5;hpb=a91482bdcc2e0f6035702e46f1b99043a0893346;p=linux-2.6.git diff --git a/include/net/inet_ecn.h b/include/net/inet_ecn.h index 4b9c75562..55dc2b3be 100644 --- a/include/net/inet_ecn.h +++ b/include/net/inet_ecn.h @@ -3,48 +3,39 @@ #include -enum { - INET_ECN_NOT_ECT = 0, - INET_ECN_ECT_1 = 1, - INET_ECN_ECT_0 = 2, - INET_ECN_CE = 3, - INET_ECN_MASK = 3, -}; - static inline int INET_ECN_is_ce(__u8 dsfield) { - return (dsfield & INET_ECN_MASK) == INET_ECN_CE; + return (dsfield&3) == 3; } static inline int INET_ECN_is_not_ce(__u8 dsfield) { - return (dsfield & INET_ECN_MASK) == INET_ECN_ECT_0; + return (dsfield&3) == 2; } static inline int INET_ECN_is_capable(__u8 dsfield) { - return (dsfield & INET_ECN_ECT_0); + return (dsfield&2); } static inline __u8 INET_ECN_encapsulate(__u8 outer, __u8 inner) { - outer &= ~INET_ECN_MASK; + outer &= ~3; if (INET_ECN_is_capable(inner)) - outer |= (inner & INET_ECN_MASK); + outer |= (inner & 3); return outer; } -#define INET_ECN_xmit(sk) do { inet_sk(sk)->tos |= INET_ECN_ECT_0; } while (0) -#define INET_ECN_dontxmit(sk) \ - do { inet_sk(sk)->tos &= ~INET_ECN_MASK; } while (0) +#define INET_ECN_xmit(sk) do { inet_sk(sk)->tos |= 2; } while (0) +#define INET_ECN_dontxmit(sk) do { inet_sk(sk)->tos &= ~3; } while (0) -#define IP6_ECN_flow_init(label) do { \ - (label) &= ~htonl(INET_ECN_MASK << 20); \ +#define IP6_ECN_flow_init(label) do { \ + (label) &= ~htonl(3<<20); \ } while (0) -#define IP6_ECN_flow_xmit(sk, label) do { \ - if (INET_ECN_is_capable(inet_sk(sk)->tos)) \ - (label) |= __constant_htons(INET_ECN_ECT_0 << 4); \ +#define IP6_ECN_flow_xmit(sk, label) do { \ + if (INET_ECN_is_capable(inet_sk(sk)->tos)) \ + (label) |= __constant_htons(2 << 4); \ } while (0) static inline void IP_ECN_set_ce(struct iphdr *iph) @@ -52,24 +43,24 @@ static inline void IP_ECN_set_ce(struct iphdr *iph) u32 check = iph->check; check += __constant_htons(0xFFFE); iph->check = check + (check>=0xFFFF); - iph->tos |= INET_ECN_CE; + iph->tos |= 1; } static inline void IP_ECN_clear(struct iphdr *iph) { - iph->tos &= ~INET_ECN_MASK; + iph->tos &= ~3; } struct ipv6hdr; static inline void IP6_ECN_set_ce(struct ipv6hdr *iph) { - *(u32*)iph |= htonl(INET_ECN_CE << 20); + *(u32*)iph |= htonl(1<<20); } static inline void IP6_ECN_clear(struct ipv6hdr *iph) { - *(u32*)iph &= ~htonl(INET_ECN_MASK << 20); + *(u32*)iph &= ~htonl(3<<20); } #define ip6_get_dsfield(iph) ((ntohs(*(u16*)(iph)) >> 4) & 0xFF)