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 + -
显示快捷键?