Date: Mon, 11 Oct 1999 01:58:53 -0700 (PDT) From: wim.livens@alcatel.be To: freebsd-gnats-submit@freebsd.org Subject: misc/14258: IP_TOS and IP_TTL sockopt doesn't work on raw socket Message-ID: <19991011085853.4C24014D52@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 14258
>Category: misc
>Synopsis: IP_TOS and IP_TTL sockopt doesn't work on raw socket
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Mon Oct 11 02:00:01 PDT 1999
>Closed-Date:
>Last-Modified:
>Originator: Wim Livens
>Release: 2.2.8-RELEASE
>Organization:
Alcatel
>Environment:
FreeBSD btm22v.rc.bel.alcatel.be 2.2.8-RELEASE FreeBSD 2.2.8-RELEASE #5: Fri Oct 8 15:54:19 CEST 1999 livensw@btm22v.rc.bel.alcatel.be:/home/users/livensw/work/sys/compile/ALTQ i386
>Description:
I've noticed that the IP_TOS socket option doesn't work on raw
sockets. There is no error returned and the TOS is stored in the
protocol control block but when the packet headers are constructed, a
hardcoded zero is put (instead of inp->inp_ip_tos). The same holds
for the ttl.
>How-To-Repeat:
do something like :
sendsock=socket(AF_INET, SOCK_RAW, IPPROTO_OSPFIGP);
tos=0xf0;
if(setsockopt(sendsock, IPPROTO_IP, IP_TOS, (void*)&tos, 4) == -1)
{ printf("can't set tos bits\n"); exit(1); }
sendto(sendsock, &sendbuf, 12, 0, (struct sockaddr *) &dest, 16);
Then look with tcpdump and you'll see that tos is still zero.
>Fix:
change the following line rip_output(m, so, dst): (in netinet/raw_ip.c)
ip->ip_tos = 0;
to
ip->ip_tos = inp->inp_ip_tos;
(similar for ip_ttl)
>Release-Note:
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19991011085853.4C24014D52>
