summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ppp/hdlc.c
diff options
context:
space:
mode:
authoramurai <amurai@FreeBSD.org>1995-02-26 12:18:08 +0000
committeramurai <amurai@FreeBSD.org>1995-02-26 12:18:08 +0000
commiteeb422fed8735188e4e141578d0383ae57ba8343 (patch)
treed05da3a88d3d54962fad8582d501f1b7ad9500b9 /usr.sbin/ppp/hdlc.c
parent7c16fe40ea66e6edc77ed310b654360adf11b9f9 (diff)
downloadFreeBSD-src-eeb422fed8735188e4e141578d0383ae57ba8343.zip
FreeBSD-src-eeb422fed8735188e4e141578d0383ae57ba8343.tar.gz
New user Process PPP based on iij-ppp0.94beta2.
o Supporting SYNC SIO device (But need a device driver) - add "set speed sync" o Fixing bug for Predictor-1 function. o Add new parameter that re-sent interval for set timeout commands. o Improving RTT (Round Trip Time) and reducing processor time. - Previous Timer service was using polling, and now using SIGALRM ;-) - A 0.94beta2 will not work correctly.... -- Follows are additinal feature not including 0.94beta2 o Support Proxy ARP - add "enable/disable proxy" commands o Marging common routine in CHAP/PAP. o Enhancing LCP/IPCP log information. o Support local Authfication connection on port 300x and tty. - You can set up pair of your "hostname -s" and password in ppp.secret. if either ppp.secret file nor your hostname line don't exist, It will notify a message and working as same as previous version.(Backword compatibility) - If you did set up them, It's allow connection but nothing to do except help and passwd command. - add "passwd yourpasswd" commands o Support afilter - keep Alive filter that a packet can send/receiving according to ifilter/ofilter but doesn't count it as preventing idle timer expires. - Same syntax of other filters. o Fixing bugs reported by current user for previous one. Thanks !! Reviewed by: Atsushi Murai (amurai@spec.co.jp)
Diffstat (limited to 'usr.sbin/ppp/hdlc.c')
-rw-r--r--usr.sbin/ppp/hdlc.c40
1 files changed, 28 insertions, 12 deletions
diff --git a/usr.sbin/ppp/hdlc.c b/usr.sbin/ppp/hdlc.c
index 9791ee1..6431e38 100644
--- a/usr.sbin/ppp/hdlc.c
+++ b/usr.sbin/ppp/hdlc.c
@@ -16,9 +16,9 @@
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
+ *
* $Id:$
- *
+ *
* TODO:
*/
#include "fsm.h"
@@ -26,6 +26,7 @@
#include "lcpproto.h"
#include "lcp.h"
#include "lqr.h"
+#include "vars.h"
struct hdlcstat {
int badfcs;
@@ -129,7 +130,10 @@ HdlcOutput(int pri, u_short proto, struct mbuf *bp)
return;
}
}
- mfcs = mballoc(2, MB_HDLCOUT);
+ if (DEV_IS_SYNC)
+ mfcs = NULLBUFF;
+ else
+ mfcs = mballoc(2, MB_HDLCOUT);
mhp = mballoc(4, MB_HDLCOUT);
mhp->cnt = 0;
cp = MBUF_CTOP(mhp);
@@ -172,19 +176,24 @@ HdlcOutput(int pri, u_short proto, struct mbuf *bp)
LqrChangeOrder(lqr, (struct lqrdata *)(MBUF_CTOP(bp)));
}
- fcs = HdlcFcs(INITFCS, MBUF_CTOP(mhp), mhp->cnt);
- fcs = HdlcFcs(fcs, MBUF_CTOP(bp), bp->cnt);
- fcs = ~fcs;
- cp = MBUF_CTOP(mfcs);
- *cp++ = fcs & 0377; /* Low byte first!! */
- *cp++ = fcs >> 8;
+ if (!DEV_IS_SYNC) {
+ fcs = HdlcFcs(INITFCS, MBUF_CTOP(mhp), mhp->cnt);
+ fcs = HdlcFcs(fcs, MBUF_CTOP(bp), bp->cnt);
+ fcs = ~fcs;
+ cp = MBUF_CTOP(mfcs);
+ *cp++ = fcs & 0377; /* Low byte first!! */
+ *cp++ = fcs >> 8;
+ }
LogDumpBp(LOG_HDLC, "HdlcOutput", mhp);
for (statp = ProtocolStat; statp->number; statp++)
if (statp->number == proto)
break;
statp->out_count++;
- AsyncOutput(pri, mhp, proto);
+ if (DEV_IS_SYNC)
+ ModemOutput(pri, mhp);
+ else
+ AsyncOutput(pri, mhp, proto);
}
DecodePacket(proto, bp)
@@ -211,6 +220,9 @@ struct mbuf *bp;
case PROTO_VJUNCOMP:
case PROTO_VJCOMP:
bp = VjCompInput(bp, proto);
+ if (bp == NULLBUFF) {
+ break;
+ }
/* fall down */
case PROTO_IP:
IpInput(bp);
@@ -295,7 +307,10 @@ HdlcInput(struct mbuf *bp)
struct protostat *statp;
LogDumpBp(LOG_HDLC, "HdlcInput:", bp);
- fcs = HdlcFcs(INITFCS, MBUF_CTOP(bp), bp->cnt);
+ if (DEV_IS_SYNC)
+ fcs = GOODFCS;
+ else
+ fcs = HdlcFcs(INITFCS, MBUF_CTOP(bp), bp->cnt);
HisLqrSave.SaveInOctets += bp->cnt + 1;
#ifdef DEBUG
@@ -310,7 +325,8 @@ HdlcInput(struct mbuf *bp)
pfree(bp);
return;
}
- bp->cnt -= 2; /* discard FCS part */
+ if (!DEV_IS_SYNC)
+ bp->cnt -= 2; /* discard FCS part */
cp = MBUF_CTOP(bp);
ifInPackets++;
OpenPOWER on IntegriCloud