pppoe_disiisl.c
来自「PPPoE协议在Psos中的实现源代码」· C语言 代码 · 共 81 行
C
81 行
/************************************************************************/
/* */
/* MODULE: pppoe disiisl.c */
/* PURPOSE: DISIISL for Ethernet Interface */
/* DATE: 14 MAY 2004 */
/* */
/*----------------------------------------------------------------------*/
#include <disi.h>
#include "cs8900a.h"
#include "bspfuncs.h"
#include "mygenif.h"
#include "disiisl.h"
#include "ppp.h"
#include "syslog.h"
extern IFcfg ifcfg[NPPP];
extern long csInitialize();
extern long csOpen( IFcfg *ifc, int unit );
extern long csSend( char *pDestAddr, mblk_t *pSendParms );
extern long csIoctl( unsigned long cmd, int *arg );
unsigned long pppoe_DisiISLInit();
unsigned long pppoe_DisiISLOpen(IFcfg *ifcfg, int uid);
void pppoe_DisiISLClose();
void pppoe_DisiISLSend(char *addr, mblk_t *mblk);
unsigned long pppoe_DisiISLIoctl(int uid, unsigned long cmd, void *arg);
IFentrypoint DISIentrypoint = {
pppoe_DisiISLInit,
pppoe_DisiISLOpen,
pppoe_DisiISLClose,
pppoe_DisiISLIoctl,
pppoe_DisiISLSend
};
unsigned long pppoe_DisiISLInit() {
if( csInitialize() == FAILURE )
syslog(LOG_ERR, "cs8900a initialize error");
return(0);
}
static unsigned long pppoe_DisiISLOpen(IFcfg *ifcfg, int unit) {
return( csOpen( ifcfg, unit ) );
}
void pppoe_DisiISLClose(){
}
void pppoe_DisiISLSend(char *addr, mblk_t *mp)
{
if(csSend(addr,mp) != SUCCESS)
syslog(LOG_ERR, "cs8900a send data error");
}
static unsigned long pppoe_DisiISLIoctl(int uid, unsigned long cmd, void *arg) {
int isinit=0;
int isopen=0;
switch(cmd)
{
case SETUPLINK:
csIoctl( SIOCGISINIT, &isinit );
csIoctl( SIOCGISOPEN, &isopen );
if( isinit&&isopen ) {
( *(ifcfg[uid].callback) )( (Uid) uid, LINKUP, NULL );
}
break;
}
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?