⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pppshow.c

📁 vxworks的tcpip协议栈源码
💻 C
字号:
/* pppShow.c - Point-to-Point Protocol show routines *//* Copyright 1995-1999 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01j,14mar99,jdi  doc: removed refs to config.h and/or configAll.h (SPR 25663).01i,11jul95,dzb  more doc tweaks.01h,06jul95,dzb  doc tweaks.01g,23jun95,dzb  changed to pppInfoGet() to copy out structures.                 added PAP stats to pppInfoShow().01f,15jun95,dzb  header file consolidation.01e,08may95,dzb  Added pppSecretShow().01d,07mar95,dzb  Changed "ip packets" tp be  a real count of IP packets.                 additional doc/formatting.01c,09feb95,dab  changed pppInfoShow() format.  removed lcp_echo_fails_reached.                 included VJ, mtu, and mru info (SPR #4045).01b,13jan95,dzb  warnings cleanup.  changed to include pppShow.h.  ANSI-fied.01a,21dec94,dab  VxWorks port - first WRS version.	   +dzb  added: path for ppp header files, WRS copyright.*//*DESCRIPTIONThis library provides routines to show Point-to-Point Protocol (PPP) linkstatus information and statistics.  Also provided are routines thatprogrammatically access this same information.This library is automatically linked into the VxWorks system image whenthe configuration macro INCLUDE_PPP is defined.INCLUDE FILES: pppLib.hSEE ALSO: pppLib,.pG "Network"*//* includes */#include <vxWorks.h>#include <stdio.h>#include <ioctl.h>#include <net/mbuf.h>#include <sys/types.h>#include <sys/socket.h>#include <net/if.h>#include <netinet/in.h>#include <netinet/in_systm.h>#include <netinet/ip.h>#include <netinet/ip_var.h>#include "pppLib.h"/* pointer to the per task variables */extern PPP_TASK_VARS *ppp_if[];extern struct ppp_softc *ppp_softc[];static char *link_phase[] =    {    "DEAD",    "ESTABLISH",    "AUTHENTICATE",    "NETWORK",    "TERMINATE"    };static char *link_state[] =    {    "INITIAL",    "STARTING",    "CLOSED",    "STOPPED",    "CLOSING",    "STOPPING",    "REQUEST SENT",    "ACK RECEIVED",    "ACK SENT",    "OPENED"    };static char *client_pap_state[] =    {    "INITIAL",    "CLOSED",    "PENDING",    "AUTHENTICATION REQ",    "OPEN",    "BAD AUTHENTICATION"    };static char *server_pap_state[] =    {    "INITIAL",    "CLOSED",    "PENDING",    "LISTEN",    "OPEN",    "BAD AUTHENTICATION"    };static char *client_chap_state[] =    {    "INITIAL",    "CLOSED",    "PENDING",    "LISTEN",    "RESPONSE",    "OPEN"    };static char *server_chap_state[] =    {    "INITIAL",    "CLOSED",    "PENDING",    "INITIAL CHALLENGE",    "OPEN",    "RECHALLENGE",    "BAD AUTHENTICATION"    };/******************************************************************************** pppShowInit - initialize the PPP show facility** This routine links the PPP show facility into the VxWorks system image.* It is called from usrNetwork.c when the configuration macro INCLUDE_PPP* is defined.** RETURNS: N/A** NOMANUAL*/void pppShowInit (void)    {    }/********************************************************************************* pppInfoShow - display PPP link status information** This routine displays status information pertaining to each initialized* Point-to-Point Protocol (PPP) link, regardless of the link state.* State and option information is gathered for the Link Control Protocol* (LCP), Internet Protocol Control Protocol (IPCP), Password Authentication* Protocol (PAP), and Challenge-Handshake Authentication Protocol (CHAP).** RETURNS: N/A** SEE ALSO: pppLib*/void pppInfoShow (void)    {    FAST int i;    FAST PPP_TASK_VARS *tmp;    /* per task PPP variables */    int link_found = 0;    int n;    for (i = 0; i < NPPP; i++)	{	if ((tmp = ppp_if[i]) == NULL)	    continue;	link_found = 1;	printf ("ppp%d\r\n", i);	printf ("\tLCP Stats\r\n");	printf ("\t\t%-30.30s  %s\r\n", "LCP phase", link_phase[tmp->phase]);	printf ("\t\t%-30.30s  %s\r\n", "LCP state",		link_state[tmp->lcp_fsm.state]);	printf ("\t\t%-30.30s  %s\r\n", "passive",	        tmp->lcp_wantoptions.passive ? "ON" : "OFF");	printf ("\t\t%-30.30s  %s\r\n", "silent",	        tmp->lcp_wantoptions.silent ? "ON" : "OFF");	printf ("\t\t%-30.30s  %s\r\n", "restart",	        tmp->lcp_wantoptions.restart ? "ON" : "OFF");        if (tmp->lcp_fsm.state == OPENED)            {            ppptioctl (i, PPPIOCGMRU, (caddr_t) &n);            printf ("\t\t%-30.30s  %d\r\n", "mru", n);            ppptioctl (i, SIOCGIFMTU, (caddr_t) &n);            printf ("\t\t%-30.30s  %d\r\n", "mtu", n);            ppptioctl (i, PPPIOCGASYNCMAP, (caddr_t) &n);            printf ("\t\t%-30.30s  0x%x\r\n", "async map", n);            printf ("\t\t%-30.30s  0x%x\r\n", "local magic number",                    tmp->lcp_gotoptions.magicnumber);            printf ("\t\t%-30.30s  %s\r\n", "protocol field compression",                    tmp->lcp_gotoptions.neg_pcompression ? "ON" : "OFF");            printf ("\t\t%-30.30s  %s\r\n", "addr/ctrl field compression",                    tmp->lcp_gotoptions.neg_accompression ? "ON" : "OFF");            }	printf ("\t\t%-30.30s  %s\r\n", "lcp echo timer",	        tmp->lcp_echo_timer_running ? "ON" : "OFF");        if (tmp->lcp_echo_timer_running)            {	    printf ("\t\t%-30.30s  %d\r\n", "lcp echos pending",	            tmp->lcp_echos_pending);	    printf ("\t\t%-30.30s  %d\r\n", "lcp echo number",	            tmp->lcp_echo_number);    	    printf ("\t\t%-30.30s  %d\r\n", "lcp echo interval",	            tmp->lcp_echo_interval);            printf ("\t\t%-30.30s  %d\r\n", "lcp echo fails",	            tmp->lcp_echo_fails);            }        printf ("\tIPCP Stats\r\n");        printf ("\t\t%-30.30s  %s\r\n", "IPCP state",                link_state[tmp->ipcp_fsm.state]);             if (tmp->ipcp_fsm.state == OPENED)            {            printf ("\t\t%-30.30s  %s\r\n", "local IP address",                    ip_ntoa(tmp->ipcp_gotoptions.ouraddr));            printf ("\t\t%-30.30s  %s\r\n", "remote IP address",                    ip_ntoa(tmp->ipcp_hisoptions.hisaddr));            printf ("\t\t%-30.30s  %s\r\n", "vj compression protocol",                     tmp->ipcp_gotoptions.neg_vj ? "ON" : "OFF");            }	printf ("\tPAP Stats\r\n");	printf ("\t\t%-30.30s  %s\r\n", "client PAP state",	        client_pap_state[tmp->upap.us_clientstate]);	printf ("\t\t%-30.30s  %s\r\n", "server PAP state",	        server_pap_state[tmp->upap.us_serverstate]);	printf ("\tCHAP Stats\r\n");	printf ("\t\t%-30.30s  %s\r\n", "client CHAP state",	        client_chap_state[tmp->chap.clientstate]);	printf ("\t\t%-30.30s  %s\r\n", "server CHAP state",	        server_chap_state[tmp->chap.serverstate]);	printf ("\n");        }    if (!link_found)	printf ("No PPP links are present\r\n");    }/********************************************************************************* pppInfoGet - get PPP link status information** This routine gets status information pertaining to the specified* Point-to-Point Protocol (PPP) link, regardless of the link state.* State and option information is gathered for the Link Control Protocol* (LCP), Internet Protocol Control Protocol (IPCP), Password Authentication* Protocol (PAP), and Challenge-Handshake Authentication Protocol (CHAP).** The PPP link information is returned through a PPP_INFO structure, which* is defined in h/netinet/ppp/pppShow.h.** RETURNS: OK, or ERROR if <unit> is an invalid PPP unit number.** SEE ALSO: pppLib*/STATUS pppInfoGet    (    int unit,		/* PPP interface unit number to examine */    PPP_INFO *pInfo	/* PPP_INFO structure to be filled */    )    {    FAST PPP_TASK_VARS *tmp;    if (unit < 0 || unit > NPPP || (tmp = ppp_if[unit]) == NULL ||	pInfo == NULL)        return (ERROR);    /* LCP variables */    BCOPY (&tmp->lcp_wantoptions, &pInfo->lcp_wantoptions,	sizeof(struct lcp_options));    BCOPY (&tmp->lcp_gotoptions, &pInfo->lcp_gotoptions,	sizeof(struct lcp_options));    BCOPY (&tmp->lcp_allowoptions, &pInfo->lcp_allowoptions,	sizeof(struct lcp_options));    BCOPY (&tmp->lcp_hisoptions, &pInfo->lcp_hisoptions,	sizeof(struct lcp_options));    BCOPY (&tmp->lcp_fsm, &pInfo->lcp_fsm, sizeof(struct fsm));    pInfo->lcp_echos_pending = tmp->lcp_echos_pending;    pInfo->lcp_echo_number = tmp->lcp_echo_number;    pInfo->lcp_echo_timer_running = tmp->lcp_echo_timer_running;    pInfo->lcp_echo_interval = tmp->lcp_echo_interval;    pInfo->lcp_echo_fails = tmp->lcp_echo_fails;    /* IPCP variables */     BCOPY (&tmp->ipcp_wantoptions, &pInfo->ipcp_wantoptions,	sizeof(struct ipcp_options));    BCOPY (&tmp->ipcp_gotoptions, &pInfo->ipcp_gotoptions,	sizeof(struct ipcp_options));    BCOPY (&tmp->ipcp_allowoptions, &pInfo->ipcp_allowoptions,	sizeof(struct ipcp_options));    BCOPY (&tmp->ipcp_hisoptions, &pInfo->ipcp_hisoptions,	sizeof(struct ipcp_options));    BCOPY (&tmp->ipcp_fsm, &pInfo->ipcp_fsm, sizeof(struct fsm));    /* authentication variables */     BCOPY (&tmp->upap, &pInfo->upap, sizeof(struct upap_state));    BCOPY (&tmp->chap, &pInfo->chap, sizeof(struct chap_state));    return (OK);    }/********************************************************************************* pppstatShow - display PPP link statistics** This routine displays statistics for each initialized Point-to-Point* Protocol (PPP) link.  Detailed are the numbers of bytes and packets received * and sent through each PPP interface.** RETURNS: N/A** SEE ALSO: pppLib*/void pppstatShow (void)    {    FAST int i;    FAST struct ppp_softc *tmp;    int link_found = 0;    for (i = 0; i < NPPP; i++)	{	if ((tmp = ppp_softc[i]) == NULL)	    continue;	link_found = 1;	printf ("ppp%d\r\n", i);	printf ("\tInput\r\n");	printf ("\t\t%-30.30s  %d\r\n", "total bytes ", tmp->sc_bytesrcvd);	printf ("\t\t%-30.30s  %d\r\n", "total packets ",	        tmp->sc_if.if_ipackets);	printf ("\t\t%-30.30s  %d\r\n", "ip packets ", tmp->sc_iprcvd);	printf ("\t\t%-30.30s  %d\r\n", "VJ compressed packets ",	        tmp->sc_comp.sls_compressedin);	printf ("\t\t%-30.30s  %d\r\n", "VJ uncompressed packets ",	        tmp->sc_comp.sls_uncompressedin);	printf ("\t\t%-30.30s  %d\r\n", "VJ uncompress errors",	        tmp->sc_comp.sls_errorin);	printf ("\tOutput\r\n");	printf ("\t\t%-30.30s  %d\r\n", "total bytes ", tmp->sc_bytessent);	printf ("\t\t%-30.30s  %d\r\n", "total packets ",		tmp->sc_if.if_opackets);	printf ("\t\t%-30.30s  %d\r\n", "ip packets ", tmp->sc_ipsent);	printf ("\t\t%-30.30s  %d\r\n", "VJ compressed packets ",	        tmp->sc_comp.sls_compressed);	printf ("\t\t%-30.30s  %d\r\n", "VJ uncompressed packets ",	        tmp->sc_comp.sls_packets - tmp->sc_comp.sls_compressed);        }    if (!link_found)        printf ("No PPP links are present\r\n");    }/********************************************************************************* pppstatGet - get PPP link statistics** This routine gets statistics for the specified Point-to-Point Protocol* (PPP) link.  Detailed are the numbers of bytes and packets received * and sent through the PPP interface.** The PPP link statistics are returned through a PPP_STAT structure, which* is defined in h/netinet/ppp/pppShow.h.** RETURNS: OK, or ERROR if <unit> is an invalid PPP unit number.** SEE ALSO: pppLib*/STATUS pppstatGet    (    int unit,			/* PPP interface unit number to examine */    PPP_STAT *pStat		/* PPP_STAT structure to be filled */    )    {    FAST struct ppp_softc *tmp;    if (unit < 0 || unit > NPPP || (tmp = ppp_softc[unit]) == NULL ||	pStat == NULL)	return (ERROR);    pStat->in_bytes = tmp->sc_bytesrcvd;    pStat->in_pkt = tmp->sc_if.if_ipackets;    pStat->in_ip_pkt = tmp->sc_iprcvd;    pStat->in_vj_compr_pkt = tmp->sc_comp.sls_compressedin;    pStat->in_vj_uncompr_pkt = tmp->sc_comp.sls_uncompressedin;    pStat->in_vj_compr_error = tmp->sc_comp.sls_errorin;        pStat->out_bytes = tmp->sc_bytessent;    pStat->out_pkt = tmp->sc_if.if_opackets;    pStat->out_ip_pkt = tmp->sc_ipsent;    pStat->out_vj_compr_pkt = tmp->sc_comp.sls_compressed;    pStat->out_vj_uncompr_pkt = tmp->sc_comp.sls_packets -	tmp->sc_comp.sls_compressed;    return (OK);    }/********************************************************************************* pppSecretShow - display the PPP authentication secrets table** This routine displays the Point-to-Point Protocol (PPP) authentication* secrets table.  The information in the secrets table may be used by the* Password Authentication Protocol (PAP) and Challenge-Handshake Authentication* Protocol (CHAP) user authentication protocols.** RETURNS: N/A** SEE ALSO: pppLib, pppSecretAdd(), pppSecretDelete()*/void pppSecretShow (void)    {    PPP_SECRET *	pSecret = pppSecretHead;    if (pSecret == NULL)				/* list empty ? */	return;    /* printout header */    printf ("PPP AUTHENTICAITON SECRETS:\n");    printf ("client            server            secret            address list\n");    printf ("-------------------------------------------------------------------------------\n");    /* printout secrets */    for (; pSecret != NULL; pSecret = pSecret->secretNext)	{	printf ("%-17.17s ", pSecret->client);	printf ("%-17.17s ", pSecret->server);	printf ("%-17.17s ", pSecret->secret);	printf ("%-25.25s\n", pSecret->addrs);	}    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -