summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ppp/ip.c
diff options
context:
space:
mode:
authorbrian <brian@FreeBSD.org>1998-08-26 17:39:37 +0000
committerbrian <brian@FreeBSD.org>1998-08-26 17:39:37 +0000
commitf0dee2c38ca3e4eeca64ea4679b582c4373dbbf4 (patch)
tree82b255b761af56aea6d84d320188e4c0db94aae0 /usr.sbin/ppp/ip.c
parent307727cd4cb34041ce7fbca4c3323678d1dd9f0c (diff)
downloadFreeBSD-src-f0dee2c38ca3e4eeca64ea4679b582c4373dbbf4.zip
FreeBSD-src-f0dee2c38ca3e4eeca64ea4679b582c4373dbbf4.tar.gz
Put the IP buffer queues into struct ipcp.
Forgotten by: me
Diffstat (limited to 'usr.sbin/ppp/ip.c')
-rw-r--r--usr.sbin/ppp/ip.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/usr.sbin/ppp/ip.c b/usr.sbin/ppp/ip.c
index e5f1d53..f837c9b 100644
--- a/usr.sbin/ppp/ip.c
+++ b/usr.sbin/ppp/ip.c
@@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * $Id: ip.c,v 1.50 1998/08/07 18:42:48 brian Exp $
+ * $Id: ip.c,v 1.51 1998/08/25 17:48:42 brian Exp $
*
* TODO:
* o Return ICMP message for filterd packet
@@ -493,35 +493,37 @@ ip_Input(struct bundle *bundle, struct mbuf * bp)
mbuf_Free(bp);
}
-static struct mqueue IpOutputQueues[PRI_FAST + 1];
-
void
-ip_Enqueue(int pri, char *ptr, int count)
+ip_Enqueue(struct ipcp *ipcp, int pri, char *ptr, int count)
{
struct mbuf *bp;
- bp = mbuf_Alloc(count, MB_IPQ);
- memcpy(MBUF_CTOP(bp), ptr, count);
- mbuf_Enqueue(&IpOutputQueues[pri], bp);
+ if (pri < 0 || pri > sizeof ipcp->Queue / sizeof ipcp->Queue[0])
+ log_Printf(LogERROR, "Can't store in ip queue %d\n", pri);
+ else {
+ bp = mbuf_Alloc(count, MB_IPQ);
+ memcpy(MBUF_CTOP(bp), ptr, count);
+ mbuf_Enqueue(&ipcp->Queue[pri], bp);
+ }
}
void
-ip_DeleteQueue()
+ip_DeleteQueue(struct ipcp *ipcp)
{
struct mqueue *queue;
- for (queue = IpOutputQueues; queue < IpOutputQueues + PRI_MAX; queue++)
+ for (queue = ipcp->Queue; queue < ipcp->Queue + PRI_MAX; queue++)
while (queue->top)
mbuf_Free(mbuf_Dequeue(queue));
}
int
-ip_QueueLen()
+ip_QueueLen(struct ipcp *ipcp)
{
struct mqueue *queue;
int result = 0;
- for (queue = &IpOutputQueues[PRI_MAX]; queue >= IpOutputQueues; queue--)
+ for (queue = ipcp->Queue; queue < ipcp->Queue + PRI_MAX; queue++)
result += queue->qlen;
return result;
@@ -530,14 +532,15 @@ ip_QueueLen()
int
ip_FlushPacket(struct link *l, struct bundle *bundle)
{
+ struct ipcp *ipcp = &bundle->ncp.ipcp;
struct mqueue *queue;
struct mbuf *bp;
int cnt;
- if (bundle->ncp.ipcp.fsm.state != ST_OPENED)
+ if (ipcp->fsm.state != ST_OPENED)
return 0;
- for (queue = &IpOutputQueues[PRI_FAST]; queue >= IpOutputQueues; queue--)
+ for (queue = &ipcp->Queue[PRI_FAST]; queue >= ipcp->Queue; queue--)
if (queue->top) {
bp = mbuf_Dequeue(queue);
if (bp) {
@@ -547,7 +550,7 @@ ip_FlushPacket(struct link *l, struct bundle *bundle)
if (!(FilterCheck(pip, &bundle->filter.alive) & A_DENY))
bundle_StartIdleTimer(bundle);
vj_SendFrame(l, bp, bundle);
- ipcp_AddOutOctets(&bundle->ncp.ipcp, cnt);
+ ipcp_AddOutOctets(ipcp, cnt);
return 1;
}
}
OpenPOWER on IntegriCloud