diff options
author | amurai <amurai@FreeBSD.org> | 1995-02-26 12:18:08 +0000 |
---|---|---|
committer | amurai <amurai@FreeBSD.org> | 1995-02-26 12:18:08 +0000 |
commit | eeb422fed8735188e4e141578d0383ae57ba8343 (patch) | |
tree | d05da3a88d3d54962fad8582d501f1b7ad9500b9 /usr.sbin/ppp/hdlc.c | |
parent | 7c16fe40ea66e6edc77ed310b654360adf11b9f9 (diff) | |
download | FreeBSD-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.c | 40 |
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++; |