?? pppmib.c
字號:
/************************************************************************/
/* */
/* MODULE: pppmib.c */
/* PRODUCT: pNA+, OpEN TCP/IP PPP driver */
/* PURPOSE: PPPMIB module */
/* DATE: 28 February, 1996 */
/* */
/*----------------------------------------------------------------------*/
/* */
/* Copyright 1996, Integrated Systems, Inc. */
/* ALL RIGHTS RESERVED */
/* */
/* Permission is hereby granted to licensees of Integrated Systems, */
/* Inc. products to use or abstract this computer program for the */
/* sole purpose of implementing a product based on Integrated */
/* Systems, Inc. products. No other rights to reproduce, use, */
/* or disseminate this computer program, whether in part or in */
/* whole, are granted. */
/* */
/* Integrated Systems, Inc. makes no representation or warranties */
/* with respect to the performance of this computer program, and */
/* specifically disclaims any responsibility for any damages, */
/* special or consequential, connected with the use of this program. */
/* */
/************************************************************************/
#include "ni_ppp.h"
#include "fsm.h"
#include "ipcp.h"
#include "pppmib.h"
static int get_pppIfEntry(int unit, struct mib_pppifentry *arg);
static int get_pppLinkStatusEntry(int unit, struct mib_pppLinkStatusEntry *arg);
static int get_pppIPEntry(int unit, struct mib_pppIPEntry *arg);
extern PCI pcis[];
extern struct ppp_pccb PPPpccb[];
extern ipcp_options ipcp_hisoptions[];
extern ipcp_options ipcp_gotoptions[];
int
ppp_ioctl(int unit, int command, void *arg)
{
int rc;
switch (command) {
case PIOCGIFENTRY:
rc = get_pppIfEntry(unit, arg);
break;
case PIOCGLINKSTATUS:
rc = get_pppLinkStatusEntry(unit, arg);
break;
case PIOCGIPENTRY:
rc = get_pppIPEntry(unit, arg);
break;
default:
rc = -1;
break;
}
return (rc);
}
static int
get_pppIfEntry(int unit, struct mib_pppifentry *arg)
{
int rc = 0;
struct ppp_pccb *ccb = &PPPpccb[unit];
if ((unit < NUM_PPP) && ccb->pppstatus == PSUP )
{
arg->ie_descr = ccb->mibstat.ifDescr;
arg->ie_type = 23; /* PPP */
arg->ie_mtu = ccb->mibstat.mtu;
arg->ie_speed = ccb->mibstat.speed;
arg->ie_physaddress = "";
arg->ie_adminstatus = ccb->mibstat.ifadminstatus;
arg->ieu_operstatus = ccb->mibstat.ifoperstatus;
arg->ie_lastchange = 0;
arg->ie_inoctets = ccb->mibstat.inoctets;
arg->ie_inucastpkts = ccb->mibstat.inucastpkts;
arg->ie_innucastpkts= ccb->mibstat.innucastpkts;
arg->ie_indiscards = ccb->mibstat.indiscards;
arg->ie_inerrors = ccb->mibstat.inerrors;
arg->ie_inunknownprotos = ccb->mibstat.inunknownprotos;
arg->ie_outoctets = ccb->mibstat.outoctets;
arg->ie_outdiscards = ccb->mibstat.outdiscards;
arg->ie_outucastpkts= ccb->mibstat.outucastpkts;
arg->ie_outnucastpkts = ccb->mibstat.outnucastpkts;
arg->ie_outerrors = ccb->mibstat.outerrors;
arg->ie_outqlen = ccb->mibstat.ifoutqlen;
arg->ie_specific = 0;
}
else rc = -1;
return (rc);
}
static int
get_pppLinkStatusEntry(int unit, struct mib_pppLinkStatusEntry *arg)
{
int rc = 0;
struct ppp_pccb *ccb = &PPPpccb[unit];
if ((unit < NUM_PPP) && ccb->pppstatus == PSUP )
{
arg->ie_PhysicalIndex = 0;
arg->ie_BadAddresses = ccb->mibstat.badaddress;
arg->ie_BadControls = ccb->mibstat.badcontrols;
arg->ie_PacketTooLongs= ccb->mibstat.packettoolongs;
arg->ie_BadFCSs = ccb->mibstat.badfcs;
arg->ie_LocalMru = ccb->mibstat.localmru;
arg->ie_RemoteMRU = ccb->mibstat.remotemru;
arg->ie_LocalToPeerACCMap = ccb->mibstat.sendaccmap;
arg->ie_PeerToLocalACCMap = ccb->mibstat.recvaccmap;
arg->ie_LToRProtComp = ccb->mibstat.sendpcomp;
arg->ie_RToLProtComp = ccb->mibstat.recvpcomp;
arg->ie_LToRACCompression = ccb->mibstat.sendaccomp;
arg->ie_RToLACCompression = ccb->mibstat.recvaccomp;
arg->ie_TransmitFcsSize = 16;
arg->ie_ReceiveFcsSize = 16;
}
else rc = -1;
return (rc);
}
static int
get_pppIPEntry(int unit, struct mib_pppIPEntry *arg)
{
int rc = 0;
if ((unit < NUM_PPP) && PPPpccb[unit].pppstatus == PSUP )
{
arg->ie_OperStatus = 1;
arg->ie_LToRCompProt = pcis[unit].pci_flags & PCI_FLAGS_VJCOMP;
arg->ie_RToLCompProt = pcis[unit].pci_flags & PCI_FLAGS_VJCOMP;
arg->ie_RemoteMaxSlotId = ipcp_hisoptions[unit].maxslotindex;
arg->ie_LocalMaxSlotId = ipcp_gotoptions[unit].maxslotindex;
}
else rc = -1;
return (rc);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -