[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: ALTQ conditioners (openBSD 3.2 stable)
Mathew S <mathewsss@yahoo.com> wrote:
> When I look at "altqstat -I xl0" the HTTP packets are never marked.
> They are always passed through without any marking.
> I also looked at the packet sniffer on the 20.0.1.0 network
> and the HTTP packets coming from 10.0.1.5 are not marked.
It is my oversight.
altq expects the ip_off field in the network byte order but the field
is actually in the host byte order after the altq hook was moved below
the pf hook. As a result, when port numbers are specified, altq
checks the ip_off filed and thinks the DF bit as a frag offset.
The attached patch to sys/netinet/ip_input.c should fix it.
(3.3 doesn't have this part of the code.)
-Kenjiro
--- ip_input.c- Fri May 2 15:09:09 2003
+++ ip_input.c Fri May 2 15:11:01 2003
@@ -402,9 +402,16 @@
#endif
#ifdef ALTQ
- if (altq_input != NULL && (*altq_input)(m, AF_INET) == 0)
- /* packet is dropped by traffic conditioner */
- return;
+ if (altq_input != NULL) {
+ int rv;
+
+ /* altq expects ip_off in the network order */
+ HTONS(ip->ip_off);
+ rv = (*altq_input)(m, AF_INET);
+ NTOHS(ip->ip_off);
+ if (rv == 0)
+ /* packet is dropped by traffic conditioner */
+ return;
#endif
/*