Move VJ compression state and stats into struct ipcp.

This commit is contained in:
Brian Somers 1998-03-16 22:54:35 +00:00
parent a0cbd833f3
commit eaa4df37f4
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/cvs2svn/branches/MP/; revision=34633
27 changed files with 164 additions and 95 deletions

View File

@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: arp.c,v 1.27.2.6 1998/03/13 21:07:26 brian Exp $
* $Id: arp.c,v 1.27.2.7 1998/03/16 22:51:37 brian Exp $
*
*/
@ -35,6 +35,8 @@
#include <net/if_types.h>
#include <netinet/if_ether.h>
#include <arpa/inet.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <fcntl.h>
#include <stdio.h>
@ -56,6 +58,7 @@
#include "defs.h"
#include "iplist.h"
#include "throughput.h"
#include "slcompress.h"
#include "ipcp.h"
#include "filter.h"
#include "bundle.h"

View File

@ -17,13 +17,15 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: auth.c,v 1.27.2.13 1998/03/13 21:07:26 brian Exp $
* $Id: auth.c,v 1.27.2.14 1998/03/16 22:51:43 brian Exp $
*
* TODO:
* o Implement check against with registered IP addresses.
*/
#include <sys/param.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <assert.h>
#include <pwd.h>
@ -39,6 +41,7 @@
#include "fsm.h"
#include "iplist.h"
#include "throughput.h"
#include "slcompress.h"
#include "ipcp.h"
#include "loadalias.h"
#include "vars.h"

View File

@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: bundle.c,v 1.1.2.26 1998/03/16 22:51:45 brian Exp $
* $Id: bundle.c,v 1.1.2.27 1998/03/16 22:53:04 brian Exp $
*/
#include <sys/param.h>
@ -34,6 +34,8 @@
#include <arpa/inet.h>
#include <net/route.h>
#include <net/if_dl.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <errno.h>
#include <fcntl.h>
@ -54,6 +56,7 @@
#include "lqr.h"
#include "hdlc.h"
#include "throughput.h"
#include "slcompress.h"
#include "ipcp.h"
#include "link.h"
#include "filter.h"

View File

@ -17,13 +17,15 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: ccp.c,v 1.30.2.21 1998/03/13 21:07:57 brian Exp $
* $Id: ccp.c,v 1.30.2.22 1998/03/16 22:51:49 brian Exp $
*
* TODO:
* o Support other compression protocols
*/
#include <sys/param.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <stdio.h>
#include <string.h>
@ -44,6 +46,7 @@
#include "deflate.h"
#include "throughput.h"
#include "iplist.h"
#include "slcompress.h"
#include "ipcp.h"
#include "filter.h"
#include "bundle.h"

View File

@ -17,12 +17,14 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: chap.c,v 1.28.2.16 1998/03/13 21:07:29 brian Exp $
* $Id: chap.c,v 1.28.2.17 1998/03/16 22:51:52 brian Exp $
*
* TODO:
*/
#include <sys/param.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <ctype.h>
#ifdef HAVE_DES
@ -62,6 +64,7 @@
#include "descriptor.h"
#include "physical.h"
#include "iplist.h"
#include "slcompress.h"
#include "ipcp.h"
#include "filter.h"
#include "bundle.h"

View File

@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: command.c,v 1.131.2.38 1998/03/13 21:08:01 brian Exp $
* $Id: command.c,v 1.131.2.39 1998/03/16 22:51:58 brian Exp $
*
*/
#include <sys/param.h>
@ -54,6 +54,7 @@
#include "lcp.h"
#include "iplist.h"
#include "throughput.h"
#include "slcompress.h"
#include "ipcp.h"
#include "modem.h"
#ifndef NOALIAS
@ -70,7 +71,6 @@
#include "route.h"
#include "ccp.h"
#include "ip.h"
#include "slcompress.h"
#include "auth.h"
#include "async.h"
#include "link.h"

View File

