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

📄 pppoe-server.h

📁 网上的一个开源代码
💻 H
字号:
/************************************************************************ pppoe-server.h** Definitions for PPPoE server** Copyright (C) 2001-2005 Roaring Penguin Software Inc.** This program may be distributed according to the terms of the GNU* General Public License, version 2 or (at your option) any later version.** LIC: GPL** $Id: pppoe-server.h,v 1.28 2005/08/10 00:25:21 dfs Exp $************************************************************************/#include "pppoe.h"#include "event.h"#ifdef HAVE_L2TP#include "l2tp/l2tp.h"#endif#define MAX_USERNAME_LEN 31/* An Ethernet interface */typedef struct {    char name[IFNAMSIZ+1];	/* Interface name */    int sock;			/* Socket for discovery frames */    unsigned char mac[ETH_ALEN]; /* MAC address */    EventHandler *eh;		/* Event handler for this interface */    /* Next fields are used only if we're an L2TP LAC */#ifdef HAVE_L2TP    int session_sock;		/* Session socket */    EventHandler *lac_eh;	/* LAC's event-handler */#endif} Interface;#define FLAG_RECVD_PADT      1#define FLAG_USER_SET        2#define FLAG_IP_SET          4#define FLAG_SENT_PADT       8/* Only used if we are an L2TP LAC or LNS */#define FLAG_ACT_AS_LAC      256#define FLAG_ACT_AS_LNS      512/* Forward declaration */struct ClientSessionStruct;/* Dispatch table for session-related functions.  We call different   functions for L2TP-terminated sessions than for locally-terminated   sessions. */typedef struct PppoeSessionFunctionTable_t {    /* Stop the session */    void (*stop)(struct ClientSessionStruct *ses, char const *reason);    /* Return 1 if session is active, 0 otherwise */    int (*isActive)(struct ClientSessionStruct *ses);    /* Describe a session in human-readable form */    char const * (*describe)(struct ClientSessionStruct *ses);} PppoeSessionFunctionTable;extern PppoeSessionFunctionTable DefaultSessionFunctionTable;/* A client session */typedef struct ClientSessionStruct {    struct ClientSessionStruct *next; /* In list of free or active sessions */    PppoeSessionFunctionTable *funcs; /* Function table */    pid_t pid;			/* PID of child handling session */    Interface *ethif;		/* Ethernet interface */    unsigned char myip[IPV4ALEN]; /* Local IP address */    unsigned char peerip[IPV4ALEN]; /* Desired IP address of peer */    UINT16_t sess;		/* Session number */    unsigned char eth[ETH_ALEN]; /* Peer's Ethernet address */    unsigned int flags;		/* Various flags */    time_t startTime;		/* When session started */    char const *serviceName;	/* Service name */#ifdef HAVE_LICENSE    char user[MAX_USERNAME_LEN+1]; /* Authenticated user-name */    char realm[MAX_USERNAME_LEN+1]; /* Realm */    unsigned char realpeerip[IPV4ALEN];	/* Actual IP address -- may be assigned					   by RADIUS server */    int maxSessionsPerUser;	/* Max sessions for this user */#endif#ifdef HAVE_L2TP    l2tp_session *l2tp_ses;	/* L2TP session */    struct sockaddr_in tunnel_endpoint;	/* L2TP endpoint */#endif} ClientSession;/* Hack for daemonizing */#define CLOSEFD 64/* Max. number of interfaces to listen on */#define MAX_INTERFACES 64/* Max. 64 sessions by default */#define DEFAULT_MAX_SESSIONS 64/* An array of client sessions */extern ClientSession *Sessions;/* Interfaces we're listening on */extern Interface interfaces[MAX_INTERFACES];extern int NumInterfaces;/* The number of session slots */extern size_t NumSessionSlots;/* The number of active sessions */extern size_t NumActiveSessions;/* Offset of first session */extern size_t SessOffset;/* Access concentrator name */extern char *ACName;extern unsigned char LocalIP[IPV4ALEN];extern unsigned char RemoteIP[IPV4ALEN];/* Do not create new sessions if free RAM < 10MB (on Linux only!) */#define MIN_FREE_MEMORY 10000/* Do we increment local IP for each connection? */extern int IncrLocalIP;/* Free sessions */extern ClientSession *FreeSessions;/* When a session is freed, it is added to the end of the free list */extern ClientSession *LastFreeSession;/* Busy sessions */extern ClientSession *BusySessions;extern EventSelector *event_selector;extern int GotAlarm;extern void setAlarm(unsigned int secs);extern void killAllSessions(void);extern void serverProcessPacket(Interface *i);extern void processPADT(Interface *ethif, PPPoEPacket *packet, int len);extern void processPADR(Interface *ethif, PPPoEPacket *packet, int len);extern void processPADI(Interface *ethif, PPPoEPacket *packet, int len);extern void usage(char const *msg);extern ClientSession *pppoe_alloc_session(void);extern int pppoe_free_session(ClientSession *ses);extern void sendHURLorMOTM(PPPoEConnection *conn, char const *url, UINT16_t tag);#ifdef HAVE_LICENSEextern int getFreeMem(void);#endif

⌨️ 快捷键说明

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