Splitted implementation into kernel space (K-prefix) and user space headers. The former will become private headers while the latter will be moved into the headers/os/ hierarchie (where exactly is uncertain at the moment).
Added some control/ioctl ops. Moved KPPPUtils.h to headers. Limited the name length of each handler to a maximum of 255 characters (not including the zero-byte). Removed PPP_ACTION from (K)PPPDefs.h. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4502 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -8,7 +8,7 @@
|
|||||||
#ifndef _K_PPP_DEFS__H
|
#ifndef _K_PPP_DEFS__H
|
||||||
#define _K_PPP_DEFS__H
|
#define _K_PPP_DEFS__H
|
||||||
|
|
||||||
#include <Errors.h>
|
#include <PPPDefs.h>
|
||||||
|
|
||||||
|
|
||||||
typedef uint32 interface_id;
|
typedef uint32 interface_id;
|
||||||
@@ -16,52 +16,6 @@ typedef uint32 interface_id;
|
|||||||
// various constants
|
// various constants
|
||||||
#define PPP_PULSE_RATE 500000
|
#define PPP_PULSE_RATE 500000
|
||||||
|
|
||||||
// settings keys
|
|
||||||
#define PPP_DISONNECT_AFTER_IDLE_SINCE_KEY "DisonnectAfterIdleSince"
|
|
||||||
#define PPP_MODE_KEY "Mode"
|
|
||||||
#define PPP_DIAL_ON_DEMAND_KEY "DialOnDemand"
|
|
||||||
#define PPP_AUTO_REDIAL_KEY "AutoRedial"
|
|
||||||
#define PPP_LOAD_MODULE_KEY "LoadModule"
|
|
||||||
#define PPP_PROTOCOL_KEY "Protocol"
|
|
||||||
#define PPP_DEVICE_KEY "Device"
|
|
||||||
#define PPP_AUTHENTICATOR_KEY "Authenticator"
|
|
||||||
#define PPP_PEER_AUTHENTICATOR_KEY "Peer-Authenticator"
|
|
||||||
#define PPP_MULTILINK_KEY "Multilink-Protocol"
|
|
||||||
|
|
||||||
// settings values
|
|
||||||
#define PPP_CLIENT_MODE_VALUE "Client"
|
|
||||||
#define PPP_SERVER_MODE_VALUE "Server"
|
|
||||||
|
|
||||||
// path defines
|
|
||||||
#define PPP_MODULES_PATH "network/ppp-modules"
|
|
||||||
|
|
||||||
// built-in protocols
|
|
||||||
#define PPP_LCP_PROTOCOL 0xC021
|
|
||||||
|
|
||||||
|
|
||||||
#define PPP_ERROR_BASE B_ERRORS_END
|
|
||||||
|
|
||||||
// return values for Send()/Receive() methods in addition to B_ERROR and B_OK
|
|
||||||
// PPP_UNHANDLED is also used by PPPOptionHandler
|
|
||||||
enum {
|
|
||||||
// B_ERROR means that the packet is corrupted
|
|
||||||
// B_OK means the packet was handled correctly
|
|
||||||
|
|
||||||
// return values for PPPProtocol and PPPEncapsulator (and PPPOptionHandler)
|
|
||||||
PPP_UNHANDLED = PPP_ERROR_BASE,
|
|
||||||
// The packet does not belong to this handler.
|
|
||||||
// Do not delete the packet when you return this!
|
|
||||||
// For PPPOptionHandler: the item is unrecognized
|
|
||||||
|
|
||||||
// return values of PPPInterface::Receive()
|
|
||||||
PPP_DISCARDED,
|
|
||||||
// packet was silently discarded
|
|
||||||
PPP_REJECTED,
|
|
||||||
// a protocol-reject
|
|
||||||
|
|
||||||
PPP_NO_CONNECTION
|
|
||||||
// could not send a packet because device is not connected
|
|
||||||
};
|
|
||||||
|
|
||||||
// module key types (used when loading a module)
|
// module key types (used when loading a module)
|
||||||
enum {
|
enum {
|
||||||
@@ -73,91 +27,6 @@ enum {
|
|||||||
PPP_MULTILINK_TYPE
|
PPP_MULTILINK_TYPE
|
||||||
};
|
};
|
||||||
|
|
||||||
// protocol and encapsulator flags
|
|
||||||
enum {
|
|
||||||
PPP_NO_FLAGS = 0x00,
|
|
||||||
PPP_ALWAYS_ALLOWED = 0x01,
|
|
||||||
// protocol may send/receive in PPP_ESTABLISHMENT_PHASE
|
|
||||||
PPP_NEEDS_DOWN = 0x02,
|
|
||||||
// protocol needs a Down() in addition to a Reset() to
|
|
||||||
// terminate the connection properly (losing the connection
|
|
||||||
// still results in a Reset() only)
|
|
||||||
PPP_NOT_IMPORTANT = 0x03
|
|
||||||
// if this protocol fails to go up we do not disconnect
|
|
||||||
};
|
|
||||||
|
|
||||||
// phase when the protocol is brought up
|
|
||||||
enum PPP_PHASE {
|
|
||||||
// the following may be used by protocols
|
|
||||||
PPP_AUTHENTICATION_PHASE = 15,
|
|
||||||
PPP_NCP_PHASE = 20,
|
|
||||||
PPP_ESTABLISHED_PHASE = 25,
|
|
||||||
// only use PPP_ESTABLISHED_PHASE if
|
|
||||||
// you want to activate this protocol after
|
|
||||||
// the normal protocols like IP (i.e., IPCP)
|
|
||||||
|
|
||||||
// the following must not be used by protocols!
|
|
||||||
PPP_DOWN_PHASE = 0,
|
|
||||||
PPP_TERMINATION_PHASE = 1,
|
|
||||||
// this is the selected phase when we are GOING down
|
|
||||||
PPP_ESTABLISHMENT_PHASE = 2
|
|
||||||
// in this phase some protocols (with PPP_ALWAYS_ALLOWED
|
|
||||||
// flag set) may be used
|
|
||||||
};
|
|
||||||
|
|
||||||
// this defines the order in which the packets get encapsulated
|
|
||||||
enum PPP_ENCAPSULATION_LEVEL {
|
|
||||||
PPP_MULTILINK_LEVEL = 0,
|
|
||||||
PPP_ENCRYPTION_LEVEL = 5,
|
|
||||||
PPP_COMPRESSION_LEVEL = 10
|
|
||||||
};
|
|
||||||
|
|
||||||
// we can be a ppp client or a ppp server interface
|
|
||||||
enum PPP_MODE {
|
|
||||||
PPP_CLIENT_MODE = 0,
|
|
||||||
PPP_SERVER_MODE
|
|
||||||
};
|
|
||||||
|
|
||||||
// authentication status
|
|
||||||
enum PPP_AUTHENTICATION_STATUS {
|
|
||||||
PPP_AUTHENTICATION_FAILED = -1,
|
|
||||||
PPP_NOT_AUTHENTICATED = 0,
|
|
||||||
PPP_AUTHENTICATION_SUCCESSFUL = 1,
|
|
||||||
PPP_AUTHENTICATING = 0xFF
|
|
||||||
};
|
|
||||||
|
|
||||||
// PPP states as defined in RFC 1661
|
|
||||||
enum PPP_STATE {
|
|
||||||
PPP_INITIAL_STATE,
|
|
||||||
PPP_STARTING_STATE,
|
|
||||||
PPP_CLOSED_STATE,
|
|
||||||
PPP_STOPPED_STATE,
|
|
||||||
PPP_CLOSING_STATE,
|
|
||||||
PPP_STOPPING_STATE,
|
|
||||||
PPP_REQ_SENT_STATE,
|
|
||||||
PPP_ACK_RCVD_STATE,
|
|
||||||
PPP_ACK_SENT_STATE,
|
|
||||||
PPP_OPENED_STATE
|
|
||||||
};
|
|
||||||
|
|
||||||
// PPP actions as defined in RFC 1661
|
|
||||||
enum PPP_ACTION {
|
|
||||||
PPP_ILLEGAL_EVENT_ACTION,
|
|
||||||
PPP_THIS_LAYER_UP_ACTION,
|
|
||||||
PPP_THIS_LAYER_DOWN_ACTION,
|
|
||||||
PPP_THIS_LAYER_STARTED_ACTION,
|
|
||||||
PPP_THIS_LAYER_FINISHED_ACTION,
|
|
||||||
PPP_INIT_RESTART_COUNT_ACTION,
|
|
||||||
PPP_ZERO_RESTART_COUNT_ACTION,
|
|
||||||
PPP_SEND_CONF_REQ_ACTION,
|
|
||||||
PPP_SEND_CONF_ACK_ACTION,
|
|
||||||
PPP_SEND_CONF_NAK_ACTION,
|
|
||||||
PPP_SEND_TERM_REQ_ACTION,
|
|
||||||
PPP_SEND_TERM_ACK_ACTION,
|
|
||||||
PPP_SEND_CODE_REJ_ACTION,
|
|
||||||
PPP_SEND_ECHO_REPLY_ACTION
|
|
||||||
};
|
|
||||||
|
|
||||||
// PPP events as defined in RFC 1661 (with one exception: PPP_UP_FAILED_EVENT)
|
// PPP events as defined in RFC 1661 (with one exception: PPP_UP_FAILED_EVENT)
|
||||||
enum PPP_EVENT {
|
enum PPP_EVENT {
|
||||||
PPP_UP_FAILED_EVENT,
|
PPP_UP_FAILED_EVENT,
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ class PPPDevice {
|
|||||||
bool fIsUp;
|
bool fIsUp;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
char *fName;
|
char fName[PPP_HANDLER_NAME_LENGTH_LIMIT + 1];
|
||||||
uint32 fOverhead;
|
uint32 fOverhead;
|
||||||
PPPInterface *fInterface;
|
PPPInterface *fInterface;
|
||||||
driver_parameter *fSettings;
|
driver_parameter *fSettings;
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ class PPPEncapsulator {
|
|||||||
uint32 fOverhead;
|
uint32 fOverhead;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
char *fName;
|
char fName[PPP_HANDLER_NAME_LENGTH_LIMIT + 1];
|
||||||
PPP_PHASE fPhase;
|
PPP_PHASE fPhase;
|
||||||
PPP_ENCAPSULATION_LEVEL fLevel;
|
PPP_ENCAPSULATION_LEVEL fLevel;
|
||||||
uint16 fProtocol;
|
uint16 fProtocol;
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ class PPPOptionHandler {
|
|||||||
// notification that we ack these values
|
// notification that we ack these values
|
||||||
|
|
||||||
private:
|
private:
|
||||||
char *fName;
|
char fName[PPP_HANDLER_NAME_LENGTH_LIMIT + 1];
|
||||||
PPPInterface *fInterface;
|
PPPInterface *fInterface;
|
||||||
driver_parameter *fSettings;
|
driver_parameter *fSettings;
|
||||||
|
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ class PPPProtocol {
|
|||||||
// report up/down events
|
// report up/down events
|
||||||
|
|
||||||
private:
|
private:
|
||||||
char *fName;
|
char fName[PPP_HANDLER_NAME_LENGTH_LIMIT + 1];
|
||||||
PPP_PHASE fPhase;
|
PPP_PHASE fPhase;
|
||||||
uint16 fProtocol;
|
uint16 fProtocol;
|
||||||
int32 fAddressFamily;
|
int32 fAddressFamily;
|
||||||
|
|||||||
@@ -8,56 +8,8 @@
|
|||||||
#ifndef _K_PPP_REPORT_DEFS__H
|
#ifndef _K_PPP_REPORT_DEFS__H
|
||||||
#define _K_PPP_REPORT_DEFS__H
|
#define _K_PPP_REPORT_DEFS__H
|
||||||
|
|
||||||
|
#include <PPPReportDefs.h>
|
||||||
|
|
||||||
#define PPP_REPORT_DATA_LIMIT 128
|
|
||||||
// how much optional data can be added to the report
|
|
||||||
#define PPP_REPORT_CODE '_3PR'
|
|
||||||
// the code field of read_port
|
|
||||||
|
|
||||||
|
|
||||||
// report flags
|
|
||||||
enum PPP_REPORT_FLAGS {
|
|
||||||
PPP_NO_REPORT_FLAGS = 0,
|
|
||||||
PPP_WAIT_FOR_REPLY = 0x1,
|
|
||||||
PPP_REMOVE_AFTER_REPORT = 0x2,
|
|
||||||
PPP_NO_REPLY_TIMEOUT = 0x4
|
|
||||||
};
|
|
||||||
|
|
||||||
// report types
|
|
||||||
enum PPP_REPORT_TYPE {
|
|
||||||
PPP_DESTRUCTION_REPORT = 0,
|
|
||||||
// the interface is being destroyed (no code is needed)
|
|
||||||
PPP_CONNECTION_REPORT = 1,
|
|
||||||
PPP_AUTHENTICATION_REPORT = 2
|
|
||||||
};
|
|
||||||
|
|
||||||
// report codes (type-specific)
|
|
||||||
enum PPP_CONNECTION_REPORT_CODES {
|
|
||||||
PPP_REPORT_GOING_UP = 0,
|
|
||||||
PPP_REPORT_UP_SUCCESSFUL = 1,
|
|
||||||
PPP_REPORT_DOWN_SUCCESSFUL = 2,
|
|
||||||
PPP_REPORT_UP_ABORTED = 3,
|
|
||||||
PPP_REPORT_DEVICE_UP_FAILED = 4,
|
|
||||||
PPP_REPORT_AUTHENTICATION_SUCCESSFUL = 5,
|
|
||||||
PPP_REPORT_PEER_AUTHENTICATION_SUCCESSFUL = 6,
|
|
||||||
PPP_REPORT_AUTHENTICATION_FAILED = 7,
|
|
||||||
PPP_REPORT_CONNECTION_LOST = 8
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct ppp_report_packet {
|
|
||||||
int32 type;
|
|
||||||
int32 code;
|
|
||||||
uint8 length;
|
|
||||||
char data[PPP_REPORT_DATA_LIMIT];
|
|
||||||
} ppp_report_packet;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//***********
|
|
||||||
// private
|
|
||||||
//***********
|
|
||||||
#define PPP_REPORT_TIMEOUT 10
|
|
||||||
|
|
||||||
typedef struct ppp_report_request {
|
typedef struct ppp_report_request {
|
||||||
thread_id thread;
|
thread_id thread;
|
||||||
|
|||||||
@@ -0,0 +1,116 @@
|
|||||||
|
//----------------------------------------------------------------------
|
||||||
|
// This software is part of the OpenBeOS distribution and is covered
|
||||||
|
// by the OpenBeOS license.
|
||||||
|
//
|
||||||
|
// Copyright (c) 2003 Waldemar Kornewald, [email protected]
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
|
||||||
|
#ifndef _PPP_CONTROL__H
|
||||||
|
#define _PPP_CONTROL__H
|
||||||
|
|
||||||
|
#include <Drivers.h>
|
||||||
|
#include <PPPDefs.h>
|
||||||
|
|
||||||
|
|
||||||
|
// starting values and other values for control ops
|
||||||
|
#define PPP_RESERVE_OPS_COUNT 0xFFFF
|
||||||
|
#define PPP_OPS_START B_DEVICE_OP_CODES_END + 1
|
||||||
|
#define PPP_DEVICE_OPS_START PPP_OPS_START + 2 * PPP_RESERVE_OPS_COUNT
|
||||||
|
#define PPP_PROTOCOL_OPS_START PPP_OPS_START + 3 * PPP_RESERVE_OPS_COUNT
|
||||||
|
#define PPP_ENCAPSULATOR_OPS_START PPP_OPS_START + 4 * PPP_RESERVE_OPS_COUNT
|
||||||
|
#define PPP_OPTION_HANDLER_OPS_START PPP_OPS_START + 5 * PPP_RESERVE_OPS_COUNT
|
||||||
|
#define PPP_LCP_EXTENSION_OPS_START PPP_OPS_START + 6 * PPP_RESERVE_OPS_COUNT
|
||||||
|
#define PPP_COMMON_PROTO_ENCAPS_OPS_START PPP_OPS_START + 10 * PPP_RESERVE_OPS_COUNT
|
||||||
|
#define PPP_USER_OPS_START PPP_OPS_START + 32 * PPP_RESERVE_OPS_COUNT
|
||||||
|
|
||||||
|
|
||||||
|
enum PPP_CONTROL_OPS {
|
||||||
|
// -----------------------------------------------------
|
||||||
|
// PPPInterface
|
||||||
|
PPPC_GET_STATUS = PPP_OPS_START,
|
||||||
|
PPPC_GET_MRU,
|
||||||
|
PPPC_SET_MRU,
|
||||||
|
PPPC_GET_LINK_MTU,
|
||||||
|
PPPC_SET_LINK_MTU,
|
||||||
|
PPPC_GET_DIAL_ON_DEMAND,
|
||||||
|
PPPC_SET_DIAL_ON_DEMAND,
|
||||||
|
PPPC_GET_AUTO_REDIAL,
|
||||||
|
PPPC_SET_AUTO_REDIAL,
|
||||||
|
PPPC_GET_PROTOCOLS_COUNT,
|
||||||
|
PPPC_GET_ENCAPSULATORS_COUNT,
|
||||||
|
PPPC_GET_OPTION_HANDLERS_COUNT,
|
||||||
|
PPPC_GET_LCP_EXTENSIONS_COUNT,
|
||||||
|
PPPC_GET_CHILDREN_COUNT,
|
||||||
|
PPPC_CONTROL_PROTOCOL,
|
||||||
|
PPPC_CONTROL_ENCAPSULATOR,
|
||||||
|
PPPC_CONTROL_OPTION_HANDLER,
|
||||||
|
PPPC_CONTROL_LCP_EXTENSION,
|
||||||
|
PPPC_CONTROL_CHILD,
|
||||||
|
// -----------------------------------------------------
|
||||||
|
|
||||||
|
// -----------------------------------------------------
|
||||||
|
// PPPDevice
|
||||||
|
PPPC_GET_MTU = PPP_DEVICE_OPS_START,
|
||||||
|
PPPC_SET_MTU,
|
||||||
|
PPPC_GET_PREFERRED_MTU,
|
||||||
|
// -----------------------------------------------------
|
||||||
|
|
||||||
|
// -----------------------------------------------------
|
||||||
|
// PPPProtocol
|
||||||
|
// -----------------------------------------------------
|
||||||
|
|
||||||
|
// -----------------------------------------------------
|
||||||
|
// PPPEncapsulator
|
||||||
|
// -----------------------------------------------------
|
||||||
|
|
||||||
|
// -----------------------------------------------------
|
||||||
|
// PPPOptionHandler
|
||||||
|
// -----------------------------------------------------
|
||||||
|
|
||||||
|
// -----------------------------------------------------
|
||||||
|
// PPPLCPExtension
|
||||||
|
// -----------------------------------------------------
|
||||||
|
|
||||||
|
// -----------------------------------------------------
|
||||||
|
// PPPProtocol and PPPEncapsulator
|
||||||
|
PPPC_GET_NAME,
|
||||||
|
PPPC_GET_ENABLED = PPP_COMMON_PROTO_ENCAPS_OPS_START,
|
||||||
|
PPPC_SET_ENABLED,
|
||||||
|
// -----------------------------------------------------
|
||||||
|
|
||||||
|
PPP_CONTROL_OPS_END = B_DEVICE_OP_CODES_END + 0xFFFF
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct ppp_control_structure {
|
||||||
|
uint32 index;
|
||||||
|
// index of interface/protocol/encapsulator/etc.
|
||||||
|
uint32 op;
|
||||||
|
// the Control()/ioctl() opcode
|
||||||
|
|
||||||
|
union {
|
||||||
|
void *data;
|
||||||
|
ppp_control_struct *subcontrol;
|
||||||
|
} pointer;
|
||||||
|
// either a pointer to the data or a pointer to a control structure for
|
||||||
|
// accessing protocols/encapsulators/etc.
|
||||||
|
|
||||||
|
size_t length;
|
||||||
|
// not always needed
|
||||||
|
} ppp_control_structure;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct ppp_status_structure {
|
||||||
|
PPP_MODE mode;
|
||||||
|
PPP_STATE state;
|
||||||
|
PPP_PHASE phase;
|
||||||
|
PPP_AUTHENTICATION_STATUS authenticationStatus, peerAuthenticationStatus;
|
||||||
|
|
||||||
|
bigtime_t idle_since;
|
||||||
|
|
||||||
|
uint8 _reserved_[64 - (sizeof(PPP_MODE) + sizeof(PPP_STATE) + sizeof(PPP_PHASE)
|
||||||
|
+ 2 * sizeof(PPP_AUTHENTICATION_STATUS) + sizeof(bigtime_t))];
|
||||||
|
} ppp_status_structure;
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,132 @@
|
|||||||
|
//----------------------------------------------------------------------
|
||||||
|
// This software is part of the OpenBeOS distribution and is covered
|
||||||
|
// by the OpenBeOS license.
|
||||||
|
//
|
||||||
|
// Copyright (c) 2003 Waldemar Kornewald, [email protected]
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
|
||||||
|
#ifndef _PPP_DEFS__H
|
||||||
|
#define _PPP_DEFS__H
|
||||||
|
|
||||||
|
#include <Errors.h>
|
||||||
|
|
||||||
|
|
||||||
|
// various constants
|
||||||
|
#define PPP_HANDLER_NAME_LENGTH_LIMIT 255
|
||||||
|
// if the name is longer than this value it will be truncated
|
||||||
|
|
||||||
|
// settings keys
|
||||||
|
#define PPP_DISONNECT_AFTER_IDLE_SINCE_KEY "DisonnectAfterIdleSince"
|
||||||
|
#define PPP_MODE_KEY "Mode"
|
||||||
|
#define PPP_DIAL_ON_DEMAND_KEY "DialOnDemand"
|
||||||
|
#define PPP_AUTO_REDIAL_KEY "AutoRedial"
|
||||||
|
#define PPP_LOAD_MODULE_KEY "LoadModule"
|
||||||
|
#define PPP_PROTOCOL_KEY "Protocol"
|
||||||
|
#define PPP_DEVICE_KEY "Device"
|
||||||
|
#define PPP_AUTHENTICATOR_KEY "Authenticator"
|
||||||
|
#define PPP_PEER_AUTHENTICATOR_KEY "Peer-Authenticator"
|
||||||
|
#define PPP_MULTILINK_KEY "Multilink-Protocol"
|
||||||
|
|
||||||
|
// settings values
|
||||||
|
#define PPP_CLIENT_MODE_VALUE "Client"
|
||||||
|
#define PPP_SERVER_MODE_VALUE "Server"
|
||||||
|
|
||||||
|
// path defines
|
||||||
|
#define PPP_MODULES_PATH "network/ppp-modules"
|
||||||
|
|
||||||
|
// built-in protocols
|
||||||
|
#define PPP_LCP_PROTOCOL 0xC021
|
||||||
|
|
||||||
|
|
||||||
|
#define PPP_ERROR_BASE B_ERRORS_END + 1
|
||||||
|
|
||||||
|
// return values for Send()/Receive() methods in addition to B_ERROR and B_OK
|
||||||
|
// PPP_UNHANDLED is also used by PPPOptionHandler
|
||||||
|
enum {
|
||||||
|
// B_ERROR means that the packet is corrupted
|
||||||
|
// B_OK means the packet was handled correctly
|
||||||
|
|
||||||
|
// return values for PPPProtocol and PPPEncapsulator (and PPPOptionHandler)
|
||||||
|
PPP_UNHANDLED = PPP_ERROR_BASE,
|
||||||
|
// The packet does not belong to this handler.
|
||||||
|
// Do not delete the packet when you return this!
|
||||||
|
// For PPPOptionHandler: the item is unrecognized
|
||||||
|
|
||||||
|
// return values of PPPInterface::Receive()
|
||||||
|
PPP_DISCARDED,
|
||||||
|
// packet was silently discarded
|
||||||
|
PPP_REJECTED,
|
||||||
|
// a protocol-reject
|
||||||
|
|
||||||
|
PPP_NO_CONNECTION
|
||||||
|
// could not send a packet because device is not connected
|
||||||
|
};
|
||||||
|
|
||||||
|
// protocol and encapsulator flags
|
||||||
|
enum {
|
||||||
|
PPP_NO_FLAGS = 0x00,
|
||||||
|
PPP_ALWAYS_ALLOWED = 0x01,
|
||||||
|
// protocol may send/receive in PPP_ESTABLISHMENT_PHASE
|
||||||
|
PPP_NEEDS_DOWN = 0x02,
|
||||||
|
// protocol needs a Down() in addition to a Reset() to
|
||||||
|
// terminate the connection properly (losing the connection
|
||||||
|
// still results in a Reset() only)
|
||||||
|
PPP_NOT_IMPORTANT = 0x03
|
||||||
|
// if this protocol fails to go up we do not disconnect
|
||||||
|
};
|
||||||
|
|
||||||
|
// phase when the protocol is brought up
|
||||||
|
enum PPP_PHASE {
|
||||||
|
// the following may be used by protocols
|
||||||
|
PPP_AUTHENTICATION_PHASE = 15,
|
||||||
|
PPP_NCP_PHASE = 20,
|
||||||
|
PPP_ESTABLISHED_PHASE = 25,
|
||||||
|
// only use PPP_ESTABLISHED_PHASE if
|
||||||
|
// you want to activate this protocol after
|
||||||
|
// the normal protocols like IP (i.e., IPCP)
|
||||||
|
|
||||||
|
// the following must not be used by protocols!
|
||||||
|
PPP_DOWN_PHASE = 0,
|
||||||
|
PPP_TERMINATION_PHASE = 1,
|
||||||
|
// this is the selected phase when we are GOING down
|
||||||
|
PPP_ESTABLISHMENT_PHASE = 2
|
||||||
|
// in this phase some protocols (with PPP_ALWAYS_ALLOWED
|
||||||
|
// flag set) may be used
|
||||||
|
};
|
||||||
|
|
||||||
|
// this defines the order in which the packets get encapsulated
|
||||||
|
enum PPP_ENCAPSULATION_LEVEL {
|
||||||
|
PPP_MULTILINK_LEVEL = 0,
|
||||||
|
PPP_ENCRYPTION_LEVEL = 5,
|
||||||
|
PPP_COMPRESSION_LEVEL = 10
|
||||||
|
};
|
||||||
|
|
||||||
|
// we can be a ppp client or a ppp server interface
|
||||||
|
enum PPP_MODE {
|
||||||
|
PPP_CLIENT_MODE = 0,
|
||||||
|
PPP_SERVER_MODE
|
||||||
|
};
|
||||||
|
|
||||||
|
// authentication status
|
||||||
|
enum PPP_AUTHENTICATION_STATUS {
|
||||||
|
PPP_AUTHENTICATION_FAILED = -1,
|
||||||
|
PPP_NOT_AUTHENTICATED = 0,
|
||||||
|
PPP_AUTHENTICATION_SUCCESSFUL = 1,
|
||||||
|
PPP_AUTHENTICATING = 0xFF
|
||||||
|
};
|
||||||
|
|
||||||
|
// PPP states as defined in RFC 1661
|
||||||
|
enum PPP_STATE {
|
||||||
|
PPP_INITIAL_STATE,
|
||||||
|
PPP_STARTING_STATE,
|
||||||
|
PPP_CLOSED_STATE,
|
||||||
|
PPP_STOPPED_STATE,
|
||||||
|
PPP_CLOSING_STATE,
|
||||||
|
PPP_STOPPING_STATE,
|
||||||
|
PPP_REQ_SENT_STATE,
|
||||||
|
PPP_ACK_RCVD_STATE,
|
||||||
|
PPP_ACK_SENT_STATE,
|
||||||
|
PPP_OPENED_STATE
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
//----------------------------------------------------------------------
|
||||||
|
// This software is part of the OpenBeOS distribution and is covered
|
||||||
|
// by the OpenBeOS license.
|
||||||
|
//
|
||||||
|
// Copyright (c) 2003 Waldemar Kornewald, [email protected]
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
|
||||||
|
#ifndef _PPP_REPORT_DEFS__H
|
||||||
|
#define _PPP_REPORT_DEFS__H
|
||||||
|
|
||||||
|
|
||||||
|
#define PPP_REPORT_TIMEOUT 10
|
||||||
|
|
||||||
|
#define PPP_REPORT_DATA_LIMIT 128
|
||||||
|
// how much optional data can be added to the report
|
||||||
|
#define PPP_REPORT_CODE '_3PR'
|
||||||
|
// the code of receive_data() must have this value
|
||||||
|
|
||||||
|
// report flags
|
||||||
|
enum PPP_REPORT_FLAGS {
|
||||||
|
PPP_NO_REPORT_FLAGS = 0,
|
||||||
|
PPP_WAIT_FOR_REPLY = 0x1,
|
||||||
|
PPP_REMOVE_AFTER_REPORT = 0x2,
|
||||||
|
PPP_NO_REPLY_TIMEOUT = 0x4
|
||||||
|
};
|
||||||
|
|
||||||
|
// report types
|
||||||
|
enum PPP_REPORT_TYPE {
|
||||||
|
PPP_DESTRUCTION_REPORT = 0,
|
||||||
|
// the interface is being destroyed (no code is needed)
|
||||||
|
PPP_CONNECTION_REPORT = 1,
|
||||||
|
PPP_AUTHENTICATION_REPORT = 2
|
||||||
|
};
|
||||||
|
|
||||||
|
// report codes (type-specific)
|
||||||
|
enum PPP_CONNECTION_REPORT_CODES {
|
||||||
|
PPP_REPORT_GOING_UP = 0,
|
||||||
|
PPP_REPORT_UP_SUCCESSFUL = 1,
|
||||||
|
PPP_REPORT_DOWN_SUCCESSFUL = 2,
|
||||||
|
PPP_REPORT_UP_ABORTED = 3,
|
||||||
|
PPP_REPORT_DEVICE_UP_FAILED = 4,
|
||||||
|
PPP_REPORT_AUTHENTICATION_SUCCESSFUL = 5,
|
||||||
|
PPP_REPORT_PEER_AUTHENTICATION_SUCCESSFUL = 6,
|
||||||
|
PPP_REPORT_AUTHENTICATION_FAILED = 7,
|
||||||
|
PPP_REPORT_CONNECTION_LOST = 8
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct ppp_report_packet {
|
||||||
|
int32 type;
|
||||||
|
int32 code;
|
||||||
|
uint8 length;
|
||||||
|
char data[PPP_REPORT_DATA_LIMIT];
|
||||||
|
} ppp_report_packet;
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -16,7 +16,11 @@ PPPDevice::PPPDevice(const char *name, uint32 overhead, PPPInterface *interface,
|
|||||||
: fOverhead(overhead), fInterface(interface),
|
: fOverhead(overhead), fInterface(interface),
|
||||||
fSettings(settings)
|
fSettings(settings)
|
||||||
{
|
{
|
||||||
fName = name ? strdup(name) : NULL;
|
if(name) {
|
||||||
|
strncpy(fName, name, PPP_HANDLER_NAME_LENGTH_LIMIT);
|
||||||
|
fName[PPP_HANDLER_NAME_LENGTH_LIMIT] = 0;
|
||||||
|
} else
|
||||||
|
strcpy(fName, "");
|
||||||
|
|
||||||
SetMTU(1500);
|
SetMTU(1500);
|
||||||
|
|
||||||
@@ -27,8 +31,6 @@ PPPDevice::PPPDevice(const char *name, uint32 overhead, PPPInterface *interface,
|
|||||||
|
|
||||||
PPPDevice::~PPPDevice()
|
PPPDevice::~PPPDevice()
|
||||||
{
|
{
|
||||||
free(fName);
|
|
||||||
|
|
||||||
if(Interface())
|
if(Interface())
|
||||||
Interface()->SetDevice(NULL);
|
Interface()->SetDevice(NULL);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,11 @@ PPPEncapsulator::PPPEncapsulator(const char *name, PPP_PHASE phase,
|
|||||||
fSettings(settings), fFlags(flags), fEnabled(true),
|
fSettings(settings), fFlags(flags), fEnabled(true),
|
||||||
fUpRequested(true), fConnectionStatus(PPP_DOWN_PHASE)
|
fUpRequested(true), fConnectionStatus(PPP_DOWN_PHASE)
|
||||||
{
|
{
|
||||||
fName = name ? strdup(name) : NULL;
|
if(name) {
|
||||||
|
strncpy(fName, name, PPP_HANDLER_NAME_LENGTH_LIMIT);
|
||||||
|
fName[PPP_HANDLER_NAME_LENGTH_LIMIT] = 0;
|
||||||
|
} else
|
||||||
|
strcpy(fName, "");
|
||||||
|
|
||||||
if(interface)
|
if(interface)
|
||||||
interface->AddEncapsulator(this);
|
interface->AddEncapsulator(this);
|
||||||
@@ -27,8 +31,6 @@ PPPEncapsulator::PPPEncapsulator(const char *name, PPP_PHASE phase,
|
|||||||
|
|
||||||
PPPEncapsulator::~PPPEncapsulator()
|
PPPEncapsulator::~PPPEncapsulator()
|
||||||
{
|
{
|
||||||
free(fName);
|
|
||||||
|
|
||||||
if(Interface())
|
if(Interface())
|
||||||
Interface()->RemoveEncapsulator(this);
|
Interface()->RemoveEncapsulator(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,12 +20,12 @@
|
|||||||
#include <KPPPEncapsulator.h>
|
#include <KPPPEncapsulator.h>
|
||||||
#include <KPPPModule.h>
|
#include <KPPPModule.h>
|
||||||
#include <KPPPManager.h>
|
#include <KPPPManager.h>
|
||||||
|
#include <KPPPUtils.h>
|
||||||
|
|
||||||
// general helper classes not only belonging to us
|
// general helper classes not only belonging to us
|
||||||
#include <LockerHelper.h>
|
#include <LockerHelper.h>
|
||||||
|
|
||||||
// tools only for us :)
|
// tools only for us :)
|
||||||
#include "KPPPUtils.h"
|
|
||||||
#include "settings_tools.h"
|
#include "settings_tools.h"
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,11 @@ PPPOptionHandler::PPPOptionHandler(const char *name, PPPInterface *interface,
|
|||||||
driver_parameter *settings)
|
driver_parameter *settings)
|
||||||
: fInterface(interface), fSettings(settings)
|
: fInterface(interface), fSettings(settings)
|
||||||
{
|
{
|
||||||
fName = name ? strdup(name) : NULL;
|
if(name) {
|
||||||
|
strncpy(fName, name, PPP_HANDLER_NAME_LENGTH_LIMIT);
|
||||||
|
fName[PPP_HANDLER_NAME_LENGTH_LIMIT] = 0;
|
||||||
|
} else
|
||||||
|
strcpy(fName, "");
|
||||||
|
|
||||||
if(interface)
|
if(interface)
|
||||||
interface->LCP().AddOptionHandler(this);
|
interface->LCP().AddOptionHandler(this);
|
||||||
@@ -21,8 +25,6 @@ PPPOptionHandler::PPPOptionHandler(const char *name, PPPInterface *interface,
|
|||||||
|
|
||||||
PPPOptionHandler::~PPPOptionHandler()
|
PPPOptionHandler::~PPPOptionHandler()
|
||||||
{
|
{
|
||||||
free(fName);
|
|
||||||
|
|
||||||
if(Interface())
|
if(Interface())
|
||||||
Interface()->LCP().RemoveOptionHandler(this);
|
Interface()->LCP().RemoveOptionHandler(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,11 @@ PPPProtocol::PPPProtocol(const char *name, PPP_PHASE phase, uint16 protocol,
|
|||||||
fInterface(interface), fSettings(settings), fFlags(flags),
|
fInterface(interface), fSettings(settings), fFlags(flags),
|
||||||
fEnabled(true), fUpRequested(true), fConnectionStatus(PPP_DOWN_PHASE)
|
fEnabled(true), fUpRequested(true), fConnectionStatus(PPP_DOWN_PHASE)
|
||||||
{
|
{
|
||||||
fName = name ? strdup(name) : NULL;
|
if(name) {
|
||||||
|
strncpy(fName, name, PPP_HANDLER_NAME_LENGTH_LIMIT);
|
||||||
|
fName[PPP_HANDLER_NAME_LENGTH_LIMIT] = 0;
|
||||||
|
} else
|
||||||
|
strcpy(fName, "");
|
||||||
|
|
||||||
if(interface)
|
if(interface)
|
||||||
interface->AddProtocol(this);
|
interface->AddProtocol(this);
|
||||||
@@ -26,8 +30,6 @@ PPPProtocol::PPPProtocol(const char *name, PPP_PHASE phase, uint16 protocol,
|
|||||||
|
|
||||||
PPPProtocol::~PPPProtocol()
|
PPPProtocol::~PPPProtocol()
|
||||||
{
|
{
|
||||||
free(fName);
|
|
||||||
|
|
||||||
if(Interface())
|
if(Interface())
|
||||||
Interface()->RemoveProtocol(this);
|
Interface()->RemoveProtocol(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
#include <KPPPReportManager.h>
|
#include <KPPPReportManager.h>
|
||||||
#include <LockerHelper.h>
|
#include <LockerHelper.h>
|
||||||
|
|
||||||
#include "KPPPUtils.h"
|
#include <KPPPUtils.h>
|
||||||
|
|
||||||
#include <new.h>
|
#include <new.h>
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
#include <OS.h>
|
#include <OS.h>
|
||||||
|
|
||||||
#include "KPPPUtils.h"
|
#include <KPPPUtils.h>
|
||||||
|
|
||||||
|
|
||||||
// These are very simple send/receive_data functions with a timeout
|
// These are very simple send/receive_data functions with a timeout
|
||||||
|
|||||||
Reference in New Issue
Block a user