X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=include%2Fnet%2Fdsfield.h;h=8a8d4e06900d8824ba4a892c5f29f9c40525f0e0;hb=ddc5057c1c1fb3e99afeeef45d2b8ff9597e6707;hp=dae8453385b62dd7e5da56fd99efda5b8fcb4912;hpb=8a9ae2110baf39b2dc53c2891e0705895a8829a9;p=~andy%2Flinux diff --git a/include/net/dsfield.h b/include/net/dsfield.h index dae8453385b..8a8d4e06900 100644 --- a/include/net/dsfield.h +++ b/include/net/dsfield.h @@ -12,22 +12,22 @@ #include -static inline __u8 ipv4_get_dsfield(struct iphdr *iph) +static inline __u8 ipv4_get_dsfield(const struct iphdr *iph) { return iph->tos; } -static inline __u8 ipv6_get_dsfield(struct ipv6hdr *ipv6h) +static inline __u8 ipv6_get_dsfield(const struct ipv6hdr *ipv6h) { - return ntohs(*(__be16 *) ipv6h) >> 4; + return ntohs(*(const __be16 *)ipv6h) >> 4; } static inline void ipv4_change_dsfield(struct iphdr *iph,__u8 mask, __u8 value) { - __u32 check = ntohs(iph->check); + __u32 check = ntohs((__force __be16)iph->check); __u8 dsfield; dsfield = (iph->tos & mask) | value; @@ -35,7 +35,7 @@ static inline void ipv4_change_dsfield(struct iphdr *iph,__u8 mask, if ((check+1) >> 16) check = (check+1) & 0xffff; check -= dsfield; check += check >> 16; /* adjust carry */ - iph->check = htons(check); + iph->check = (__force __sum16)htons(check); iph->tos = dsfield; }