@ -23,11 +23,13 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: datalink.c,v 1.1.2.22 1998/03/13 21:07:30 brian Exp $
* $Id: datalink.c,v 1.1.2.23 1998/03/16 22:52:01 brian Exp $
*/
#include <sys/param.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <alias.h>
#include <stdio.h>
@ -52,6 +54,7 @@
#include "link.h"
#include "physical.h"
#include "iplist.h"
#include "slcompress.h"
#include "ipcp.h"
#include "filter.h"
#include "bundle.h"

View File

@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: filter.c,v 1.22.2.7 1998/03/13 21:07:31 brian Exp $
* $Id: filter.c,v 1.22.2.8 1998/03/16 22:52:04 brian Exp $
*
* TODO: Shoud send ICMP error message when we discard packets.
*/
@ -26,6 +26,8 @@
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <stdio.h>
#include <stdlib.h>
@ -45,6 +47,7 @@
#include "hdlc.h"
#include "link.h"
#include "fsm.h"
#include "slcompress.h"
#include "ipcp.h"
#include "filter.h"
#include "descriptor.h"

View File

@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: fsm.c,v 1.27.2.20 1998/03/13 21:08:01 brian Exp $
* $Id: fsm.c,v 1.27.2.21 1998/03/16 22:52:10 brian Exp $
*
* TODO:
* o Refer loglevel for log output
@ -25,6 +25,8 @@
*/
#include <sys/param.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <stdio.h>
#include <string.h>
@ -50,6 +52,7 @@
#include "descriptor.h"
#include "physical.h"
#include "iplist.h"
#include "slcompress.h"
#include "ipcp.h"
#include "filter.h"
#include "bundle.h"

View File

