diff options
author | brian <brian@FreeBSD.org> | 1999-09-07 07:51:11 +0000 |
---|---|---|
committer | brian <brian@FreeBSD.org> | 1999-09-07 07:51:11 +0000 |
commit | 3157f75de6e4532150d0b35078d74babbdd069a8 (patch) | |
tree | 8bc4d81a67b32c857db64e126d8688e10d926482 /usr.sbin/ppp/ip.c | |
parent | 3e1d9f25c8a992fb915d18ffaccb3a266e8ad0a4 (diff) | |
download | FreeBSD-src-3157f75de6e4532150d0b35078d74babbdd069a8.zip FreeBSD-src-3157f75de6e4532150d0b35078d74babbdd069a8.tar.gz |
Introduce a forth IP packet queue. Urgent packets with
ip_tos == IPTOS_LOWDELAY now get precidence over urgent
packets with ip_tos != IPTOS_LOWDELAY and non-urgent packets
with ip_tos == IPTOS_LOWDELAY.
Enhance the ``set urgent'' syntax to allow for urgent UDP
packets as well as urgent TCP packets.
Diffstat (limited to 'usr.sbin/ppp/ip.c')
-rw-r--r-- | usr.sbin/ppp/ip.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/usr.sbin/ppp/ip.c b/usr.sbin/ppp/ip.c index 20440ec..6d8d8d8 100644 --- a/usr.sbin/ppp/ip.c +++ b/usr.sbin/ppp/ip.c @@ -339,9 +339,18 @@ PacketCheck(struct bundle *bundle, char *cp, int nb, struct filter *filter) loglen += strlen(logbuf + loglen); } break; + case IPPROTO_UDP: + uh = (struct udphdr *) ptop; + if (pip->ip_tos == IPTOS_LOWDELAY) + pri++; + + if ((ntohs(pip->ip_off) & IP_OFFMASK) == 0 && + ipcp_IsUrgentUdpPort(&bundle->ncp.ipcp, ntohs(uh->uh_sport), + ntohs(uh->uh_dport))) + pri++; + if (logit && loglen < sizeof logbuf) { - uh = (struct udphdr *) ptop; snprintf(logbuf + loglen, sizeof logbuf - loglen, "UDP: %s:%d ---> ", inet_ntoa(pip->ip_src), ntohs(uh->uh_sport)); loglen += strlen(logbuf + loglen); @@ -350,6 +359,7 @@ PacketCheck(struct bundle *bundle, char *cp, int nb, struct filter *filter) loglen += strlen(logbuf + loglen); } break; + #ifdef IPPROTO_OSPFIGP case IPPROTO_OSPFIGP: if (logit && loglen < sizeof logbuf) { @@ -362,6 +372,7 @@ PacketCheck(struct bundle *bundle, char *cp, int nb, struct filter *filter) } break; #endif + case IPPROTO_IPIP: if (logit && loglen < sizeof logbuf) { uh = (struct udphdr *) ptop; @@ -373,6 +384,7 @@ PacketCheck(struct bundle *bundle, char *cp, int nb, struct filter *filter) loglen += strlen(logbuf + loglen); } break; + case IPPROTO_IGMP: if (logit && loglen < sizeof logbuf) { uh = (struct udphdr *) ptop; @@ -384,13 +396,15 @@ PacketCheck(struct bundle *bundle, char *cp, int nb, struct filter *filter) loglen += strlen(logbuf + loglen); } break; + case IPPROTO_TCP: th = (struct tcphdr *) ptop; if (pip->ip_tos == IPTOS_LOWDELAY) pri++; - else if ((ntohs(pip->ip_off) & IP_OFFMASK) == 0 && - ipcp_IsUrgentPort(&bundle->ncp.ipcp, ntohs(th->th_sport), - ntohs(th->th_dport))) + + if ((ntohs(pip->ip_off) & IP_OFFMASK) == 0 && + ipcp_IsUrgentTcpPort(&bundle->ncp.ipcp, ntohs(th->th_sport), + ntohs(th->th_dport))) pri++; if (logit && loglen < sizeof logbuf) { |