I had nearly forgotten this.
Changed some constants to match our style-guidelines. Extended settings_tools to support modifying driver_settings/parameter structures (used by DialUpPreflet). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7157 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -19,7 +19,7 @@
|
|||||||
#include <sys/sockio.h>
|
#include <sys/sockio.h>
|
||||||
|
|
||||||
|
|
||||||
#define IPCP_STATE_MACHINE_TIMEOUT 3000000
|
static const bigtime_t kIPCPStateMachineTimeout = 3000000;
|
||||||
// 3 seconds
|
// 3 seconds
|
||||||
|
|
||||||
|
|
||||||
@@ -1194,7 +1194,7 @@ IPCP::SendConfigureRequest()
|
|||||||
|
|
||||||
LockerHelper locker(fLock);
|
LockerHelper locker(fLock);
|
||||||
--fRequestCounter;
|
--fRequestCounter;
|
||||||
fNextTimeout = system_time() + IPCP_STATE_MACHINE_TIMEOUT;
|
fNextTimeout = system_time() + kIPCPStateMachineTimeout;
|
||||||
locker.UnlockNow();
|
locker.UnlockNow();
|
||||||
|
|
||||||
KPPPConfigurePacket request(PPP_CONFIGURE_REQUEST);
|
KPPPConfigurePacket request(PPP_CONFIGURE_REQUEST);
|
||||||
@@ -1343,7 +1343,7 @@ IPCP::SendTerminateRequest()
|
|||||||
|
|
||||||
LockerHelper locker(fLock);
|
LockerHelper locker(fLock);
|
||||||
--fTerminateCounter;
|
--fTerminateCounter;
|
||||||
fNextTimeout = system_time() + IPCP_STATE_MACHINE_TIMEOUT;
|
fNextTimeout = system_time() + kIPCPStateMachineTimeout;
|
||||||
locker.UnlockNow();
|
locker.UnlockNow();
|
||||||
|
|
||||||
struct mbuf *packet = m_gethdr(MT_DATA);
|
struct mbuf *packet = m_gethdr(MT_DATA);
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
#include <KPPPConfigurePacket.h>
|
#include <KPPPConfigurePacket.h>
|
||||||
|
|
||||||
|
|
||||||
#define ACFC_TYPE 0x8
|
static const uint8 kACFCType = 0x8;
|
||||||
|
|
||||||
|
|
||||||
ACFCHandler::ACFCHandler(uint32 options, KPPPInterface& interface)
|
ACFCHandler::ACFCHandler(uint32 options, KPPPInterface& interface)
|
||||||
: KPPPOptionHandler("ACFC Handler", ACFC_TYPE, interface, NULL),
|
: KPPPOptionHandler("ACFC Handler", kACFCType, interface, NULL),
|
||||||
fOptions(options),
|
fOptions(options),
|
||||||
fLocalState(ACFC_DISABLED),
|
fLocalState(ACFC_DISABLED),
|
||||||
fPeerState(ACFC_DISABLED)
|
fPeerState(ACFC_DISABLED)
|
||||||
@@ -32,7 +32,7 @@ ACFCHandler::AddToRequest(KPPPConfigurePacket& request)
|
|||||||
|
|
||||||
// add ACFC request
|
// add ACFC request
|
||||||
ppp_configure_item item;
|
ppp_configure_item item;
|
||||||
item.type = ACFC_TYPE;
|
item.type = kACFCType;
|
||||||
item.length = 2;
|
item.length = 2;
|
||||||
return request.AddItem(&item) ? B_OK : B_ERROR;
|
return request.AddItem(&item) ? B_OK : B_ERROR;
|
||||||
}
|
}
|
||||||
@@ -42,7 +42,7 @@ status_t
|
|||||||
ACFCHandler::ParseNak(const KPPPConfigurePacket& nak)
|
ACFCHandler::ParseNak(const KPPPConfigurePacket& nak)
|
||||||
{
|
{
|
||||||
// naks do not contain ACFC items
|
// naks do not contain ACFC items
|
||||||
if(nak.ItemWithType(ACFC_TYPE))
|
if(nak.ItemWithType(kACFCType))
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
@@ -52,7 +52,7 @@ ACFCHandler::ParseNak(const KPPPConfigurePacket& nak)
|
|||||||
status_t
|
status_t
|
||||||
ACFCHandler::ParseReject(const KPPPConfigurePacket& reject)
|
ACFCHandler::ParseReject(const KPPPConfigurePacket& reject)
|
||||||
{
|
{
|
||||||
if(reject.ItemWithType(ACFC_TYPE)) {
|
if(reject.ItemWithType(kACFCType)) {
|
||||||
fLocalState = ACFC_REJECTED;
|
fLocalState = ACFC_REJECTED;
|
||||||
|
|
||||||
if(Options() & FORCE_ACFC_REQUEST)
|
if(Options() & FORCE_ACFC_REQUEST)
|
||||||
@@ -66,7 +66,7 @@ ACFCHandler::ParseReject(const KPPPConfigurePacket& reject)
|
|||||||
status_t
|
status_t
|
||||||
ACFCHandler::ParseAck(const KPPPConfigurePacket& ack)
|
ACFCHandler::ParseAck(const KPPPConfigurePacket& ack)
|
||||||
{
|
{
|
||||||
if(ack.ItemWithType(ACFC_TYPE))
|
if(ack.ItemWithType(kACFCType))
|
||||||
fLocalState = ACFC_ACCEPTED;
|
fLocalState = ACFC_ACCEPTED;
|
||||||
else {
|
else {
|
||||||
fLocalState = ACFC_DISABLED;
|
fLocalState = ACFC_DISABLED;
|
||||||
@@ -83,12 +83,12 @@ status_t
|
|||||||
ACFCHandler::ParseRequest(const KPPPConfigurePacket& request,
|
ACFCHandler::ParseRequest(const KPPPConfigurePacket& request,
|
||||||
int32 index, KPPPConfigurePacket& nak, KPPPConfigurePacket& reject)
|
int32 index, KPPPConfigurePacket& nak, KPPPConfigurePacket& reject)
|
||||||
{
|
{
|
||||||
if(!request.ItemWithType(ACFC_TYPE))
|
if(!request.ItemWithType(kACFCType))
|
||||||
return B_OK;
|
return B_OK;
|
||||||
|
|
||||||
if((Options() & ALLOW_ACFC) == 0) {
|
if((Options() & ALLOW_ACFC) == 0) {
|
||||||
ppp_configure_item item;
|
ppp_configure_item item;
|
||||||
item.type = ACFC_TYPE;
|
item.type = kACFCType;
|
||||||
item.length = 2;
|
item.length = 2;
|
||||||
return reject.AddItem(&item) ? B_OK : B_ERROR;
|
return reject.AddItem(&item) ? B_OK : B_ERROR;
|
||||||
}
|
}
|
||||||
@@ -100,7 +100,7 @@ ACFCHandler::ParseRequest(const KPPPConfigurePacket& request,
|
|||||||
status_t
|
status_t
|
||||||
ACFCHandler::SendingAck(const KPPPConfigurePacket& ack)
|
ACFCHandler::SendingAck(const KPPPConfigurePacket& ack)
|
||||||
{
|
{
|
||||||
ppp_configure_item *item = ack.ItemWithType(ACFC_TYPE);
|
ppp_configure_item *item = ack.ItemWithType(kACFCType);
|
||||||
|
|
||||||
if(item && (Options() & ALLOW_ACFC) == 0)
|
if(item && (Options() & ALLOW_ACFC) == 0)
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
|||||||
@@ -17,13 +17,12 @@
|
|||||||
#include <sys/sockio.h>
|
#include <sys/sockio.h>
|
||||||
|
|
||||||
|
|
||||||
#define PAP_TIMEOUT 3000000
|
static const bigtime_t kPAPTimeout = 3000000;
|
||||||
// 3 seconds
|
// 3 seconds
|
||||||
|
|
||||||
|
|
||||||
// PAPHandler
|
// PAPHandler
|
||||||
#define AUTHENTICATION_TYPE 0x3
|
static const uint8 kAuthenticationType = 0x3;
|
||||||
#define AUTHENTICATOR_TYPE_STRING "Authenticator"
|
static const char *kAuthenticatorTypeString = "Authenticator";
|
||||||
|
|
||||||
typedef struct authentication_item {
|
typedef struct authentication_item {
|
||||||
uint8 type;
|
uint8 type;
|
||||||
@@ -33,7 +32,7 @@ typedef struct authentication_item {
|
|||||||
|
|
||||||
|
|
||||||
PAPHandler::PAPHandler(PAP& owner, KPPPInterface& interface)
|
PAPHandler::PAPHandler(PAP& owner, KPPPInterface& interface)
|
||||||
: KPPPOptionHandler("PAP", AUTHENTICATION_TYPE, interface, NULL),
|
: KPPPOptionHandler("PAP", kAuthenticationType, interface, NULL),
|
||||||
fOwner(owner)
|
fOwner(owner)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -47,7 +46,7 @@ PAPHandler::AddToRequest(KPPPConfigurePacket& request)
|
|||||||
return B_OK;
|
return B_OK;
|
||||||
|
|
||||||
authentication_item item;
|
authentication_item item;
|
||||||
item.type = AUTHENTICATION_TYPE;
|
item.type = kAuthenticationType;
|
||||||
item.length = sizeof(item);
|
item.length = sizeof(item);
|
||||||
item.protocolNumber = htons(PAP_PROTOCOL);
|
item.protocolNumber = htons(PAP_PROTOCOL);
|
||||||
|
|
||||||
@@ -88,7 +87,7 @@ PAPHandler::ParseRequest(const KPPPConfigurePacket& request,
|
|||||||
|
|
||||||
// we merely check if the values are correct
|
// we merely check if the values are correct
|
||||||
authentication_item *item = (authentication_item*) request.ItemAt(index);
|
authentication_item *item = (authentication_item*) request.ItemAt(index);
|
||||||
if(item->type != AUTHENTICATION_TYPE
|
if(item->type != kAuthenticationType
|
||||||
|| item->length != 4 || ntohs(item->protocolNumber) != PAP_PROTOCOL)
|
|| item->length != 4 || ntohs(item->protocolNumber) != PAP_PROTOCOL)
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
|
||||||
@@ -113,7 +112,7 @@ PAPHandler::Reset()
|
|||||||
PAP::PAP(KPPPInterface& interface, driver_parameter *settings)
|
PAP::PAP(KPPPInterface& interface, driver_parameter *settings)
|
||||||
: KPPPProtocol("PAP", PPP_AUTHENTICATION_PHASE, PAP_PROTOCOL, PPP_PROTOCOL_LEVEL,
|
: KPPPProtocol("PAP", PPP_AUTHENTICATION_PHASE, PAP_PROTOCOL, PPP_PROTOCOL_LEVEL,
|
||||||
AF_INET, 0, interface, settings, PPP_ALWAYS_ALLOWED,
|
AF_INET, 0, interface, settings, PPP_ALWAYS_ALLOWED,
|
||||||
AUTHENTICATOR_TYPE_STRING, new PAPHandler(*this, interface)),
|
kAuthenticatorTypeString, new PAPHandler(*this, interface)),
|
||||||
fState(INITIAL),
|
fState(INITIAL),
|
||||||
fID(system_time() & 0xFF),
|
fID(system_time() & 0xFF),
|
||||||
fMaxRequest(3),
|
fMaxRequest(3),
|
||||||
@@ -165,7 +164,7 @@ PAP::Up()
|
|||||||
} else if(Side() == PPP_PEER_SIDE) {
|
} else if(Side() == PPP_PEER_SIDE) {
|
||||||
NewState(WAITING_FOR_REQ);
|
NewState(WAITING_FOR_REQ);
|
||||||
InitializeRestartCount();
|
InitializeRestartCount();
|
||||||
fNextTimeout = system_time() + PAP_TIMEOUT;
|
fNextTimeout = system_time() + kPAPTimeout;
|
||||||
} else {
|
} else {
|
||||||
UpFailedEvent();
|
UpFailedEvent();
|
||||||
return false;
|
return false;
|
||||||
@@ -381,7 +380,7 @@ PAP::TOGoodEvent()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case WAITING_FOR_REQ:
|
case WAITING_FOR_REQ:
|
||||||
fNextTimeout = system_time() + PAP_TIMEOUT;
|
fNextTimeout = system_time() + kPAPTimeout;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -541,7 +540,7 @@ PAP::SendRequest()
|
|||||||
|
|
||||||
LockerHelper locker(fLock);
|
LockerHelper locker(fLock);
|
||||||
--fRequestCounter;
|
--fRequestCounter;
|
||||||
fNextTimeout = system_time() + PAP_TIMEOUT;
|
fNextTimeout = system_time() + kPAPTimeout;
|
||||||
locker.UnlockNow();
|
locker.UnlockNow();
|
||||||
|
|
||||||
struct mbuf *packet = m_gethdr(MT_DATA);
|
struct mbuf *packet = m_gethdr(MT_DATA);
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
#include <core_funcs.h>
|
#include <core_funcs.h>
|
||||||
|
|
||||||
|
|
||||||
#define PPP_STATE_MACHINE_TIMEOUT 3000000
|
static const bigtime_t kPPPStateMachineTimeout = 3000000;
|
||||||
// 3 seconds
|
// 3 seconds
|
||||||
|
|
||||||
|
|
||||||
@@ -265,6 +265,8 @@ KPPPStateMachine::LocalAuthenticationDenied(const char *name)
|
|||||||
fLocalAuthenticationName = strdup(name);
|
fLocalAuthenticationName = strdup(name);
|
||||||
else
|
else
|
||||||
fLocalAuthenticationName = NULL;
|
fLocalAuthenticationName = NULL;
|
||||||
|
|
||||||
|
// the report will be sent in DownEvent()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -329,6 +331,8 @@ KPPPStateMachine::PeerAuthenticationDenied(const char *name)
|
|||||||
fPeerAuthenticationName = NULL;
|
fPeerAuthenticationName = NULL;
|
||||||
|
|
||||||
CloseEvent();
|
CloseEvent();
|
||||||
|
|
||||||
|
// the report will be sent in DownEvent()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1762,7 +1766,7 @@ KPPPStateMachine::SendConfigureRequest()
|
|||||||
|
|
||||||
LockerHelper locker(fLock);
|
LockerHelper locker(fLock);
|
||||||
--fRequestCounter;
|
--fRequestCounter;
|
||||||
fNextTimeout = system_time() + PPP_STATE_MACHINE_TIMEOUT;
|
fNextTimeout = system_time() + kPPPStateMachineTimeout;
|
||||||
locker.UnlockNow();
|
locker.UnlockNow();
|
||||||
|
|
||||||
KPPPConfigurePacket request(PPP_CONFIGURE_REQUEST);
|
KPPPConfigurePacket request(PPP_CONFIGURE_REQUEST);
|
||||||
@@ -1843,7 +1847,7 @@ KPPPStateMachine::SendTerminateRequest()
|
|||||||
|
|
||||||
LockerHelper locker(fLock);
|
LockerHelper locker(fLock);
|
||||||
--fTerminateCounter;
|
--fTerminateCounter;
|
||||||
fNextTimeout = system_time() + PPP_STATE_MACHINE_TIMEOUT;
|
fNextTimeout = system_time() + kPPPStateMachineTimeout;
|
||||||
locker.UnlockNow();
|
locker.UnlockNow();
|
||||||
|
|
||||||
struct mbuf *packet = m_gethdr(MT_DATA);
|
struct mbuf *packet = m_gethdr(MT_DATA);
|
||||||
|
|||||||
@@ -13,8 +13,8 @@
|
|||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
|
|
||||||
|
|
||||||
#define AUTHENTICATION_TYPE 0x3
|
static const uint8 kAuthenticationType = 0x3;
|
||||||
#define AUTHENTICATOR_TYPE_STRING "Authenticator"
|
static const char *kAuthenticatorTypeString = "Authenticator";
|
||||||
|
|
||||||
typedef struct authentication_item {
|
typedef struct authentication_item {
|
||||||
uint8 type;
|
uint8 type;
|
||||||
@@ -24,7 +24,7 @@ typedef struct authentication_item {
|
|||||||
|
|
||||||
|
|
||||||
_KPPPAuthenticationHandler::_KPPPAuthenticationHandler(KPPPInterface& interface)
|
_KPPPAuthenticationHandler::_KPPPAuthenticationHandler(KPPPInterface& interface)
|
||||||
: KPPPOptionHandler("Authentication Handler", AUTHENTICATION_TYPE, interface, NULL),
|
: KPPPOptionHandler("Authentication Handler", kAuthenticationType, interface, NULL),
|
||||||
fLocalAuthenticator(NULL),
|
fLocalAuthenticator(NULL),
|
||||||
fPeerAuthenticator(NULL),
|
fPeerAuthenticator(NULL),
|
||||||
fSuggestedLocalAuthenticator(NULL),
|
fSuggestedLocalAuthenticator(NULL),
|
||||||
@@ -42,7 +42,7 @@ _KPPPAuthenticationHandler::NextAuthenticator(const KPPPProtocol *start,
|
|||||||
KPPPProtocol *current = start ? start->NextProtocol() : Interface().FirstProtocol();
|
KPPPProtocol *current = start ? start->NextProtocol() : Interface().FirstProtocol();
|
||||||
|
|
||||||
for(; current; current = current->NextProtocol()) {
|
for(; current; current = current->NextProtocol()) {
|
||||||
if(current->Type() && !strcasecmp(current->Type(), AUTHENTICATOR_TYPE_STRING)
|
if(current->Type() && !strcasecmp(current->Type(), kAuthenticatorTypeString)
|
||||||
&& current->OptionHandler() && current->Side() == side)
|
&& current->OptionHandler() && current->Side() == side)
|
||||||
return current;
|
return current;
|
||||||
}
|
}
|
||||||
@@ -115,7 +115,7 @@ _KPPPAuthenticationHandler::ParseNak(const KPPPConfigurePacket& nak)
|
|||||||
// The authenticator's OptionHandler is not notified.
|
// The authenticator's OptionHandler is not notified.
|
||||||
|
|
||||||
authentication_item *item =
|
authentication_item *item =
|
||||||
(authentication_item*) nak.ItemWithType(AUTHENTICATION_TYPE);
|
(authentication_item*) nak.ItemWithType(kAuthenticationType);
|
||||||
|
|
||||||
if(!item)
|
if(!item)
|
||||||
return B_OK;
|
return B_OK;
|
||||||
@@ -137,7 +137,7 @@ _KPPPAuthenticationHandler::ParseNak(const KPPPConfigurePacket& nak)
|
|||||||
fPeerAuthenticatorRejected = true;
|
fPeerAuthenticatorRejected = true;
|
||||||
KPPPProtocol *authenticator = Interface().ProtocolFor(ntohs(item->protocolNumber));
|
KPPPProtocol *authenticator = Interface().ProtocolFor(ntohs(item->protocolNumber));
|
||||||
if(authenticator && authenticator->Type()
|
if(authenticator && authenticator->Type()
|
||||||
&& !strcasecmp(authenticator->Type(), AUTHENTICATOR_TYPE_STRING)
|
&& !strcasecmp(authenticator->Type(), kAuthenticatorTypeString)
|
||||||
&& authenticator->OptionHandler())
|
&& authenticator->OptionHandler())
|
||||||
fSuggestedPeerAuthenticator = authenticator;
|
fSuggestedPeerAuthenticator = authenticator;
|
||||||
else
|
else
|
||||||
@@ -151,7 +151,7 @@ status_t
|
|||||||
_KPPPAuthenticationHandler::ParseReject(const KPPPConfigurePacket& reject)
|
_KPPPAuthenticationHandler::ParseReject(const KPPPConfigurePacket& reject)
|
||||||
{
|
{
|
||||||
// an authentication request must not be rejected!
|
// an authentication request must not be rejected!
|
||||||
if(reject.ItemWithType(AUTHENTICATION_TYPE))
|
if(reject.ItemWithType(kAuthenticationType))
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
@@ -162,7 +162,7 @@ status_t
|
|||||||
_KPPPAuthenticationHandler::ParseAck(const KPPPConfigurePacket& ack)
|
_KPPPAuthenticationHandler::ParseAck(const KPPPConfigurePacket& ack)
|
||||||
{
|
{
|
||||||
authentication_item *item =
|
authentication_item *item =
|
||||||
(authentication_item*) ack.ItemWithType(AUTHENTICATION_TYPE);
|
(authentication_item*) ack.ItemWithType(kAuthenticationType);
|
||||||
|
|
||||||
if(!item) {
|
if(!item) {
|
||||||
if(fPeerAuthenticator)
|
if(fPeerAuthenticator)
|
||||||
@@ -200,7 +200,7 @@ _KPPPAuthenticationHandler::ParseRequest(const KPPPConfigurePacket& request,
|
|||||||
// try to find the requested protocol
|
// try to find the requested protocol
|
||||||
fLocalAuthenticator = Interface().ProtocolFor(ntohs(item->protocolNumber));
|
fLocalAuthenticator = Interface().ProtocolFor(ntohs(item->protocolNumber));
|
||||||
if(fLocalAuthenticator && fLocalAuthenticator->Type()
|
if(fLocalAuthenticator && fLocalAuthenticator->Type()
|
||||||
&& !strcasecmp(fLocalAuthenticator->Type(), AUTHENTICATOR_TYPE_STRING)
|
&& !strcasecmp(fLocalAuthenticator->Type(), kAuthenticatorTypeString)
|
||||||
&& fLocalAuthenticator->OptionHandler())
|
&& fLocalAuthenticator->OptionHandler())
|
||||||
return fLocalAuthenticator->OptionHandler()->ParseRequest(request, index,
|
return fLocalAuthenticator->OptionHandler()->ParseRequest(request, index,
|
||||||
nak, reject);
|
nak, reject);
|
||||||
@@ -225,7 +225,7 @@ _KPPPAuthenticationHandler::ParseRequest(const KPPPConfigurePacket& request,
|
|||||||
|
|
||||||
// nak this authenticator and suggest an alternative
|
// nak this authenticator and suggest an alternative
|
||||||
authentication_item suggestion;
|
authentication_item suggestion;
|
||||||
suggestion.type = AUTHENTICATION_TYPE;
|
suggestion.type = kAuthenticationType;
|
||||||
suggestion.length = 4;
|
suggestion.length = 4;
|
||||||
suggestion.protocolNumber = htons(nextAuthenticator->ProtocolNumber());
|
suggestion.protocolNumber = htons(nextAuthenticator->ProtocolNumber());
|
||||||
return nak.AddItem((ppp_configure_item*) &suggestion) ? B_OK : B_ERROR;
|
return nak.AddItem((ppp_configure_item*) &suggestion) ? B_OK : B_ERROR;
|
||||||
@@ -238,7 +238,7 @@ _KPPPAuthenticationHandler::SendingAck(const KPPPConfigurePacket& ack)
|
|||||||
// do not insist on authenticating our side of the link ;)
|
// do not insist on authenticating our side of the link ;)
|
||||||
|
|
||||||
authentication_item *item =
|
authentication_item *item =
|
||||||
(authentication_item*) ack.ItemWithType(AUTHENTICATION_TYPE);
|
(authentication_item*) ack.ItemWithType(kAuthenticationType);
|
||||||
|
|
||||||
if(!item)
|
if(!item)
|
||||||
return B_OK;
|
return B_OK;
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
|
|
||||||
|
|
||||||
#define MRU_TYPE 0x1
|
static const uint8 kMRUType = 0x1;
|
||||||
|
|
||||||
typedef struct mru_item {
|
typedef struct mru_item {
|
||||||
uint8 type;
|
uint8 type;
|
||||||
@@ -25,7 +25,7 @@ status_t ParseRequestedItem(mru_item *item, KPPPInterface& interface);
|
|||||||
|
|
||||||
|
|
||||||
_KPPPMRUHandler::_KPPPMRUHandler(KPPPInterface& interface)
|
_KPPPMRUHandler::_KPPPMRUHandler(KPPPInterface& interface)
|
||||||
: KPPPOptionHandler("MRU Handler", MRU_TYPE, interface, NULL)
|
: KPPPOptionHandler("MRU Handler", kMRUType, interface, NULL)
|
||||||
{
|
{
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
@@ -39,7 +39,7 @@ _KPPPMRUHandler::AddToRequest(KPPPConfigurePacket& request)
|
|||||||
|
|
||||||
// add MRU request
|
// add MRU request
|
||||||
mru_item item;
|
mru_item item;
|
||||||
item.type = MRU_TYPE;
|
item.type = kMRUType;
|
||||||
item.length = 4;
|
item.length = 4;
|
||||||
item.MRU = htons(fLocalMRU);
|
item.MRU = htons(fLocalMRU);
|
||||||
return request.AddItem((ppp_configure_item*) &item) ? B_OK : B_ERROR;
|
return request.AddItem((ppp_configure_item*) &item) ? B_OK : B_ERROR;
|
||||||
@@ -49,7 +49,7 @@ _KPPPMRUHandler::AddToRequest(KPPPConfigurePacket& request)
|
|||||||
status_t
|
status_t
|
||||||
_KPPPMRUHandler::ParseNak(const KPPPConfigurePacket& nak)
|
_KPPPMRUHandler::ParseNak(const KPPPConfigurePacket& nak)
|
||||||
{
|
{
|
||||||
mru_item *item = (mru_item*) nak.ItemWithType(MRU_TYPE);
|
mru_item *item = (mru_item*) nak.ItemWithType(kMRUType);
|
||||||
if(!item || item->length != 4)
|
if(!item || item->length != 4)
|
||||||
return B_OK;
|
return B_OK;
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ _KPPPMRUHandler::ParseNak(const KPPPConfigurePacket& nak)
|
|||||||
status_t
|
status_t
|
||||||
_KPPPMRUHandler::ParseReject(const KPPPConfigurePacket& reject)
|
_KPPPMRUHandler::ParseReject(const KPPPConfigurePacket& reject)
|
||||||
{
|
{
|
||||||
if(reject.ItemWithType(MRU_TYPE))
|
if(reject.ItemWithType(kMRUType))
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
@@ -75,7 +75,7 @@ status_t
|
|||||||
_KPPPMRUHandler::ParseAck(const KPPPConfigurePacket& ack)
|
_KPPPMRUHandler::ParseAck(const KPPPConfigurePacket& ack)
|
||||||
{
|
{
|
||||||
uint16 MRU = 1500;
|
uint16 MRU = 1500;
|
||||||
mru_item *item = (mru_item*) ack.ItemWithType(MRU_TYPE);
|
mru_item *item = (mru_item*) ack.ItemWithType(kMRUType);
|
||||||
|
|
||||||
if(item)
|
if(item)
|
||||||
MRU = ntohs(item->MRU);
|
MRU = ntohs(item->MRU);
|
||||||
@@ -103,7 +103,7 @@ _KPPPMRUHandler::ParseRequest(const KPPPConfigurePacket& request,
|
|||||||
status_t
|
status_t
|
||||||
_KPPPMRUHandler::SendingAck(const KPPPConfigurePacket& ack)
|
_KPPPMRUHandler::SendingAck(const KPPPConfigurePacket& ack)
|
||||||
{
|
{
|
||||||
return ParseRequestedItem((mru_item*) ack.ItemWithType(MRU_TYPE), Interface());
|
return ParseRequestedItem((mru_item*) ack.ItemWithType(kMRUType), Interface());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -10,12 +10,12 @@
|
|||||||
#include <KPPPConfigurePacket.h>
|
#include <KPPPConfigurePacket.h>
|
||||||
|
|
||||||
|
|
||||||
#define PFC_TYPE 0x7
|
static const uint8 kPFCType = 0x7;
|
||||||
|
|
||||||
|
|
||||||
_KPPPPFCHandler::_KPPPPFCHandler(ppp_pfc_state& localPFCState,
|
_KPPPPFCHandler::_KPPPPFCHandler(ppp_pfc_state& localPFCState,
|
||||||
ppp_pfc_state& peerPFCState, KPPPInterface& interface)
|
ppp_pfc_state& peerPFCState, KPPPInterface& interface)
|
||||||
: KPPPOptionHandler("PFC Handler", PFC_TYPE, interface, NULL),
|
: KPPPOptionHandler("PFC Handler", kPFCType, interface, NULL),
|
||||||
fLocalPFCState(localPFCState),
|
fLocalPFCState(localPFCState),
|
||||||
fPeerPFCState(peerPFCState)
|
fPeerPFCState(peerPFCState)
|
||||||
{
|
{
|
||||||
@@ -32,7 +32,7 @@ _KPPPPFCHandler::AddToRequest(KPPPConfigurePacket& request)
|
|||||||
|
|
||||||
// add PFC request
|
// add PFC request
|
||||||
ppp_configure_item item;
|
ppp_configure_item item;
|
||||||
item.type = PFC_TYPE;
|
item.type = kPFCType;
|
||||||
item.length = 2;
|
item.length = 2;
|
||||||
return request.AddItem(&item) ? B_OK : B_ERROR;
|
return request.AddItem(&item) ? B_OK : B_ERROR;
|
||||||
}
|
}
|
||||||
@@ -42,7 +42,7 @@ status_t
|
|||||||
_KPPPPFCHandler::ParseNak(const KPPPConfigurePacket& nak)
|
_KPPPPFCHandler::ParseNak(const KPPPConfigurePacket& nak)
|
||||||
{
|
{
|
||||||
// naks do not contain PFC items
|
// naks do not contain PFC items
|
||||||
if(nak.ItemWithType(PFC_TYPE))
|
if(nak.ItemWithType(kPFCType))
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
@@ -52,7 +52,7 @@ _KPPPPFCHandler::ParseNak(const KPPPConfigurePacket& nak)
|
|||||||
status_t
|
status_t
|
||||||
_KPPPPFCHandler::ParseReject(const KPPPConfigurePacket& reject)
|
_KPPPPFCHandler::ParseReject(const KPPPConfigurePacket& reject)
|
||||||
{
|
{
|
||||||
if(reject.ItemWithType(PFC_TYPE)) {
|
if(reject.ItemWithType(kPFCType)) {
|
||||||
fLocalPFCState = PPP_PFC_REJECTED;
|
fLocalPFCState = PPP_PFC_REJECTED;
|
||||||
|
|
||||||
if(Interface().PFCOptions() & PPP_FORCE_PFC_REQUEST)
|
if(Interface().PFCOptions() & PPP_FORCE_PFC_REQUEST)
|
||||||
@@ -66,7 +66,7 @@ _KPPPPFCHandler::ParseReject(const KPPPConfigurePacket& reject)
|
|||||||
status_t
|
status_t
|
||||||
_KPPPPFCHandler::ParseAck(const KPPPConfigurePacket& ack)
|
_KPPPPFCHandler::ParseAck(const KPPPConfigurePacket& ack)
|
||||||
{
|
{
|
||||||
if(ack.ItemWithType(PFC_TYPE))
|
if(ack.ItemWithType(kPFCType))
|
||||||
fLocalPFCState = PPP_PFC_ACCEPTED;
|
fLocalPFCState = PPP_PFC_ACCEPTED;
|
||||||
else {
|
else {
|
||||||
fLocalPFCState = PPP_PFC_DISABLED;
|
fLocalPFCState = PPP_PFC_DISABLED;
|
||||||
@@ -83,12 +83,12 @@ status_t
|
|||||||
_KPPPPFCHandler::ParseRequest(const KPPPConfigurePacket& request,
|
_KPPPPFCHandler::ParseRequest(const KPPPConfigurePacket& request,
|
||||||
int32 index, KPPPConfigurePacket& nak, KPPPConfigurePacket& reject)
|
int32 index, KPPPConfigurePacket& nak, KPPPConfigurePacket& reject)
|
||||||
{
|
{
|
||||||
if(!request.ItemWithType(PFC_TYPE))
|
if(!request.ItemWithType(kPFCType))
|
||||||
return B_OK;
|
return B_OK;
|
||||||
|
|
||||||
if((Interface().PFCOptions() & PPP_ALLOW_PFC) == 0) {
|
if((Interface().PFCOptions() & PPP_ALLOW_PFC) == 0) {
|
||||||
ppp_configure_item item;
|
ppp_configure_item item;
|
||||||
item.type = PFC_TYPE;
|
item.type = kPFCType;
|
||||||
item.length = 2;
|
item.length = 2;
|
||||||
return reject.AddItem(&item) ? B_OK : B_ERROR;
|
return reject.AddItem(&item) ? B_OK : B_ERROR;
|
||||||
}
|
}
|
||||||
@@ -100,7 +100,7 @@ _KPPPPFCHandler::ParseRequest(const KPPPConfigurePacket& request,
|
|||||||
status_t
|
status_t
|
||||||
_KPPPPFCHandler::SendingAck(const KPPPConfigurePacket& ack)
|
_KPPPPFCHandler::SendingAck(const KPPPConfigurePacket& ack)
|
||||||
{
|
{
|
||||||
ppp_configure_item *item = ack.ItemWithType(PFC_TYPE);
|
ppp_configure_item *item = ack.ItemWithType(kPFCType);
|
||||||
|
|
||||||
if(item && (Interface().PFCOptions() & PPP_ALLOW_PFC) == 0)
|
if(item && (Interface().PFCOptions() & PPP_ALLOW_PFC) == 0)
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
|||||||
@@ -98,9 +98,9 @@ typedef struct ppp_interface_description_info {
|
|||||||
} u;
|
} u;
|
||||||
//!< Different values for describing an interface.
|
//!< Different values for describing an interface.
|
||||||
const driver_settings *profile;
|
const driver_settings *profile;
|
||||||
//!<
|
//!< An optional profile. If \a profile == NULL the default profile is used.
|
||||||
ppp_interface_id interface;
|
ppp_interface_id interface;
|
||||||
//!< the found/created interface
|
//!< The id of the found/created interface.
|
||||||
} ppp_interface_description_info;
|
} ppp_interface_description_info;
|
||||||
|
|
||||||
|
|
||||||
@@ -109,11 +109,11 @@ typedef struct ppp_get_interfaces_info {
|
|||||||
ppp_interface_id *interfaces;
|
ppp_interface_id *interfaces;
|
||||||
//!< The interface ids will be written to this pointer's target.
|
//!< The interface ids will be written to this pointer's target.
|
||||||
int32 count;
|
int32 count;
|
||||||
//!< \a Interface has \a count entries.
|
//!< The \a interfaces field has enough space for \a count entries.
|
||||||
ppp_interface_filter filter;
|
ppp_interface_filter filter;
|
||||||
//!< Only interfaces that match this filter will be returned
|
//!< Only interfaces that match this filter will be returned
|
||||||
int32 resultCount;
|
int32 resultCount;
|
||||||
//!< The number of saved interfaces.
|
//!< The number of entries that the \a interfaces field contains.
|
||||||
} ppp_get_interfaces_info;
|
} ppp_get_interfaces_info;
|
||||||
|
|
||||||
|
|
||||||
@@ -124,7 +124,7 @@ typedef struct ppp_control_info {
|
|||||||
uint32 op;
|
uint32 op;
|
||||||
//!< The Control()/ioctl() opcode. This can be any value from ppp_control_ops.
|
//!< The Control()/ioctl() opcode. This can be any value from ppp_control_ops.
|
||||||
void *data;
|
void *data;
|
||||||
//!< Additional data may be specified.
|
//!< Additional data may be specified here.
|
||||||
size_t length;
|
size_t length;
|
||||||
//!< The length should always be set.
|
//!< The length should always be set.
|
||||||
} ppp_control_info;
|
} ppp_control_info;
|
||||||
|
|||||||
@@ -14,6 +14,14 @@
|
|||||||
// TODO: remove this as soon as we get the extended driver_settings API
|
// TODO: remove this as soon as we get the extended driver_settings API
|
||||||
extern driver_settings *dup_driver_settings(const driver_settings *settings);
|
extern driver_settings *dup_driver_settings(const driver_settings *settings);
|
||||||
extern void free_driver_settings(driver_settings *settings);
|
extern void free_driver_settings(driver_settings *settings);
|
||||||
|
extern void free_driver_parameter_fields(driver_parameter *parameter);
|
||||||
|
|
||||||
|
extern driver_settings *new_driver_settings();
|
||||||
|
extern driver_parameter *new_driver_parameter(const char *name);
|
||||||
|
extern bool copy_driver_parameter(const driver_parameter *from, driver_parameter *to);
|
||||||
|
extern bool set_driver_parameter_name(const char *name, driver_parameter *parameter);
|
||||||
|
extern bool add_driver_parameter_value(const char *value, driver_parameter *to);
|
||||||
|
extern bool add_driver_parameter(driver_parameter *add, driver_settings *to);
|
||||||
|
|
||||||
extern bool equal_driver_settings(const driver_settings *lhs,
|
extern bool equal_driver_settings(const driver_settings *lhs,
|
||||||
const driver_settings *rhs);
|
const driver_settings *rhs);
|
||||||
@@ -31,12 +39,26 @@ extern const char *get_settings_value(const char *name,
|
|||||||
const driver_settings *settings);
|
const driver_settings *settings);
|
||||||
|
|
||||||
|
|
||||||
|
inline
|
||||||
|
bool
|
||||||
|
add_driver_parameter(driver_parameter *add, driver_parameter *to)
|
||||||
|
{
|
||||||
|
if(!to)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return add_driver_parameter(add, (driver_settings*) &to->parameter_count);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
inline
|
inline
|
||||||
const driver_parameter*
|
const driver_parameter*
|
||||||
get_parameter_with_name(const char *name, const driver_parameter *parameters)
|
get_parameter_with_name(const char *name, const driver_parameter *parameters)
|
||||||
{
|
{
|
||||||
|
if(!parameters)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
return get_parameter_with_name(name,
|
return get_parameter_with_name(name,
|
||||||
parameters ? (driver_settings*) ¶meters->parameter_count : NULL);
|
(driver_settings*) ¶meters->parameter_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -44,8 +66,10 @@ inline
|
|||||||
const char*
|
const char*
|
||||||
get_parameter_value(const char *name, const driver_parameter *parameters)
|
get_parameter_value(const char *name, const driver_parameter *parameters)
|
||||||
{
|
{
|
||||||
return get_settings_value(name,
|
if(parameters)
|
||||||
parameters ? (driver_settings*) ¶meters->parameter_count : NULL);
|
return NULL;
|
||||||
|
|
||||||
|
return get_settings_value(name, (driver_settings*) ¶meters->parameter_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
|
|
||||||
|
|
||||||
static char *sSkipInterfaceParameters[] = {
|
static const char *sSkipInterfaceParameters[] = {
|
||||||
PPP_ASK_BEFORE_DIALING_KEY,
|
PPP_ASK_BEFORE_DIALING_KEY,
|
||||||
PPP_DISONNECT_AFTER_IDLE_SINCE_KEY,
|
PPP_DISONNECT_AFTER_IDLE_SINCE_KEY,
|
||||||
PPP_DIAL_RETRIES_LIMIT_KEY,
|
PPP_DIAL_RETRIES_LIMIT_KEY,
|
||||||
@@ -25,9 +25,6 @@ static char *sSkipInterfaceParameters[] = {
|
|||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
static void copy_parameter(const driver_parameter *from, driver_parameter *to);
|
|
||||||
static void free_driver_parameter(driver_parameter *parameter);
|
|
||||||
|
|
||||||
|
|
||||||
driver_settings*
|
driver_settings*
|
||||||
dup_driver_settings(const driver_settings *dup)
|
dup_driver_settings(const driver_settings *dup)
|
||||||
@@ -40,27 +37,87 @@ dup_driver_settings(const driver_settings *dup)
|
|||||||
ret->parameter_count = dup->parameter_count;
|
ret->parameter_count = dup->parameter_count;
|
||||||
|
|
||||||
if(ret->parameter_count > 0)
|
if(ret->parameter_count > 0)
|
||||||
ret->parameters =
|
ret->parameters = (driver_parameter*)
|
||||||
(driver_parameter*) malloc(ret->parameter_count * sizeof(driver_parameter));
|
malloc(ret->parameter_count * sizeof(driver_parameter));
|
||||||
else
|
else
|
||||||
ret->parameters = NULL;
|
ret->parameters = NULL;
|
||||||
|
|
||||||
for(int32 index = 0; index < ret->parameter_count; index++)
|
for(int32 index = 0; index < ret->parameter_count; index++)
|
||||||
copy_parameter(&dup->parameters[index], &ret->parameters[index]);
|
copy_driver_parameter(&dup->parameters[index], &ret->parameters[index]);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static
|
|
||||||
void
|
void
|
||||||
copy_parameter(const driver_parameter *from, driver_parameter *to)
|
free_driver_settings(driver_settings *settings)
|
||||||
{
|
{
|
||||||
to->name = strdup(from->name);
|
if(!settings)
|
||||||
to->value_count = from->value_count;
|
return;
|
||||||
|
|
||||||
if(to->value_count > 0)
|
for(int32 index = 0; index < settings->parameter_count; index++)
|
||||||
to->values = (char**) malloc(to->value_count * sizeof(char*));
|
free_driver_parameter_fields(&settings->parameters[index]);
|
||||||
|
|
||||||
|
free(settings->parameters);
|
||||||
|
free(settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
free_driver_parameter_fields(driver_parameter *parameter)
|
||||||
|
{
|
||||||
|
free(parameter->name);
|
||||||
|
|
||||||
|
for(int32 index = 0; index < parameter->value_count; index++)
|
||||||
|
free(parameter->values[index]);
|
||||||
|
|
||||||
|
free(parameter->values);
|
||||||
|
|
||||||
|
for(int32 index = 0; index < parameter->parameter_count; index++)
|
||||||
|
free_driver_parameter_fields(¶meter->parameters[index]);
|
||||||
|
|
||||||
|
free(parameter->parameters);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
driver_settings*
|
||||||
|
new_driver_settings()
|
||||||
|
{
|
||||||
|
driver_settings *settings = (driver_settings*) malloc(sizeof(driver_settings));
|
||||||
|
memset(settings, 0, sizeof(driver_settings));
|
||||||
|
|
||||||
|
return settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
driver_parameter*
|
||||||
|
new_driver_parameter(const char *name)
|
||||||
|
{
|
||||||
|
driver_parameter *parameter = (driver_parameter*) malloc(sizeof(driver_parameter));
|
||||||
|
memset(parameter, 0, sizeof(driver_parameter));
|
||||||
|
|
||||||
|
set_driver_parameter_name(name, parameter);
|
||||||
|
|
||||||
|
return parameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
copy_driver_parameter(const driver_parameter *from, driver_parameter *to)
|
||||||
|
{
|
||||||
|
if(!from || !to)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
free_driver_parameter_fields(to);
|
||||||
|
|
||||||
|
if(from->name)
|
||||||
|
to->name = strdup(from->name);
|
||||||
|
else
|
||||||
|
to->name = NULL;
|
||||||
|
|
||||||
|
to->value_count = from->value_count;
|
||||||
|
if(from->value_count > 0)
|
||||||
|
to->values = (char**) malloc(from->value_count * sizeof(char*));
|
||||||
else
|
else
|
||||||
to->values = NULL;
|
to->values = NULL;
|
||||||
|
|
||||||
@@ -76,39 +133,75 @@ copy_parameter(const driver_parameter *from, driver_parameter *to)
|
|||||||
to->parameters = NULL;
|
to->parameters = NULL;
|
||||||
|
|
||||||
for(int32 index = 0; index < to->parameter_count; index++)
|
for(int32 index = 0; index < to->parameter_count; index++)
|
||||||
copy_parameter(&from->parameters[index], &to->parameters[index]);
|
copy_driver_parameter(&from->parameters[index], &to->parameters[index]);
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
bool
|
||||||
free_driver_settings(driver_settings *settings)
|
set_driver_parameter_name(const char *name, driver_parameter *parameter)
|
||||||
{
|
{
|
||||||
if(!settings)
|
if(!parameter)
|
||||||
return;
|
return false;
|
||||||
|
|
||||||
for(int32 index = 0; index < settings->parameter_count; index++)
|
|
||||||
free_driver_parameter(&settings->parameters[index]);
|
|
||||||
|
|
||||||
free(settings->parameters);
|
|
||||||
free(settings);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static
|
|
||||||
void
|
|
||||||
free_driver_parameter(driver_parameter *parameter)
|
|
||||||
{
|
|
||||||
free(parameter->name);
|
free(parameter->name);
|
||||||
|
|
||||||
for(int32 index = 0; index < parameter->value_count; index++)
|
if(name)
|
||||||
free(parameter->values[index]);
|
parameter->name = strdup(name);
|
||||||
|
else
|
||||||
|
parameter->name = NULL;
|
||||||
|
|
||||||
free(parameter->values);
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
add_driver_parameter_value(const char *value, driver_parameter *to)
|
||||||
|
{
|
||||||
|
if(!value || !to)
|
||||||
|
return false;
|
||||||
|
|
||||||
for(int32 index = 0; index < parameter->parameter_count; index++)
|
int32 oldCount = to->value_count;
|
||||||
free_driver_parameter(¶meter->parameters[index]);
|
char **old = to->values;
|
||||||
|
|
||||||
free(parameter->parameters);
|
to->values = (char**) malloc(to->value_count + 1 * sizeof(char*));
|
||||||
|
|
||||||
|
if(!to->values) {
|
||||||
|
to->values = old;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
to->value_count++;
|
||||||
|
memcpy(to->values, old, oldCount * sizeof(char*));
|
||||||
|
to->values[oldCount] = strdup(value);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
add_driver_parameter(driver_parameter *add, driver_settings *to)
|
||||||
|
{
|
||||||
|
if(!add || !to)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
int32 oldCount = to->parameter_count;
|
||||||
|
driver_parameter *old = to->parameters;
|
||||||
|
|
||||||
|
to->parameters =
|
||||||
|
(driver_parameter*) malloc(to->parameter_count + 1 * sizeof(driver_parameter));
|
||||||
|
|
||||||
|
if(!to->parameters) {
|
||||||
|
to->parameters = old;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
to->parameter_count++;
|
||||||
|
memcpy(to->parameters, old, oldCount * sizeof(driver_parameter));
|
||||||
|
memcpy(to->parameters + oldCount, add, sizeof(driver_parameter));
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
SubDir OBOS_TOP src add-ons kernel network ppp shared libppp ;
|
SubDir OBOS_TOP src add-ons kernel network ppp shared libppp ;
|
||||||
|
|
||||||
UsePrivateHeaders net ;
|
UsePrivateHeaders net ;
|
||||||
|
UseHeaders [ FDirName $(OBOS_TOP) src servers net ] ;
|
||||||
UseHeaders [ FDirName $(OBOS_TOP) src add-ons kernel network ppp shared libppp headers ] ;
|
UseHeaders [ FDirName $(OBOS_TOP) src add-ons kernel network ppp shared libppp headers ] ;
|
||||||
UseHeaders [ FDirName $(OBOS_TOP) src add-ons kernel network ppp shared libkernelppp headers ] ;
|
UseHeaders [ FDirName $(OBOS_TOP) src add-ons kernel network ppp shared libkernelppp headers ] ;
|
||||||
|
|
||||||
|
|||||||
@@ -14,10 +14,10 @@
|
|||||||
#include <LockerHelper.h>
|
#include <LockerHelper.h>
|
||||||
|
|
||||||
|
|
||||||
#define REPORT_FLAGS PPP_WAIT_FOR_REPLY | PPP_NO_REPLY_TIMEOUT \
|
static const uint32 kReportFlags = PPP_WAIT_FOR_REPLY | PPP_NO_REPLY_TIMEOUT
|
||||||
| PPP_ALLOW_ANY_REPLY_THREAD
|
| PPP_ALLOW_ANY_REPLY_THREAD;
|
||||||
|
|
||||||
#define QUIT_REPORT_THREAD 'QUIT'
|
static const uint32 kCodeQuitReportThread = 'QUIT';
|
||||||
|
|
||||||
|
|
||||||
class PPPInterfaceListenerThread {
|
class PPPInterfaceListenerThread {
|
||||||
@@ -46,7 +46,7 @@ PPPInterfaceListenerThread::Run()
|
|||||||
while(true) {
|
while(true) {
|
||||||
code = receive_data(&sender, &packet, sizeof(packet));
|
code = receive_data(&sender, &packet, sizeof(packet));
|
||||||
|
|
||||||
if(code == QUIT_REPORT_THREAD)
|
if(code == kCodeQuitReportThread)
|
||||||
break;
|
break;
|
||||||
else if(code != PPP_REPORT_CODE)
|
else if(code != PPP_REPORT_CODE)
|
||||||
continue;
|
continue;
|
||||||
@@ -121,7 +121,7 @@ PPPInterfaceListener::~PPPInterfaceListener()
|
|||||||
Manager().DisableReports(PPP_ALL_REPORTS, fReportThread);
|
Manager().DisableReports(PPP_ALL_REPORTS, fReportThread);
|
||||||
|
|
||||||
// tell thread to quit
|
// tell thread to quit
|
||||||
send_data(fReportThread, QUIT_REPORT_THREAD, NULL, 0);
|
send_data(fReportThread, kCodeQuitReportThread, NULL, 0);
|
||||||
int32 tmp;
|
int32 tmp;
|
||||||
wait_for_thread(fReportThread, &tmp);
|
wait_for_thread(fReportThread, &tmp);
|
||||||
}
|
}
|
||||||
@@ -156,7 +156,7 @@ PPPInterfaceListener::WatchInterface(ppp_interface_id ID)
|
|||||||
if(interface.InitCheck() != B_OK)
|
if(interface.InitCheck() != B_OK)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if(!interface.EnableReports(PPP_CONNECTION_REPORT, fReportThread, REPORT_FLAGS))
|
if(!interface.EnableReports(PPP_CONNECTION_REPORT, fReportThread, kReportFlags))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
fDoesWatch = true;
|
fDoesWatch = true;
|
||||||
@@ -182,7 +182,7 @@ PPPInterfaceListener::WatchAllInterfaces()
|
|||||||
|
|
||||||
for(int32 index = 0; index < count; index++) {
|
for(int32 index = 0; index < count; index++) {
|
||||||
interface.SetTo(interfaceList[index]);
|
interface.SetTo(interfaceList[index]);
|
||||||
interface.EnableReports(PPP_CONNECTION_REPORT, fReportThread, REPORT_FLAGS);
|
interface.EnableReports(PPP_CONNECTION_REPORT, fReportThread, kReportFlags);
|
||||||
}
|
}
|
||||||
delete interfaceList;
|
delete interfaceList;
|
||||||
|
|
||||||
@@ -231,5 +231,5 @@ PPPInterfaceListener::Construct()
|
|||||||
resume_thread(fReportThread);
|
resume_thread(fReportThread);
|
||||||
|
|
||||||
// enable manager reports
|
// enable manager reports
|
||||||
Manager().EnableReports(PPP_MANAGER_REPORT, fReportThread, REPORT_FLAGS);
|
Manager().EnableReports(PPP_MANAGER_REPORT, fReportThread, kReportFlags);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,10 @@
|
|||||||
#define __libppputils__h
|
#define __libppputils__h
|
||||||
|
|
||||||
#include <net_stack_driver.h>
|
#include <net_stack_driver.h>
|
||||||
|
#include <NetServer.h>
|
||||||
|
|
||||||
|
|
||||||
|
#define PPP_SERVER_SIGNATURE NET_SERVER_SIGNATURE
|
||||||
|
|
||||||
|
|
||||||
char *get_stack_driver_path();
|
char *get_stack_driver_path();
|
||||||
|
|||||||
Reference in New Issue
Block a user