@ -17,12 +17,14 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: hdlc.c,v 1.28.2.19 1998/03/13 21:07:33 brian Exp $
* $Id: hdlc.c,v 1.28.2.20 1998/03/16 22:52:15 brian Exp $
*
* TODO:
*/
#include <sys/param.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <stdio.h>
#include <string.h>
@ -39,6 +41,7 @@
#include "lcpproto.h"
#include "iplist.h"
#include "throughput.h"
#include "slcompress.h"
#include "ipcp.h"
#include "ip.h"
#include "vjcomp.h"
@ -410,7 +413,7 @@ DecodePacket(struct bundle *bundle, u_short proto, struct mbuf * bp,
break;
case PROTO_VJUNCOMP:
case PROTO_VJCOMP:
bp = VjCompInput(bp, proto);
bp = VjCompInput(&bundle->ncp.ipcp, bp, proto);
if (bp == NULL)
break;
/* fall down */

View File

@ -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.38.2.12 1998/03/13 21:07:34 brian Exp $
* $Id: ip.c,v 1.38.2.13 1998/03/16 22:52:17 brian Exp $
*
* TODO:
* o Return ICMP message for filterd packet
@ -59,6 +59,7 @@
#include "vars.h"
#include "throughput.h"
#include "iplist.h"
#include "slcompress.h"
#include "ipcp.h"
#include "filter.h"
#include "bundle.h"

View File

@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: ipcp.c,v 1.50.2.22 1998/03/13 21:08:03 brian Exp $
* $Id: ipcp.c,v 1.50.2.23 1998/03/16 22:52:20 brian Exp $
*
* TODO:
* o More RFC1772 backwoard compatibility
@ -50,8 +50,8 @@
#include "lcp.h"
#include "iplist.h"
#include "throughput.h"
#include "ipcp.h"
#include "slcompress.h"
#include "ipcp.h"
#include "filter.h"
#include "bundle.h"
#include "loadalias.h"
@ -234,6 +234,8 @@ ipcp_Init(struct ipcp *ipcp, struct bundle *bundle, struct link *l,
ipcp->cfg.nbns_entries[0].s_addr = INADDR_ANY;
ipcp->cfg.nbns_entries[1].s_addr = INADDR_ANY;
memset(&ipcp->vj, '\0', sizeof ipcp->vj);
ipcp->my_ifip.s_addr = INADDR_ANY;
ipcp->peer_ifip.s_addr = INADDR_ANY;
@ -281,7 +283,7 @@ ipcp_Setup(struct ipcp *ipcp)
ipcp->cfg.VJInitComp;
else
ipcp->my_compproto = 0;
VjInit(ipcp->cfg.VJInitSlots - 1);
sl_compress_init(&ipcp->vj.cslc, ipcp->cfg.VJInitSlots - 1);
ipcp->peer_reject = 0;
ipcp->my_reject = 0;
@ -542,7 +544,7 @@ IpcpLayerUp(struct fsm *fp)
tbuff, inet_ntoa(ipcp->peer_ip));
if (ipcp->peer_compproto >> 16 == PROTO_VJCOMP)
VjInit((ipcp->peer_compproto >> 8) & 255);
sl_compress_init(&ipcp->vj.cslc, (ipcp->peer_compproto >> 8) & 255);
if (ipcp_SetIPaddress(fp->bundle, ipcp->my_ip,
ipcp->peer_ip, 0) < 0) {

View File

@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: ipcp.h,v 1.18.2.15 1998/03/13 21:07:37 brian Exp $
* $Id: ipcp.h,v 1.18.2.16 1998/03/13 21:08:04 brian Exp $
*
* TODO:
*/
@ -60,6 +60,12 @@ struct ipcp {
#endif
} cfg;
struct {
struct slcompress cslc; /* VJ state */
struct slstat slstat; /* VJ statistics */
} vj;
int heis1172 : 1; /* True if he is speaking rfc1172 */
struct in_addr peer_ip; /* IP address he's willing to use */

View File

@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: lcp.c,v 1.55.2.28 1998/03/13 21:08:05 brian Exp $
* $Id: lcp.c,v 1.55.2.29 1998/03/16 22:52:23 brian Exp $
*
* TODO:
* o Limit data field length by MRU
@ -30,6 +30,8 @@
#include <net/if_tun.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <signal.h>
#include <stdarg.h>
@ -49,6 +51,7 @@
#include "lcp.h"
#include "iplist.h"
#include "throughput.h"
#include "slcompress.h"
#include "ipcp.h"
#include "lcpproto.h"
#include "filter.h"

View File

@ -23,12 +23,14 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: link.c,v 1.1.2.11 1998/03/13 21:07:38 brian Exp $
* $Id: link.c,v 1.1.2.12 1998/03/16 22:52:24 brian Exp $
*
*/
#include <sys/param.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <stdio.h>
#include <termios.h>
@ -47,6 +49,7 @@
#include "link.h"
#include "fsm.h"
#include "iplist.h"
#include "slcompress.h"
#include "ipcp.h"
#include "filter.h"
#include "bundle.h"

View File

@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: lqr.c,v 1.22.2.12 1998/03/13 21:07:39 brian Exp $
* $Id: lqr.c,v 1.22.2.13 1998/03/16 22:52:25 brian Exp $
*
* o LQR based on RFC1333
*
@ -28,6 +28,8 @@
#include <sys/param.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <stdio.h>
#include <string.h>
@ -49,6 +51,7 @@
#include "descriptor.h"
#include "physical.h"
#include "iplist.h"
#include "slcompress.h"
#include "ipcp.h"
#include "filter.h"
#include "bundle.h"

View File

@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: main.c,v 1.121.2.33 1998/03/16 22:52:28 brian Exp $
* $Id: main.c,v 1.121.2.34 1998/03/16 22:53:11 brian Exp $
*
* TODO:
* o Add commands for traffic summary, version display, etc.
@ -60,6 +60,7 @@
#include "ccp.h"
#include "iplist.h"
#include "throughput.h"
#include "slcompress.h"
#include "ipcp.h"
#include "filter.h"
#include "bundle.h"

View File

@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: modem.c,v 1.77.2.35 1998/03/13 21:07:41 brian Exp $
* $Id: modem.c,v 1.77.2.36 1998/03/16 22:52:32 brian Exp $
*
* TODO:
*/
@ -26,6 +26,8 @@
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <errno.h>
#include <fcntl.h>
@ -60,6 +62,7 @@
#include "throughput.h"
#include "async.h"
#include "iplist.h"
#include "slcompress.h"
#include "ipcp.h"
#include "filter.h"
#include "bundle.h"

View File

@ -18,12 +18,14 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: pap.c,v 1.20.2.17 1998/03/13 21:07:42 brian Exp $
* $Id: pap.c,v 1.20.2.18 1998/03/16 22:52:35 brian Exp $
*
* TODO:
*/
#include <sys/param.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <pwd.h>
#include <stdio.h>
@ -57,6 +59,7 @@
#include "descriptor.h"
#include "physical.h"
#include "iplist.h"
#include "slcompress.h"
#include "ipcp.h"
#include "filter.h"
#include "bundle.h"

View File

@ -16,11 +16,15 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: physical.c,v 1.1.2.16 1998/03/13 21:07:43 brian Exp $
* $Id: physical.c,v 1.1.2.17 1998/03/16 22:52:38 brian Exp $
*
*/
#include <sys/param.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <sys/tty.h>
#include <sys/uio.h>
@ -58,6 +62,7 @@
#include "vars.h"
#include "iplist.h"
#include "slcompress.h"
#include "ipcp.h"
#include "filter.h"
#include "bundle.h"

View File

@ -23,11 +23,13 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: prompt.c,v 1.1.2.13 1998/03/16 22:52:48 brian Exp $
* $Id: prompt.c,v 1.1.2.14 1998/03/16 22:53:15 brian Exp $
*/
#include <sys/param.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <stdarg.h>
#include <stdio.h>
@ -50,6 +52,7 @@
#include "main.h"
#include "iplist.h"
#include "throughput.h"
#include "slcompress.h"
#include "ipcp.h"
#include "filter.h"
#include "bundle.h"

View File

@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: route.c,v 1.42.2.10 1998/03/13 21:07:44 brian Exp $
* $Id: route.c,v 1.42.2.11 1998/03/16 22:52:50 brian Exp $
*
*/
@ -30,6 +30,8 @@
#include <netinet/in.h>
#include <arpa/inet.h>
#include <net/if_dl.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <errno.h>
#include <machine/endian.h>
@ -55,6 +57,7 @@
#include "hdlc.h"
#include "link.h"
#include "fsm.h"
#include "slcompress.h"
#include "ipcp.h"
#include "filter.h"
#include "bundle.h"

View File

@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: slcompress.c,v 1.15.2.1 1998/01/29 23:11:43 brian Exp $
* $Id: slcompress.c,v 1.15.2.2 1998/02/10 03:23:42 brian Exp $
*
* Van Jacobson (van@helios.ee.lbl.gov), Dec 31, 1989:
* - Initial distribution.
@ -42,19 +42,13 @@
#include "vars.h"
#include "descriptor.h"
#include "prompt.h"
static struct slstat {
int sls_packets; /* outbound packets */
int sls_compressed; /* outbound compressed packets */
int sls_searches; /* searches for connection state */
int sls_misses; /* times couldn't find conn. state */
int sls_uncompressedin; /* inbound uncompressed packets */
int sls_compressedin; /* inbound compressed packets */
int sls_errorin; /* inbound unknown type packets */
int sls_tossed; /* inbound packets tossed because of error */
} slstat;
#define INCR(counter) slstat.counter++;
#include "timer.h"
#include "fsm.h"
#include "throughput.h"
#include "iplist.h"
#include "ipcp.h"
#include "filter.h"
#include "bundle.h"
void
sl_compress_init(struct slcompress * comp, int max_state)
@ -132,7 +126,8 @@ sl_compress_init(struct slcompress * comp, int max_state)
u_char
sl_compress_tcp(struct mbuf * m,
struct ip * ip,
struct slcompress * comp,
struct slcompress *comp,
struct slstat *slstat,
int compress_cid)
{
register struct cstate *cs = comp->last_cs->cs_next;
@ -169,10 +164,10 @@ sl_compress_tcp(struct mbuf * m,
* it's most likely to be used again & we don't have to do any reordering
* if it's used.
*/
INCR(sls_packets)
if (ip->ip_src.s_addr != cs->cs_ip.ip_src.s_addr ||
ip->ip_dst.s_addr != cs->cs_ip.ip_dst.s_addr ||
*(int *) th != ((int *) &cs->cs_ip)[cs->cs_ip.ip_hl]) {
slstat->sls_packets++;
if (ip->ip_src.s_addr != cs->cs_ip.ip_src.s_addr ||
ip->ip_dst.s_addr != cs->cs_ip.ip_dst.s_addr ||
*(int *) th != ((int *) &cs->cs_ip)[cs->cs_ip.ip_hl]) {
/*
* Wasn't the first -- search for it.
@ -190,10 +185,10 @@ sl_compress_tcp(struct mbuf * m,
do {
lcs = cs;
cs = cs->cs_next;
INCR(sls_searches)
if (ip->ip_src.s_addr == cs->cs_ip.ip_src.s_addr
&& ip->ip_dst.s_addr == cs->cs_ip.ip_dst.s_addr
&& *(int *) th == ((int *) &cs->cs_ip)[cs->cs_ip.ip_hl])
slstat->sls_searches++;
if (ip->ip_src.s_addr == cs->cs_ip.ip_src.s_addr
&& ip->ip_dst.s_addr == cs->cs_ip.ip_dst.s_addr
&& *(int *) th == ((int *) &cs->cs_ip)[cs->cs_ip.ip_hl])
goto found;
} while (cs != lastcs);
@ -204,7 +199,7 @@ sl_compress_tcp(struct mbuf * m,
* state points to the newest and we only need to set last_cs to update
* the lru linkage.
*/
INCR(sls_misses)
slstat->sls_misses++;
comp->last_cs = lcs;
#define THOFFSET(th) (th->th_off)
hlen += th->th_off;
@ -385,8 +380,8 @@ found:
*cp++ = deltaA >> 8;
*cp++ = deltaA;
memcpy(cp, new_seq, deltaS);
INCR(sls_compressed)
return (TYPE_COMPRESSED_TCP);
slstat->sls_compressed++;
return (TYPE_COMPRESSED_TCP);
/*
* Update connection state cs & send uncompressed packet ('uncompressed'
@ -402,10 +397,8 @@ uncompressed:
int
sl_uncompress_tcp(u_char ** bufp,
int len,
u_int type,
struct slcompress * comp)
sl_uncompress_tcp(u_char ** bufp, int len, u_int type,
struct slcompress *comp, struct slstat *slstat)
{
register u_char *cp;
register u_int hlen, changes;
@ -437,8 +430,8 @@ sl_uncompress_tcp(u_char ** bufp,
memcpy(&cs->cs_ip, ip, hlen);
cs->cs_ip.ip_sum = 0;
cs->cs_hlen = hlen;
INCR(sls_uncompressedin)
return (len);
slstat->sls_uncompressedin++;
return (len);
default:
goto bad;
@ -447,8 +440,8 @@ sl_uncompress_tcp(u_char ** bufp,
break;
}
/* We've got a compressed packet. */
INCR(sls_compressedin)
cp = *bufp;
slstat->sls_compressedin++;
cp = *bufp;
changes = *cp++;
LogPrintf(LogDEBUG, "compressed: changes = %02x\n", changes);
if (changes & NEW_C) {
@ -470,8 +463,8 @@ sl_uncompress_tcp(u_char ** bufp,
* the packet.
*/
if (comp->flags & SLF_TOSS) {
INCR(sls_tossed)
return (0);
slstat->sls_tossed++;
return (0);
}
}
cs = &comp->rstate[comp->last_recv];
@ -568,20 +561,25 @@ sl_uncompress_tcp(u_char ** bufp,
return (len);
bad:
comp->flags |= SLF_TOSS;
INCR(sls_errorin)
return (0);
slstat->sls_errorin++;
return (0);
}
int
ReportCompress(struct cmdargs const *arg)
{
prompt_Printf(&prompt, "Out: %d (compress) / %d (total)",
slstat.sls_compressed, slstat.sls_packets);
prompt_Printf(&prompt, "VJ compression statistics:\n");
prompt_Printf(&prompt, " Out: %d (compress) / %d (total)",
arg->bundle->ncp.ipcp.vj.slstat.sls_compressed,
arg->bundle->ncp.ipcp.vj.slstat.sls_packets);
prompt_Printf(&prompt, " %d (miss) / %d (search)\n",
slstat.sls_misses, slstat.sls_searches);
prompt_Printf(&prompt, "In: %d (compress), %d (uncompress)",
slstat.sls_compressedin, slstat.sls_uncompressedin);
arg->bundle->ncp.ipcp.vj.slstat.sls_misses,
arg->bundle->ncp.ipcp.vj.slstat.sls_searches);
prompt_Printf(&prompt, " In: %d (compress), %d (uncompress)",
arg->bundle->ncp.ipcp.vj.slstat.sls_compressedin,
arg->bundle->ncp.ipcp.vj.slstat.sls_uncompressedin);
prompt_Printf(&prompt, " %d (error), %d (tossed)\n",
slstat.sls_errorin, slstat.sls_tossed);
arg->bundle->ncp.ipcp.vj.slstat.sls_errorin,
arg->bundle->ncp.ipcp.vj.slstat.sls_tossed);
return 0;
}

View File

@ -1,7 +1,7 @@
/*
* Definitions for tcp compression routines.
*
* $Header: /home/ncvs/src/usr.sbin/ppp/slcompress.h,v 1.10.2.1 1998/01/29 23:11:44 brian Exp $
* $Header: /home/ncvs/src/usr.sbin/ppp/slcompress.h,v 1.10.2.2 1998/02/21 01:45:25 brian Exp $
*
* Copyright (c) 1989 Regents of the University of California.
* All rights reserved.
@ -18,7 +18,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: slcompress.h,v 1.10.2.1 1998/01/29 23:11:44 brian Exp $
* $Id: slcompress.h,v 1.10.2.2 1998/02/21 01:45:25 brian Exp $
*
* Van Jacobson (van@helios.ee.lbl.gov), Dec 31, 1989:
* - Initial distribution.
@ -126,11 +126,23 @@ struct slcompress {
struct cstate rstate[MAX_VJ_STATES]; /* receive connection states */
};
struct slstat {
int sls_packets; /* outbound packets */
int sls_compressed; /* outbound compressed packets */
int sls_searches; /* searches for connection state */
int sls_misses; /* times couldn't find conn. state */
int sls_uncompressedin; /* inbound uncompressed packets */
int sls_compressedin; /* inbound compressed packets */
int sls_errorin; /* inbound unknown type packets */
int sls_tossed; /* inbound packets tossed because of error */
};
/* flag values */
#define SLF_TOSS 1 /* tossing rcvd frames because of input err */
extern void sl_compress_init(struct slcompress *, int);
extern u_char sl_compress_tcp
(struct mbuf *, struct ip *, struct slcompress *, int);
extern int sl_uncompress_tcp(u_char **, int, u_int, struct slcompress *);
extern u_char sl_compress_tcp(struct mbuf *, struct ip *, struct slcompress *,
struct slstat *, int);
extern int sl_uncompress_tcp(u_char **, int, u_int, struct slcompress *,
struct slstat *);
extern int ReportCompress(struct cmdargs const *);

View File

@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: tun.c,v 1.6.4.6 1998/03/13 21:07:45 brian Exp $
* $Id: tun.c,v 1.6.4.7 1998/03/16 22:52:52 brian Exp $
*/
#include <sys/param.h>
@ -33,6 +33,8 @@
#include <net/if.h>
#include <sys/select.h>
#include <net/if_tun.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <stdio.h>
#include <string.h>
@ -51,6 +53,7 @@
#include "fsm.h"
#include "throughput.h"
#include "iplist.h"
#include "slcompress.h"
#include "ipcp.h"
#include "filter.h"
#include "bundle.h"

View File

@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: vjcomp.c,v 1.16.2.7 1998/03/13 21:07:46 brian Exp $
* $Id: vjcomp.c,v 1.16.2.8 1998/03/16 22:52:54 brian Exp $
*
* TODO:
*/
@ -51,14 +51,6 @@
#define MAX_VJHEADER 16 /* Maximum size of compressed header */
static struct slcompress cslc;
void
VjInit(int max_state)
{
sl_compress_init(&cslc, max_state);
}
void
SendPppFrame(struct link *l, struct mbuf * bp, struct bundle *bundle)
{
@ -71,7 +63,9 @@ SendPppFrame(struct link *l, struct mbuf * bp, struct bundle *bundle)
bundle->ncp.ipcp.peer_compproto);
if (((struct ip *) MBUF_CTOP(bp))->ip_p == IPPROTO_TCP
&& cproto == PROTO_VJCOMP) {
type = sl_compress_tcp(bp, (struct ip *)MBUF_CTOP(bp), &cslc,
type = sl_compress_tcp(bp, (struct ip *)MBUF_CTOP(bp),
&bundle->ncp.ipcp.vj.cslc,
&bundle->ncp.ipcp.vj.slstat,
bundle->ncp.ipcp.peer_compproto & 0xff);
LogPrintf(LogDEBUG, "SendPppFrame: type = %x\n", type);
switch (type) {
@ -97,7 +91,7 @@ SendPppFrame(struct link *l, struct mbuf * bp, struct bundle *bundle)
}
static struct mbuf *
VjUncompressTcp(struct mbuf * bp, u_char type)
VjUncompressTcp(struct ipcp *ipcp, struct mbuf * bp, u_char type)
{
u_char *bufp;
int len, olen, rlen;
@ -112,7 +106,7 @@ VjUncompressTcp(struct mbuf * bp, u_char type)
* space for uncompression job.
*/
bufp = MBUF_CTOP(bp);
len = sl_uncompress_tcp(&bufp, len, type, &cslc);
len = sl_uncompress_tcp(&bufp, len, type, &ipcp->vj.cslc, &ipcp->vj.slstat);
if (len <= 0) {
pfree(bp);
bp = NULL;
@ -130,7 +124,7 @@ VjUncompressTcp(struct mbuf * bp, u_char type)
rlen = len;
bufp = work + MAX_HDR;
bp = mbread(bp, bufp, rlen);
len = sl_uncompress_tcp(&bufp, olen, type, &cslc);
len = sl_uncompress_tcp(&bufp, olen, type, &ipcp->vj.cslc, &ipcp->vj.slstat);
if (len <= 0) {
pfree(bp);
return NULL;
@ -144,7 +138,7 @@ VjUncompressTcp(struct mbuf * bp, u_char type)
}
struct mbuf *
VjCompInput(struct mbuf * bp, int proto)
VjCompInput(struct ipcp *ipcp, struct mbuf *bp, int proto)
{
u_char type;
@ -162,7 +156,7 @@ VjCompInput(struct mbuf * bp, int proto)
LogPrintf(LogERROR, "VjCompInput...???\n");
return (bp);
}
bp = VjUncompressTcp(bp, type);
bp = VjUncompressTcp(ipcp, bp, type);
return (bp);
}

View File

@ -23,10 +23,9 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: vjcomp.h,v 1.5.4.2 1998/01/30 19:46:07 brian Exp $
* $Id: vjcomp.h,v 1.5.4.3 1998/02/23 00:38:44 brian Exp $
*/
extern void VjInit(int);
extern void SendPppFrame(struct link *, struct mbuf *, struct bundle *);
extern struct mbuf *VjCompInput(struct mbuf *, int);
extern struct mbuf *VjCompInput(struct ipcp *, struct mbuf *, int);
extern const char *vj2asc(u_int32_t);