Messages in this thread Patch in this message | | | From | "A.N.Kuznetsov" <> | Subject | one more small fix | Date | Mon, 8 Jul 1996 16:18:50 +0400 (MSD) |
| |
Hello!
IP_TOS was broken. It is interesting when we will learn that RFCs use "big-endian" bit numbering 8)8)
Alexey Kuznetsov.
--- linux/net/ipv4/ip_sockglue.c Sat May 18 20:06:00 1996 +++ linux-obj/net/ipv4/ip_sockglue.c Mon Jul 8 16:05:39 1996 @@ -179,16 +179,17 @@ return 0; } case IP_TOS: /* This sets both TOS and Precedence */ - if (val<0 || val>63) /* Reject setting of unused bits */ + if (val&0xFE) /* Reject setting of unused bits */ return -EINVAL; - if ((val&7) > 4 && !suser()) /* Only root can set Prec>4 */ + if ((val>>5) > 4 && !suser()) /* Only root can set Prec>4 */ return -EPERM; sk->ip_tos=val; - switch (val & 0x38) { + switch (val & 0x1E) { case IPTOS_LOWDELAY: sk->priority=SOPRI_INTERACTIVE; break; case IPTOS_THROUGHPUT: + case IPTOS_MINCOST: sk->priority=SOPRI_BACKGROUND; break; default: @@ -270,7 +271,6 @@ * FIXME: Add/Del membership should have a semaphore protecting them from re-entry */ struct ip_mreq mreq; - __u32 route_src; struct rtable *rt; struct device *dev=NULL; @@ -295,9 +295,8 @@ */ if((rt=ip_rt_route(mreq.imr_multiaddr.s_addr,0))!=NULL) { - dev=rt->rt_dev; - route_src = rt->rt_src; - atomic_dec(&rt->rt_use); + dev=rt->u.dst.dev; + atomic_dec(&rt->u.dst.use); ip_rt_put(rt); } } @@ -328,7 +327,6 @@ { struct ip_mreq mreq; struct rtable *rt; - __u32 route_src; struct device *dev=NULL; /* @@ -349,9 +347,8 @@ { if((rt=ip_rt_route(mreq.imr_multiaddr.s_addr,0))!=NULL) { - dev=rt->rt_dev; - atomic_dec(&rt->rt_use); - route_src = rt->rt_src; + dev=rt->u.dst.dev; + atomic_dec(&rt->u.dst.use); ip_rt_put(rt); } } --- linux/include/linux/socket.h Tue May 28 16:44:49 1996 +++ linux-obj/include/linux/socket.h Mon Jul 8 16:05:39 1996 @@ -102,6 +107,7 @@ #define IPTOS_LOWDELAY 0x10 #define IPTOS_THROUGHPUT 0x08 #define IPTOS_RELIABILITY 0x04 +#define IPTOS_MINCOST 0x02 #define IP_TTL 2 #define IP_HDRINCL 3 #define IP_OPTIONS 4
| |