summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ppp/ip.c
diff options
context:
space:
mode:
authorbrian <brian@FreeBSD.org>1999-09-07 07:51:11 +0000
committerbrian <brian@FreeBSD.org>1999-09-07 07:51:11 +0000
commit3157f75de6e4532150d0b35078d74babbdd069a8 (patch)
tree8bc4d81a67b32c857db64e126d8688e10d926482 /usr.sbin/ppp/ip.c
parent3e1d9f25c8a992fb915d18ffaccb3a266e8ad0a4 (diff)
downloadFreeBSD-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.c22
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) {
OpenPOWER on IntegriCloud