DialOnDemand will be handled differently. Instead of setting it manually in the prefs we have one default interface. Still not finished.

Moved ppp_up code to KPPPManager.
Experimenting with IPCP DialOnDemand support.
Many changes I do not remember.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10117 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Waldemar Kornewald
2004-11-21 12:55:27 +00:00
parent c18c171835
commit 84b580c425
72 changed files with 681 additions and 1062 deletions
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <[email protected]>
* Distributed under the terms of the MIT License.
*/
#include <cstdio>
@@ -110,12 +108,12 @@ pulse_timer(void *data)
PPPManager::PPPManager()
: fReportManager(fReportLock),
: fLock("PPPManager"),
fReportLock("PPPManagerReportLock"),
fReportManager(fReportLock),
fNextID(1)
{
#if DEBUG
dprintf("PPPManager: Constructor\n");
#endif
TRACE("PPPManager: Constructor\n");
fDeleterThread = spawn_kernel_thread(deleter_thread, "PPPManager: deleter_thread",
B_NORMAL_PRIORITY, this);
@@ -126,9 +124,7 @@ PPPManager::PPPManager()
PPPManager::~PPPManager()
{
#if DEBUG
dprintf("PPPManager: Destructor\n");
#endif
TRACE("PPPManager: Destructor\n");
int32 tmp;
send_data(fDeleterThread, 0, NULL, 0);
@@ -140,9 +136,11 @@ PPPManager::~PPPManager()
ppp_interface_entry *entry;
for(int32 index = 0; index < fEntries.CountItems(); index++) {
entry = fEntries.ItemAt(index);
if(entry)
if(entry) {
free(entry->name);
delete entry->interface;
delete entry;
delete entry;
}
}
}
@@ -150,15 +148,13 @@ PPPManager::~PPPManager()
int32
PPPManager::Stop(ifnet *ifp)
{
#if DEBUG
dprintf("PPPManager: Stop(%s)\n", ifp ? ifp->if_name : "Unknown");
#endif
TRACE("PPPManager: Stop(%s)\n", ifp ? ifp->if_name : "Unknown");
LockerHelper locker(fLock);
ppp_interface_entry *entry = EntryFor(ifp);
if(!entry) {
dprintf("PPPManager: Stop(): Could not find interface!\n");
ERROR("PPPManager: Stop(): Could not find interface!\n");
return B_ERROR;
}
@@ -172,9 +168,7 @@ int32
PPPManager::Output(ifnet *ifp, struct mbuf *buf, struct sockaddr *dst,
struct rtentry *rt0)
{
#if DEBUG
dprintf("PPPManager: Output(%s)\n", ifp ? ifp->if_name : "Unknown");
#endif
TRACE("PPPManager: Output(%s)\n", ifp ? ifp->if_name : "Unknown");
if(dst->sa_family == AF_UNSPEC)
return B_ERROR;
@@ -182,7 +176,7 @@ PPPManager::Output(ifnet *ifp, struct mbuf *buf, struct sockaddr *dst,
LockerHelper locker(fLock);
ppp_interface_entry *entry = EntryFor(ifp);
if(!entry) {
dprintf("PPPManager: Output(): Could not find interface!\n");
ERROR("PPPManager: Output(): Could not find interface!\n");
return B_ERROR;
}
@@ -222,14 +216,12 @@ PPPManager::Output(ifnet *ifp, struct mbuf *buf, struct sockaddr *dst,
int32
PPPManager::Control(ifnet *ifp, ulong cmd, caddr_t data)
{
#if DEBUG
dprintf("PPPManager: Control(%s)\n", ifp ? ifp->if_name : "Unknown");
#endif
TRACE("PPPManager: Control(%s)\n", ifp ? ifp->if_name : "Unknown");
LockerHelper locker(fLock);
ppp_interface_entry *entry = EntryFor(ifp);
if(!entry || entry->deleting) {
dprintf("PPPManager: Control(): Could not find interface!\n");
ERROR("PPPManager: Control(): Could not find interface!\n");
return B_ERROR;
}
@@ -284,9 +276,7 @@ PPPManager::CreateInterfaceWithName(const char *name,
bool
PPPManager::DeleteInterface(ppp_interface_id ID)
{
#if DEBUG
dprintf("PPPManager: DeleteInterface(%ld)\n", ID);
#endif
TRACE("PPPManager: DeleteInterface(%ld)\n", ID);
// This only marks the interface for deletion.
// Our deleter_thread does the real work.
@@ -318,9 +308,7 @@ PPPManager::DeleteInterface(ppp_interface_id ID)
bool
PPPManager::RemoveInterface(ppp_interface_id ID)
{
#if DEBUG
dprintf("PPPManager: RemoveInterface(%ld)\n", ID);
#endif
TRACE("PPPManager: RemoveInterface(%ld)\n", ID);
LockerHelper locker(fLock);
@@ -341,9 +329,7 @@ PPPManager::RemoveInterface(ppp_interface_id ID)
ifnet*
PPPManager::RegisterInterface(ppp_interface_id ID)
{
#if DEBUG
dprintf("PPPManager: RegisterInterface(%ld)\n", ID);
#endif
TRACE("PPPManager: RegisterInterface(%ld)\n", ID);
LockerHelper locker(fLock);
@@ -355,6 +341,8 @@ PPPManager::RegisterInterface(ppp_interface_id ID)
if(entry->interface->Ifnet())
return entry->interface->Ifnet();
// TODO: allocate struct around ifnet with pointer to entry so we can optimize
// ifnet->ppp_interface_entry translation (speeds-up Output()/Input())
ifnet *ifp = (ifnet*) malloc(sizeof(ifnet));
memset(ifp, 0, sizeof(ifnet));
ifp->devid = -1;
@@ -368,10 +356,8 @@ PPPManager::RegisterInterface(ppp_interface_id ID)
ifp->output = ppp_ifnet_output;
ifp->ioctl = ppp_ifnet_ioctl;
#if DEBUG
dprintf("PPPManager::RegisterInterface(): Created new ifnet: %s%d\n",
TRACE("PPPManager::RegisterInterface(): Created new ifnet: %s%d\n",
ifp->name, ifp->if_unit);
#endif
if_attach(ifp);
return ifp;
@@ -381,9 +367,7 @@ PPPManager::RegisterInterface(ppp_interface_id ID)
bool
PPPManager::UnregisterInterface(ppp_interface_id ID)
{
#if DEBUG
dprintf("PPPManager: UnregisterInterface(%ld)\n", ID);
#endif
TRACE("PPPManager: UnregisterInterface(%ld)\n", ID);
LockerHelper locker(fLock);
@@ -403,9 +387,7 @@ PPPManager::UnregisterInterface(ppp_interface_id ID)
status_t
PPPManager::Control(uint32 op, void *data, size_t length)
{
#if DEBUG
dprintf("PPPManager: Control(%ld)\n", op);
#endif
TRACE("PPPManager: Control(%ld)\n", op);
// this method is intended for use by userland applications
@@ -574,9 +556,7 @@ PPPManager::Control(uint32 op, void *data, size_t length)
status_t
PPPManager::ControlInterface(ppp_interface_id ID, uint32 op, void *data, size_t length)
{
#if DEBUG
dprintf("PPPManager: ControlInterface(%ld)\n", ID);
#endif
TRACE("PPPManager: ControlInterface(%ld)\n", ID);
LockerHelper locker(fLock);
@@ -597,9 +577,7 @@ int32
PPPManager::GetInterfaces(ppp_interface_id *interfaces, int32 count,
ppp_interface_filter filter = PPP_REGISTERED_INTERFACES)
{
#if DEBUG
dprintf("PPPManager: GetInterfaces()\n");
#endif
TRACE("PPPManager: GetInterfaces()\n");
LockerHelper locker(fLock);
@@ -640,9 +618,7 @@ PPPManager::GetInterfaces(ppp_interface_id *interfaces, int32 count,
int32
PPPManager::CountInterfaces(ppp_interface_filter filter = PPP_REGISTERED_INTERFACES)
{
#if DEBUG
dprintf("PPPManager: CountInterfaces()\n");
#endif
TRACE("PPPManager: CountInterfaces()\n");
LockerHelper locker(fLock);
@@ -681,9 +657,7 @@ PPPManager::CountInterfaces(ppp_interface_filter filter = PPP_REGISTERED_INTERFA
ppp_interface_entry*
PPPManager::EntryFor(ppp_interface_id ID, int32 *saveIndex = NULL) const
{
#if DEBUG
dprintf("PPPManager: EntryFor(%ld)\n", ID);
#endif
TRACE("PPPManager: EntryFor(%ld)\n", ID);
if(ID == PPP_UNDEFINED_INTERFACE_ID)
return NULL;
@@ -691,7 +665,7 @@ PPPManager::EntryFor(ppp_interface_id ID, int32 *saveIndex = NULL) const
ppp_interface_entry *entry;
for(int32 index = 0; index < fEntries.CountItems(); index++) {
entry = fEntries.ItemAt(index);
if(entry && entry->interface->ID() == ID) {
if(entry && entry->interface && entry->interface->ID() == ID) {
if(saveIndex)
*saveIndex = index;
return entry;
@@ -708,14 +682,34 @@ PPPManager::EntryFor(ifnet *ifp, int32 *saveIndex = NULL) const
if(!ifp)
return NULL;
#if DEBUG
dprintf("PPPManager: EntryFor(%s%d)\n", ifp->name, ifp->if_unit);
#endif
TRACE("PPPManager: EntryFor(%s%d)\n", ifp->name, ifp->if_unit);
ppp_interface_entry *entry;
for(int32 index = 0; index < fEntries.CountItems(); index++) {
entry = fEntries.ItemAt(index);
if(entry && entry->interface->Ifnet() == ifp) {
if(entry && entry->interface && entry->interface->Ifnet() == ifp) {
if(saveIndex)
*saveIndex = index;
return entry;
}
}
return NULL;
}
ppp_interface_entry*
PPPManager::EntryFor(const char *name, int32 *saveIndex = NULL) const
{
if(!name)
return NULL;
TRACE("PPPManager: EntryFor(%s)\n", name);
ppp_interface_entry *entry;
for(int32 index = 0; index < fEntries.CountItems(); index++) {
entry = fEntries.ItemAt(index);
if(entry && entry->name && !strcmp(entry->name, name)) {
if(saveIndex)
*saveIndex = index;
return entry;
@@ -732,14 +726,13 @@ PPPManager::EntryFor(const driver_settings *settings) const
if(!settings)
return NULL;
#if DEBUG
dprintf("PPPManager: EntryFor(settings)\n");
#endif
TRACE("PPPManager: EntryFor(settings)\n");
ppp_interface_entry *entry;
for(int32 index = 0; index < fEntries.CountItems(); index++) {
entry = fEntries.ItemAt(index);
if(entry && equal_interface_settings(entry->interface->Settings(), settings))
if(entry && entry->interface
&& equal_interface_settings(entry->interface->Settings(), settings))
return entry;
}
@@ -760,9 +753,7 @@ ppp_interface_id
PPPManager::_CreateInterface(const char *name, const driver_settings *settings,
const driver_settings *profile, ppp_interface_id parentID)
{
#if DEBUG
dprintf("PPPManager: CreateInterface(%s)\n", name ? name : "Unnamed");
#endif
TRACE("PPPManager: CreateInterface(%s)\n", name ? name : "Unnamed");
LockerHelper locker(fLock);
@@ -775,21 +766,81 @@ PPPManager::_CreateInterface(const char *name, const driver_settings *settings,
if(id == PPP_UNDEFINED_INTERFACE_ID)
id = NextID();
ppp_interface_entry *entry = new ppp_interface_entry;
entry->accessing = 1;
// check if we already have an entry for the named interface
ppp_interface_entry *entry = EntryFor(name);
if(entry) {
if(entry->interface)
return entry->interface->ID();
// already existing interfaces do not need a PPP team
++entry->accessing;
thread_info info;
if(get_thread_info(entry->requestThread, &info) != B_OK)
entry->requestThread = -1;
else {
// test if app is responsive (i.e.: it reacts in at most 0.5secs)
thread_id sender;
int32 code;
if(send_data_with_timeout(entry->requestThread, PPP_RESPONSE_TEST_CODE,
NULL, 0, PPP_REPORT_TIMEOUT) != B_OK
|| receive_data_with_timeout(&sender, &code, NULL, 0, 500)
!= B_OK || code != B_OK) {
entry->requestThread = -1;
kill_team(info.team);
}
}
} else {
entry = new ppp_interface_entry;
entry->name = name ? strdup(name) : NULL;
entry->accessing = 1;
entry->requestThread = -1;
fEntries.AddItem(entry);
// nothing bad can happen because we are in a locked section
}
entry->deleting = false;
fEntries.AddItem(entry);
// nothing bad can happen because we are in a locked section
new KPPPInterface(name, entry, id, settings, profile,
parentEntry ? parentEntry->interface : NULL);
// KPPPInterface will add itself to the entry (no need to do it here)
if(entry->interface->InitCheck() != B_OK) {
// use safe code because entry might have existed before this method call
--entry->accessing;
entry->deleting = true;
if(entry->accessing > 0)
return PPP_UNDEFINED_INTERFACE_ID;
free(entry->name);
delete entry->interface;
fEntries.RemoveItem(entry);
delete entry;
return PPP_UNDEFINED_INTERFACE_ID;
}
// run ppp_up and enable reports for the request window (DONE?)
if(entry->requestThread < 0 && name) {
const char *argv[] = { "/boot/beos/bin/ppp_up", name, NULL };
const char *env[] = { NULL };
thread_id app = load_image(2, argv, env);
if(app < 0)
ERROR("KPPPInterface::Up(): Error: could not load ppp_up!\n");
resume_thread(app);
// XXX: What? BeOS' kernel is so &$$§$%! I cannot send anything to the
// team's main thread before the kernel sent something to it. So, we wait...
snooze(150000);
if(send_data(app, 0, &id, sizeof(id)) < B_OK)
ERROR("KPPPInterface::Up(): Error: could not send to ppp_up!\n");
// register the request thread as a report receiver
receive_data(&entry->requestThread, NULL, 0);
}
if(entry->requestThread >= 0)
entry->interface->ReportManager().EnableReports(PPP_CONNECTION_REPORT,
entry->requestThread, PPP_WAIT_FOR_REPLY | PPP_NO_REPLY_TIMEOUT);
locker.UnlockNow();
// it is safe to access the manager from userland now
@@ -819,7 +870,7 @@ PPPManager::FindUnit() const
ppp_interface_entry *entry;
for(int32 index = 0; index < fEntries.CountItems(); index++) {
entry = fEntries.ItemAt(index);
if(entry && entry->interface->Ifnet())
if(entry && entry->interface && entry->interface->Ifnet())
units[index] = entry->interface->Ifnet()->if_unit;
else
units[index] = -1;
@@ -855,6 +906,14 @@ PPPManager::DeleterThreadEvent()
}
if(entry->deleting && entry->accessing <= 0) {
// only remove entries that do not have ppp_up associated with them
if(entry->requestThread >= 0) {
thread_info info;
if(get_thread_info(entry->requestThread, &info) == B_OK)
continue;
}
free(entry->name);
delete entry->interface;
delete entry;
fEntries.RemoveItem(index);
@@ -872,7 +931,7 @@ PPPManager::Pulse()
ppp_interface_entry *entry;
for(int32 index = 0; index < fEntries.CountItems(); index++) {
entry = fEntries.ItemAt(index);
if(entry)
if(entry && entry->interface)
entry->interface->Pulse();
}
}
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <[email protected]>
* Distributed under the terms of the MIT License.
*/
#ifndef _PPP_MANAGER__H
#define _PPP_MANAGER__H
@@ -59,6 +57,7 @@ class PPPManager {
ppp_interface_entry *EntryFor(ppp_interface_id ID,
int32 *saveIndex = NULL) const;
ppp_interface_entry *EntryFor(ifnet *ifp, int32 *saveIndex = NULL) const;
ppp_interface_entry *EntryFor(const char *name, int32 *saveIndex = NULL) const;
ppp_interface_entry *EntryFor(const driver_settings *settings) const;
ppp_interface_id NextID()
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <[email protected]>
* Distributed under the terms of the MIT License.
*/
#include <core_funcs.h>
#include <KernelExport.h>
+1
View File
@@ -1,3 +1,4 @@
- add CHAP
- add ISDN (CAPI)
- add PPTP (this is a virtual device that uses TCP/IP to connect to some other PPP server on the net)
- add L2TP (this is a virtual device that uses TCP/IP to connect to some other PPP server on the net)
+4 -6
View File
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <[email protected]>
* Distributed under the terms of the MIT License.
*/
#ifndef IPCP__H
#define IPCP__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <[email protected]>
* Distributed under the terms of the MIT License.
*/
#if DEBUG
#include <cstdio>
@@ -74,7 +72,8 @@ IPCP::IPCP(KPPPInterface& interface, driver_parameter *settings)
fMaxNak(5),
fRequestID(0),
fTerminateID(0),
fNextTimeout(0)
fNextTimeout(0),
fLock("IPCP")
{
ProfileChanged();
@@ -102,9 +101,7 @@ IPCP::Uninit()
status_t
IPCP::StackControl(uint32 op, void *data)
{
#if DEBUG
dprintf("IPCP: StackControl(op=%ld)\n", op);
#endif
TRACE("IPCP: StackControl(op=%ld)\n", op);
// TODO:
// check values
@@ -123,7 +120,7 @@ IPCP::StackControl(uint32 op, void *data)
break;
default:
dprintf("IPCP: Unknown ioctl: %ld\n", op);
ERROR("IPCP: Unknown ioctl: %ld\n", op);
return KPPPProtocol::StackControl(op, data);
}
@@ -156,9 +153,7 @@ IPCP::ProfileChanged()
bool
IPCP::Up()
{
#if DEBUG
dprintf("IPCP: Up() state=%d\n", State());
#endif
TRACE("IPCP: Up() state=%d\n", State());
// Servers do not send a configure-request when Up() is called. They wait until
// the client requests this protocol.
@@ -186,9 +181,7 @@ IPCP::Up()
bool
IPCP::Down()
{
#if DEBUG
dprintf("IPCP: Down() state=%d\n", State());
#endif
TRACE("IPCP: Down() state=%d\n", State());
LockerHelper locker(fLock);
@@ -233,9 +226,7 @@ IPCP::Down()
status_t
IPCP::Send(struct mbuf *packet, uint16 protocolNumber = IPCP_PROTOCOL)
{
#if DEBUG
dprintf("IPCP: Send(0x%X)\n", protocolNumber);
#endif
TRACE("IPCP: Send(0x%X)\n", protocolNumber);
if((protocolNumber == IP_PROTOCOL && State() == PPP_OPENED_STATE)
|| protocolNumber == IPCP_PROTOCOL) {
@@ -246,7 +237,7 @@ IPCP::Send(struct mbuf *packet, uint16 protocolNumber = IPCP_PROTOCOL)
return SendToNext(packet, protocolNumber);
}
dprintf("IPCP: Send() failed because of wrong state or protocol number!\n");
ERROR("IPCP: Send() failed because of wrong state or protocol number!\n");
m_freem(packet);
return B_ERROR;
@@ -256,9 +247,7 @@ IPCP::Send(struct mbuf *packet, uint16 protocolNumber = IPCP_PROTOCOL)
status_t
IPCP::Receive(struct mbuf *packet, uint16 protocolNumber)
{
#if DEBUG
dprintf("IPCP: Receive(0x%X)\n", protocolNumber);
#endif
TRACE("IPCP: Receive(0x%X)\n", protocolNumber);
if(!packet)
return B_ERROR;
@@ -335,7 +324,7 @@ IPCP::ReceiveIPPacket(struct mbuf *packet, uint16 protocolNumber)
gProto[IPPROTO_IP]->pr_input(packet, 0);
return B_OK;
} else {
dprintf("IPCP: Error: Could not find input function for IP!\n");
ERROR("IPCP: Error: Could not find input function for IP!\n");
m_freem(packet);
return B_ERROR;
}
@@ -450,7 +439,7 @@ IPCP::UpdateAddresses()
if(fLocalRequests.address != INADDR_ANY)
inreq.ifra_addr.sin_addr.s_addr = fLocalRequests.address;
else if(fLocalConfiguration.address == INADDR_ANY)
inreq.ifra_addr.sin_addr.s_addr = INADDR_BROADCAST;
inreq.ifra_addr.sin_addr.s_addr = 0x010F0F0F; // was: INADDR_BROADCAST
else
inreq.ifra_addr.sin_addr.s_addr = fLocalConfiguration.address;
inreq.ifra_addr.sin_len = sizeof(struct sockaddr_in);
@@ -461,7 +450,7 @@ IPCP::UpdateAddresses()
if(fPeerRequests.address != INADDR_ANY)
fGateway.sin_addr.s_addr = fPeerRequests.address;
else if(fPeerConfiguration.address == INADDR_ANY)
fGateway.sin_addr.s_addr = INADDR_BROADCAST;
fGateway.sin_addr.s_addr = 0x020F0F0F; // was: INADDR_BROADCAST
else
fGateway.sin_addr.s_addr = fPeerConfiguration.address;
fGateway.sin_len = sizeof(struct sockaddr_in);
@@ -478,25 +467,25 @@ IPCP::UpdateAddresses()
// tell stack to use these values
if(in_control(NULL, SIOCAIFADDR, (caddr_t) &inreq,
Interface().Ifnet()) != B_OK)
dprintf("IPCP: UpdateAddress(): SIOCAIFADDR returned error!\n");
ERROR("IPCP: UpdateAddress(): SIOCAIFADDR returned error!\n");
if(in_control(NULL, SIOCSIFADDR, (caddr_t) &ifreqAddress,
Interface().Ifnet()) != B_OK)
dprintf("IPCP: UpdateAddress(): SIOCSIFADDR returned error!\n");
ERROR("IPCP: UpdateAddress(): SIOCSIFADDR returned error!\n");
if(in_control(NULL, SIOCSIFDSTADDR, (caddr_t) &ifreqDestination,
Interface().Ifnet()) != B_OK)
dprintf("IPCP: UpdateAddress(): SIOCSIFDSTADDR returned error!\n");
ERROR("IPCP: UpdateAddress(): SIOCSIFDSTADDR returned error!\n");
memcpy(&inreq.ifra_addr, &inreq.ifra_mask, sizeof(struct sockaddr_in));
// SIOCISFNETMASK wants the netmask to be in ifra_addr
if(in_control(NULL, SIOCSIFNETMASK, (caddr_t) &inreq,
Interface().Ifnet()) != B_OK)
dprintf("IPCP: UpdateAddress(): SIOCSIFNETMASK returned error!\n");
ERROR("IPCP: UpdateAddress(): SIOCSIFNETMASK returned error!\n");
// add default/subnet route
if(Side() == PPP_LOCAL_SIDE) {
if(rtrequest(RTM_ADD, (struct sockaddr*) &inreq.ifra_mask,
(struct sockaddr*) &fGateway, (struct sockaddr*) &inreq.ifra_mask,
RTF_UP | RTF_GATEWAY, &fDefaultRoute) != B_OK)
dprintf("IPCP: UpdateAddress(): could not add default/subnet route!\n");
ERROR("IPCP: UpdateAddress(): could not add default/subnet route!\n");
--fDefaultRoute->rt_refcnt;
}
@@ -519,7 +508,7 @@ IPCP::RemoveRoutes()
if(rtrequest(RTM_DELETE, (struct sockaddr*) &netmask,
(struct sockaddr*) &fGateway, (struct sockaddr*) &netmask,
RTF_UP | RTF_GATEWAY, &fDefaultRoute) != B_OK)
dprintf("IPCP: RemoveRoutes(): could not remove default/subnet route!\n");
ERROR("IPCP: RemoveRoutes(): could not remove default/subnet route!\n");
fDefaultRoute = NULL;
}
@@ -536,9 +525,7 @@ IPCP::NextID()
void
IPCP::NewState(ppp_state next)
{
#if DEBUG
dprintf("IPCP: NewState(%d) state=%d\n", next, State());
#endif
TRACE("IPCP: NewState(%d) state=%d\n", next, State());
// report state changes
if(State() == PPP_INITIAL_STATE && next != State())
@@ -558,7 +545,7 @@ void
IPCP::TOGoodEvent()
{
#if DEBUG
dprintf("IPCP: TOGoodEvent() state=%d\n", State());
printf("IPCP: TOGoodEvent() state=%d\n", State());
#endif
LockerHelper locker(fLock);
@@ -587,9 +574,7 @@ IPCP::TOGoodEvent()
void
IPCP::TOBadEvent()
{
#if DEBUG
dprintf("IPCP: TOBadEvent() state=%d\n", State());
#endif
TRACE("IPCP: TOBadEvent() state=%d\n", State());
LockerHelper locker(fLock);
@@ -617,9 +602,7 @@ IPCP::TOBadEvent()
void
IPCP::RCREvent(struct mbuf *packet)
{
#if DEBUG
dprintf("IPCP: RCREvent() state=%d\n", State());
#endif
TRACE("IPCP: RCREvent() state=%d\n", State());
KPPPConfigurePacket request(packet);
KPPPConfigurePacket nak(PPP_CONFIGURE_NAK);
@@ -725,9 +708,7 @@ IPCP::RCREvent(struct mbuf *packet)
void
IPCP::RCRGoodEvent(struct mbuf *packet)
{
#if DEBUG
dprintf("IPCP: RCRGoodEvent() state=%d\n", State());
#endif
TRACE("IPCP: RCRGoodEvent() state=%d\n", State());
LockerHelper locker(fLock);
@@ -771,9 +752,7 @@ IPCP::RCRGoodEvent(struct mbuf *packet)
void
IPCP::RCRBadEvent(struct mbuf *nak, struct mbuf *reject)
{
#if DEBUG
dprintf("IPCP: RCRBadEvent() state=%d\n", State());
#endif
TRACE("IPCP: RCRBadEvent() state=%d\n", State());
LockerHelper locker(fLock);
@@ -813,9 +792,7 @@ IPCP::RCRBadEvent(struct mbuf *nak, struct mbuf *reject)
void
IPCP::RCAEvent(struct mbuf *packet)
{
#if DEBUG
dprintf("IPCP: RCAEvent() state=%d\n", State());
#endif
TRACE("IPCP: RCAEvent() state=%d\n", State());
LockerHelper locker(fLock);
@@ -923,9 +900,7 @@ IPCP::RCAEvent(struct mbuf *packet)
void
IPCP::RCNEvent(struct mbuf *packet)
{
#if DEBUG
dprintf("IPCP: RCNEvent() state=%d\n", State());
#endif
TRACE("IPCP: RCNEvent() state=%d\n", State());
LockerHelper locker(fLock);
@@ -1041,9 +1016,7 @@ IPCP::RCNEvent(struct mbuf *packet)
void
IPCP::RTREvent(struct mbuf *packet)
{
#if DEBUG
dprintf("IPCP: RTREvent() state=%d\n", State());
#endif
TRACE("IPCP: RTREvent() state=%d\n", State());
LockerHelper locker(fLock);
@@ -1086,9 +1059,7 @@ IPCP::RTREvent(struct mbuf *packet)
void
IPCP::RTAEvent(struct mbuf *packet)
{
#if DEBUG
dprintf("IPCP: RTAEvent() state=%d\n", State());
#endif
TRACE("IPCP: RTAEvent() state=%d\n", State());
LockerHelper locker(fLock);
@@ -1132,9 +1103,7 @@ IPCP::RTAEvent(struct mbuf *packet)
void
IPCP::RUCEvent(struct mbuf *packet)
{
#if DEBUG
dprintf("IPCP: RUCEvent() state=%d\n", State());
#endif
TRACE("IPCP: RUCEvent() state=%d\n", State());
SendCodeReject(packet);
}
@@ -1143,9 +1112,7 @@ IPCP::RUCEvent(struct mbuf *packet)
void
IPCP::RXJBadEvent(struct mbuf *packet)
{
#if DEBUG
dprintf("IPCP: RXJBadEvent() state=%d\n", State());
#endif
TRACE("IPCP: RXJBadEvent() state=%d\n", State());
LockerHelper locker(fLock);
@@ -1188,7 +1155,7 @@ void
IPCP::IllegalEvent(ppp_event event)
{
// TODO: update error statistics
dprintf("IPCP: IllegalEvent(event=%d) state=%d\n", event, State());
ERROR("IPCP: IllegalEvent(event=%d) state=%d\n", event, State());
}
@@ -1248,9 +1215,7 @@ IPCP::ZeroRestartCount()
bool
IPCP::SendConfigureRequest()
{
#if DEBUG
dprintf("IPCP: SendConfigureRequest() state=%d\n", State());
#endif
TRACE("IPCP: SendConfigureRequest() state=%d\n", State());
LockerHelper locker(fLock);
--fRequestCounter;
@@ -1271,11 +1236,9 @@ IPCP::SendConfigureRequest()
ipItem.address = fLocalRequests.address;
request.AddItem((ppp_configure_item*) &ipItem);
#if DEBUG
dprintf("IPCP: SCR: confaddr=%lX; reqaddr=%lX; addr=%lX\n",
TRACE("IPCP: SCR: confaddr=%lX; reqaddr=%lX; addr=%lX\n",
fLocalConfiguration.address, fLocalRequests.address,
((ip_item*)request.ItemAt(0))->address);
#endif
// add primary DNS (if needed)
if(fRequestPrimaryDNS && fLocalRequests.primaryDNS == INADDR_ANY) {
@@ -1303,9 +1266,7 @@ IPCP::SendConfigureRequest()
bool
IPCP::SendConfigureAck(struct mbuf *packet)
{
#if DEBUG
dprintf("IPCP: SendConfigureAck() state=%d\n", State());
#endif
TRACE("IPCP: SendConfigureAck() state=%d\n", State());
if(!packet)
return false;
@@ -1374,9 +1335,7 @@ IPCP::SendConfigureAck(struct mbuf *packet)
bool
IPCP::SendConfigureNak(struct mbuf *packet)
{
#if DEBUG
dprintf("IPCP: SendConfigureNak() state=%d\n", State());
#endif
TRACE("IPCP: SendConfigureNak() state=%d\n", State());
if(!packet)
return false;
@@ -1397,9 +1356,7 @@ IPCP::SendConfigureNak(struct mbuf *packet)
bool
IPCP::SendTerminateRequest()
{
#if DEBUG
dprintf("IPCP: SendTerminateRequest() state=%d\n", State());
#endif
TRACE("IPCP: SendTerminateRequest() state=%d\n", State());
LockerHelper locker(fLock);
--fTerminateCounter;
@@ -1427,9 +1384,7 @@ IPCP::SendTerminateRequest()
bool
IPCP::SendTerminateAck(struct mbuf *request = NULL)
{
#if DEBUG
dprintf("IPCP: SendTerminateAck() state=%d\n", State());
#endif
TRACE("IPCP: SendTerminateAck() state=%d\n", State());
struct mbuf *reply = request;
@@ -1458,9 +1413,7 @@ IPCP::SendTerminateAck(struct mbuf *request = NULL)
bool
IPCP::SendCodeReject(struct mbuf *packet)
{
#if DEBUG
dprintf("IPCP: SendCodeReject() state=%d\n", State());
#endif
TRACE("IPCP: SendCodeReject() state=%d\n", State());
if(!packet)
return false;
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <[email protected]>
* Distributed under the terms of the MIT License.
*/
#ifndef PROTOCOL__H
#define PROTOCOL__H
+5 -10
View File
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <[email protected]>
* Distributed under the terms of the MIT License.
*/
#include <KernelExport.h>
#include <driver_settings.h>
@@ -12,7 +10,6 @@
#include <KPPPInterface.h>
#include <KPPPModule.h>
#include <LockerHelper.h>
#include "Protocol.h"
@@ -54,10 +51,8 @@ add_to(KPPPInterface& mainInterface, KPPPInterface *subInterface,
success = mainInterface.AddProtocol(ipcp);
}
#if DEBUG
dprintf("IPCP: add_to(): %s\n",
TRACE("IPCP: add_to(): %s\n",
success && ipcp && ipcp->InitCheck() == B_OK ? "OK" : "ERROR");
#endif
return success && ipcp && ipcp->InitCheck() == B_OK;
}
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <[email protected]>
* Distributed under the terms of the MIT License.
*/
#include "ACFCHandler.h"
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <[email protected]>
* Distributed under the terms of the MIT License.
*/
#ifndef ACFC_HANDLER__H
#define ACFC_HANDLER__H
+4 -6
View File
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <[email protected]>
* Distributed under the terms of the MIT License.
*/
#ifndef MODEM__H
#define MODEM__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <[email protected]>
* Distributed under the terms of the MIT License.
*/
#include <cstdio>
@@ -33,7 +31,7 @@ dump_packet(struct mbuf *packet)
uint8 buffer[33];
uint8 bufferIndex = 0;
dprintf("Dumping packet;len=%ld;pkthdr.len=%d\n", packet->m_len,
TRACE("Dumping packet;len=%ld;pkthdr.len=%d\n", packet->m_len,
packet->m_flags & M_PKTHDR ? packet->m_pkthdr.len : -1);
for(uint32 index = 0; index < packet->m_len; index++) {
@@ -41,7 +39,7 @@ dump_packet(struct mbuf *packet)
buffer[bufferIndex++] = sDigits[data[index] & 0x0F];
if(bufferIndex == 32 || index == packet->m_len - 1) {
buffer[bufferIndex] = 0;
dprintf("%s\n", buffer);
TRACE("%s\n", buffer);
bufferIndex = 0;
}
}
@@ -187,12 +185,13 @@ ModemDevice::ModemDevice(KPPPInterface& interface, driver_parameter *settings)
fHandle(-1),
fWorkerThread(-1),
fOutputBytes(0),
fState(INITIAL)
fState(INITIAL),
fLock("ModemDevice")
{
#if DEBUG
dprintf("ModemDevice: Constructor\n");
TRACE("ModemDevice: Constructor\n");
if(!settings || !settings->parameters)
dprintf("ModemDevice::ctor: No settings!\n");
TRACE("ModemDevice::ctor: No settings!\n");
#endif
fACFC = new ACFCHandler(REQUEST_ACFC | ALLOW_ACFC, interface);
@@ -211,17 +210,13 @@ ModemDevice::ModemDevice(KPPPInterface& interface, driver_parameter *settings)
fInitString = get_parameter_value(MODEM_INIT_KEY, settings);
fDialString = get_parameter_value(MODEM_DIAL_KEY, settings);
#if DEBUG
dprintf("ModemDevice::ctor: interfaceName: %s\n", fPortName);
#endif
TRACE("ModemDevice::ctor: interfaceName: %s\n", fPortName);
}
ModemDevice::~ModemDevice()
{
#if DEBUG
dprintf("ModemDevice: Destructor\n");
#endif
TRACE("ModemDevice: Destructor\n");
}
@@ -239,9 +234,7 @@ ModemDevice::InitCheck() const
bool
ModemDevice::Up()
{
#if DEBUG
dprintf("ModemDevice: Up()\n");
#endif
TRACE("ModemDevice: Up()\n");
if(InitCheck() != B_OK)
return false;
@@ -279,9 +272,7 @@ ModemDevice::Up()
bool
ModemDevice::Down()
{
#if DEBUG
dprintf("ModemDevice: Down()\n");
#endif
TRACE("ModemDevice: Down()\n");
if(InitCheck() != B_OK)
return false;
@@ -355,7 +346,7 @@ ModemDevice::OpenModem()
// init port
struct termios options;
if(ioctl(fHandle, TCGETA, &options) != B_OK) {
dprintf("ModemDevice: Could not retrieve port options!\n");
ERROR("ModemDevice: Could not retrieve port options!\n");
return;
}
@@ -370,7 +361,7 @@ ModemDevice::OpenModem()
// set new options
if(ioctl(fHandle, TCSETA, &options) != B_OK) {
dprintf("ModemDevice: Could not init port!\n");
ERROR("ModemDevice: Could not init port!\n");
return;
}
}
@@ -433,7 +424,7 @@ status_t
ModemDevice::Send(struct mbuf *packet, uint16 protocolNumber = 0)
{
#if DEBUG
dprintf("ModemDevice: Send()\n");
TRACE("ModemDevice: Send()\n");
dump_packet(packet);
#endif
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <[email protected]>
* Distributed under the terms of the MIT License.
*/
#ifndef MODEM_DEVICE__H
#define MODEM_DEVICE__H
+5 -10
View File
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <[email protected]>
* Distributed under the terms of the MIT License.
*/
#include <KernelExport.h>
#include <driver_settings.h>
@@ -12,7 +10,6 @@
#include <KPPPInterface.h>
#include <KPPPModule.h>
#include <LockerHelper.h>
#include "ModemDevice.h"
@@ -41,10 +38,8 @@ add_to(KPPPInterface& mainInterface, KPPPInterface *subInterface,
success = mainInterface.SetDevice(device);
}
#if DEBUG
dprintf("Modem: add_to(): %s\n",
TRACE("Modem: add_to(): %s\n",
success && device && device->InitCheck() == B_OK ? "OK" : "ERROR");
#endif
return success && device && device->InitCheck() == B_OK;
}
+17 -40
View File
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <[email protected]>
* Distributed under the terms of the MIT License.
*/
#include "Protocol.h"
#include <KPPPConfigurePacket.h>
@@ -83,7 +81,8 @@ PAP::PAP(KPPPInterface& interface, driver_parameter *settings)
fID(system_time() & 0xFF),
fMaxRequest(3),
fRequestID(0),
fNextTimeout(0)
fNextTimeout(0),
fLock("PAP")
{
ProfileChanged();
}
@@ -114,9 +113,7 @@ PAP::ProfileChanged()
bool
PAP::Up()
{
#if DEBUG
dprintf("PAP: Up() state=%d\n", State());
#endif
TRACE("PAP: Up() state=%d\n", State());
LockerHelper locker(fLock);
@@ -148,9 +145,7 @@ PAP::Up()
bool
PAP::Down()
{
#if DEBUG
dprintf("PAP: Down() state=%d\n", State());
#endif
TRACE("PAP: Down() state=%d\n", State());
LockerHelper locker(fLock);
@@ -307,9 +302,7 @@ PAP::NextID()
void
PAP::NewState(pap_state next)
{
#if DEBUG
dprintf("PAP: NewState(%d) state=%d\n", next, State());
#endif
TRACE("PAP: NewState(%d) state=%d\n", next, State());
// state changes
if(State() == INITIAL && next != State()) {
@@ -333,9 +326,7 @@ PAP::NewState(pap_state next)
void
PAP::TOGoodEvent()
{
#if DEBUG
dprintf("PAP: TOGoodEvent() state=%d\n", State());
#endif
TRACE("PAP: TOGoodEvent() state=%d\n", State());
LockerHelper locker(fLock);
@@ -358,9 +349,7 @@ PAP::TOGoodEvent()
void
PAP::TOBadEvent()
{
#if DEBUG
dprintf("PAP: TOBadEvent() state=%d\n", State());
#endif
TRACE("PAP: TOBadEvent() state=%d\n", State());
LockerHelper locker(fLock);
@@ -386,9 +375,7 @@ PAP::TOBadEvent()
void
PAP::RREvent(struct mbuf *packet)
{
#if DEBUG
dprintf("PAP: RREvent() state=%d\n", State());
#endif
TRACE("PAP: RREvent() state=%d\n", State());
LockerHelper locker(fLock);
@@ -427,9 +414,7 @@ PAP::RREvent(struct mbuf *packet)
void
PAP::RAEvent(struct mbuf *packet)
{
#if DEBUG
dprintf("PAP: RAEvent() state=%d\n", State());
#endif
TRACE("PAP: RAEvent() state=%d\n", State());
LockerHelper locker(fLock);
@@ -460,9 +445,7 @@ PAP::RAEvent(struct mbuf *packet)
void
PAP::RNEvent(struct mbuf *packet)
{
#if DEBUG
dprintf("PAP: RNEvent() state=%d\n", State());
#endif
TRACE("PAP: RNEvent() state=%d\n", State());
LockerHelper locker(fLock);
@@ -500,9 +483,7 @@ PAP::InitializeRestartCount()
bool
PAP::SendRequest()
{
#if DEBUG
dprintf("PAP: SendRequest() state=%d\n", State());
#endif
TRACE("PAP: SendRequest() state=%d\n", State());
LockerHelper locker(fLock);
--fRequestCounter;
@@ -535,9 +516,7 @@ PAP::SendRequest()
bool
PAP::SendAck(struct mbuf *packet)
{
#if DEBUG
dprintf("PAP: SendAck() state=%d\n", State());
#endif
TRACE("PAP: SendAck() state=%d\n", State());
if(!packet)
return false;
@@ -558,9 +537,7 @@ PAP::SendAck(struct mbuf *packet)
bool
PAP::SendNak(struct mbuf *packet)
{
#if DEBUG
dprintf("PAP: SendNak() state=%d\n", State());
#endif
TRACE("PAP: SendNak() state=%d\n", State());
if(!packet)
return false;
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <[email protected]>
* Distributed under the terms of the MIT License.
*/
#ifndef PROTOCOL__H
#define PROTOCOL__H
+5 -10
View File
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <[email protected]>
* Distributed under the terms of the MIT License.
*/
#include <KernelExport.h>
#include <driver_settings.h>
@@ -12,7 +10,6 @@
#include <KPPPInterface.h>
#include <KPPPModule.h>
#include <LockerHelper.h>
#include "Protocol.h"
@@ -41,10 +38,8 @@ add_to(KPPPInterface& mainInterface, KPPPInterface *subInterface,
success = mainInterface.AddProtocol(pap);
}
#if DEBUG
dprintf("PAP: add_to(): %s\n",
TRACE("PAP: add_to(): %s\n",
success && pap && pap->InitCheck() == B_OK ? "OK" : "ERROR");
#endif
return success && pap && pap->InitCheck() == B_OK;
}
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <[email protected]>
* Distributed under the terms of the MIT License.
*/
#include "DiscoveryPacket.h"
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
#ifndef DISCOVERY_PACKET__H
#define DISCOVERY_PACKET__H
+4 -6
View File
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
#ifndef PPPoE__H
#define PPPoE__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
#include "PPPoEDevice.h"
#include "DiscoveryPacket.h"
@@ -28,7 +26,7 @@ dump_packet(struct mbuf *packet)
uint8 buffer[33];
uint8 bufferIndex = 0;
dprintf("Dumping packet;len=%ld;pkthdr.len=%d\n", packet->m_len,
TRACE("Dumping packet;len=%ld;pkthdr.len=%d\n", packet->m_len,
packet->m_flags & M_PKTHDR ? packet->m_pkthdr.len : -1);
for(uint32 index = 0; index < packet->m_len; index++) {
@@ -36,7 +34,7 @@ dump_packet(struct mbuf *packet)
buffer[bufferIndex++] = sDigits[data[index] & 0x0F];
if(bufferIndex == 32 || index == packet->m_len - 1) {
buffer[bufferIndex] = 0;
dprintf("%s\n", buffer);
TRACE("%s\n", buffer);
bufferIndex = 0;
}
}
@@ -53,12 +51,13 @@ PPPoEDevice::PPPoEDevice(KPPPInterface& interface, driver_parameter *settings)
fServiceName(NULL),
fAttempts(0),
fNextTimeout(0),
fState(INITIAL)
fState(INITIAL),
fLock("PPPoEDevice")
{
#if DEBUG
dprintf("PPPoEDevice: Constructor\n");
TRACE("PPPoEDevice: Constructor\n");
if(!settings || !settings->parameters)
dprintf("PPPoEDevice::ctor: No settings!\n");
TRACE("PPPoEDevice::ctor: No settings!\n");
#endif
interface.SetPFCOptions(PPP_ALLOW_PFC);
@@ -80,7 +79,7 @@ PPPoEDevice::PPPoEDevice(KPPPInterface& interface, driver_parameter *settings)
#if DEBUG
if(!fEthernetIfnet)
dprintf("PPPoEDevice::ctor: could not find ethernet interface\n");
TRACE("PPPoEDevice::ctor: could not find ethernet interface\n");
#endif
add_device(this);
@@ -89,9 +88,7 @@ PPPoEDevice::PPPoEDevice(KPPPInterface& interface, driver_parameter *settings)
PPPoEDevice::~PPPoEDevice()
{
#if DEBUG
dprintf("PPPoEDevice: Destructor\n");
#endif
TRACE("PPPoEDevice: Destructor\n");
remove_device(this);
}
@@ -108,9 +105,7 @@ PPPoEDevice::InitCheck() const
bool
PPPoEDevice::Up()
{
#if DEBUG
dprintf("PPPoEDevice: Up()\n");
#endif
TRACE("PPPoEDevice: Up()\n");
if(InitCheck() != B_OK)
return false;
@@ -170,7 +165,7 @@ PPPoEDevice::Up()
if(EthernetIfnet()->output(EthernetIfnet(), packet, &destination, NULL) != B_OK) {
fState = INITIAL;
fAttempts = 0;
dprintf("PPPoEDevice::Up(): EthernetIfnet()->output() failed!\n");
ERROR("PPPoEDevice::Up(): EthernetIfnet()->output() failed!\n");
return false;
}
@@ -183,9 +178,7 @@ PPPoEDevice::Up()
bool
PPPoEDevice::Down()
{
#if DEBUG
dprintf("PPPoEDevice: Down()\n");
#endif
TRACE("PPPoEDevice: Down()\n");
if(InitCheck() != B_OK)
return false;
@@ -211,7 +204,7 @@ PPPoEDevice::Down()
struct mbuf *packet = discovery.ToMbuf(MTU());
if(!packet) {
dprintf("PPPoEDevice::Down(): ToMbuf() failed; MTU=%ld\n", MTU());
ERROR("PPPoEDevice::Down(): ToMbuf() failed; MTU=%ld\n", MTU());
DownEvent();
return false;
}
@@ -264,14 +257,12 @@ PPPoEDevice::Send(struct mbuf *packet, uint16 protocolNumber = 0)
{
// Send() is only for PPP packets. PPPoE packets are sent directly to ethernet.
#if DEBUG
dprintf("PPPoEDevice: Send()\n");
#endif
TRACE("PPPoEDevice: Send()\n");
if(!packet)
return B_ERROR;
else if(InitCheck() != B_OK || protocolNumber != 0) {
dprintf("PPPoEDevice::Send(): InitCheck() != B_OK!\n");
ERROR("PPPoEDevice::Send(): InitCheck() != B_OK!\n");
m_freem(packet);
return B_ERROR;
}
@@ -279,7 +270,7 @@ PPPoEDevice::Send(struct mbuf *packet, uint16 protocolNumber = 0)
LockerHelper locker(fLock);
if(!IsUp()) {
dprintf("PPPoEDevice::Send(): no connection!\n");
ERROR("PPPoEDevice::Send(): no connection!\n");
m_freem(packet);
return PPP_NO_CONNECTION;
}
@@ -307,11 +298,11 @@ PPPoEDevice::Send(struct mbuf *packet, uint16 protocolNumber = 0)
locker.UnlockNow();
if(!packet)
dprintf("PPPoEDevice::Send(): packet is NULL!\n");
if(!packet || !mtod(packet, pppoe_header*))
ERROR("PPPoEDevice::Send(): packet is NULL!\n");
if(EthernetIfnet()->output(EthernetIfnet(), packet, &destination, NULL) != B_OK) {
dprintf("PPPoEDevice::Send(): EthernetIfnet()->output() failed!\n");
ERROR("PPPoEDevice::Send(): EthernetIfnet()->output() failed!\n");
DownEvent();
// DownEvent() without DownStarted() indicates connection lost
return PPP_NO_CONNECTION;
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
#ifndef PPPoE_DEVICE__H
#define PPPoE_DEVICE__H
+18 -32
View File
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
#include <KernelExport.h>
#include <driver_settings.h>
@@ -34,7 +32,7 @@ static struct ethernet_module_info *sEthernet;
static int32 sHostUniq = 0;
status_t std_ops(int32 op, ...);
static BLocker sLock;
static BLocker sLock("PPPoEList");
static TemplateList<PPPoEDevice*> *sDevices;
static TemplateList<pppoe_query*> *sQueries;
@@ -94,6 +92,7 @@ FindPPPoEInterface(const char *name)
return NULL;
}
uint32
NewHostUniq()
{
@@ -104,9 +103,7 @@ NewHostUniq()
void
add_device(PPPoEDevice *device)
{
#if DEBUG
dprintf("PPPoE: add_device()\n");
#endif
TRACE("PPPoE: add_device()\n");
LockerHelper locker(sLock);
sDevices->AddItem(device);
@@ -116,9 +113,7 @@ add_device(PPPoEDevice *device)
void
remove_device(PPPoEDevice *device)
{
#if DEBUG
dprintf("PPPoE: remove_device()\n");
#endif
TRACE("PPPoE: remove_device()\n");
LockerHelper locker(sLock);
sDevices->RemoveItem(device);
@@ -148,7 +143,7 @@ pppoe_input(struct mbuf *packet)
if(header->pppoeHeader.code == PADO) {
DiscoveryPacket discovery(packet, ETHER_HDR_LEN);
if(discovery.InitCheck() != B_OK) {
dprintf("PPPoE: received corrupted discovery packet!\n");
ERROR("PPPoE: received corrupted discovery packet!\n");
m_freem(packet);
return;
}
@@ -171,21 +166,17 @@ pppoe_input(struct mbuf *packet)
if(device && device->EthernetIfnet() == sourceIfnet) {
if(header->ethernetHeader.ether_type == ETHERTYPE_PPPOE
&& header->pppoeHeader.sessionID == device->SessionID()) {
#if DEBUG
dprintf("PPPoE: session packet\n");
#endif
TRACE("PPPoE: session packet\n");
device->Receive(packet);
return;
} else if(header->ethernetHeader.ether_type == ETHERTYPE_PPPOEDISC
&& header->pppoeHeader.code != PADI
&& header->pppoeHeader.code != PADR
&& !device->IsDown()) {
#if DEBUG
dprintf("PPPoE: discovery packet\n");
#endif
TRACE("PPPoE: discovery packet\n");
DiscoveryPacket discovery(packet, ETHER_HDR_LEN);
if(discovery.InitCheck() != B_OK) {
dprintf("PPPoE: received corrupted discovery packet!\n");
ERROR("PPPoE: received corrupted discovery packet!\n");
m_freem(packet);
return;
}
@@ -200,7 +191,7 @@ pppoe_input(struct mbuf *packet)
}
}
dprintf("PPPoE: No device found for packet from: %s\n", sourceIfnet->if_name);
ERROR("PPPoE: No device found for packet from: %s\n", sourceIfnet->if_name);
m_freem(packet);
}
@@ -223,10 +214,8 @@ add_to(KPPPInterface& mainInterface, KPPPInterface *subInterface,
success = mainInterface.SetDevice(device);
}
#if DEBUG
dprintf("PPPoE: add_to(): %s\n",
TRACE("PPPoE: add_to(): %s\n",
success && device && device->InitCheck() == B_OK ? "OK" : "ERROR");
#endif
return success && device && device->InitCheck() == B_OK;
}
@@ -319,22 +308,19 @@ std_ops(int32 op, ...)
return B_ERROR;
}
set_max_linkhdr(PPPoE_HEADER_SIZE + ETHER_HDR_LEN);
set_max_linkhdr(2 + PPPoE_HEADER_SIZE + ETHER_HDR_LEN);
// 2 bytes for PPP header
sDevices = new TemplateList<PPPoEDevice*>;
sQueries = new TemplateList<pppoe_query*>;
sEthernet->set_pppoe_receiver(pppoe_input);
#if DEBUG
dprintf("PPPoE: Registered PPPoE receiver.\n");
#endif
TRACE("PPPoE: Registered PPPoE receiver.\n");
return B_OK;
case B_MODULE_UNINIT:
delete sDevices;
sEthernet->unset_pppoe_receiver();
#if DEBUG
dprintf("PPPoE: Unregistered PPPoE receiver.\n");
#endif
TRACE("PPPoE: Unregistered PPPoE receiver.\n");
put_module(NET_CORE_MODULE_NAME);
put_module(NET_ETHERNET_MODULE_NAME);
break;
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
/*! \class KPPPConfigurePacket
\brief Helper class for LCP configure packets.
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
/*! \class KPPPDevice
\brief Represents a device at the lowest level of the communcation stack.
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
/*! \class KPPPInterface
\brief The kernel representation of a PPP interface.
@@ -21,7 +19,7 @@
*/
// cstdio must be included before KPPPModule.h/KPPPManager.h because
// ddprintf is defined twice with different return values, once with
// dprintf is defined twice with different return values, once with
// void (KernelExport.h) and once with int (stdio.h).
#include <cstdio>
#include <cstring>
@@ -52,7 +50,7 @@
// TODO:
// - implement timers with support for settings next time instead of receiving timer
// - implement timers with support for setting next event instead of receiving timer
// events periodically
// - add missing settings support (DialRetryDelay, etc.)
@@ -154,7 +152,7 @@ KPPPInterface::KPPPInterface(const char *name, ppp_interface_entry *entry,
_KPPPMRUHandler *mruHandler =
new _KPPPMRUHandler(*this);
if(!LCP().AddOptionHandler(mruHandler) || mruHandler->InitCheck() != B_OK) {
dprintf("KPPPInterface: Could not add MRU handler!\n");
ERROR("KPPPInterface: Could not add MRU handler!\n");
delete mruHandler;
}
// authentication
@@ -162,14 +160,14 @@ KPPPInterface::KPPPInterface(const char *name, ppp_interface_entry *entry,
new _KPPPAuthenticationHandler(*this);
if(!LCP().AddOptionHandler(authenticationHandler)
|| authenticationHandler->InitCheck() != B_OK) {
dprintf("KPPPInterface: Could not add authentication handler!\n");
ERROR("KPPPInterface: Could not add authentication handler!\n");
delete authenticationHandler;
}
// PFC
_KPPPPFCHandler *pfcHandler =
new _KPPPPFCHandler(fLocalPFCState, fPeerPFCState, *this);
if(!LCP().AddOptionHandler(pfcHandler) || pfcHandler->InitCheck() != B_OK) {
dprintf("KPPPInterface: Could not add PFC handler!\n");
ERROR("KPPPInterface: Could not add PFC handler!\n");
delete pfcHandler;
}
@@ -180,7 +178,7 @@ KPPPInterface::KPPPInterface(const char *name, ppp_interface_entry *entry,
// 1s delay between lost connection and redial
if(get_module(PPP_INTERFACE_MODULE_NAME, (module_info**) &fManager) != B_OK)
dprintf("KPPPInterface: Manager module not found!\n");
ERROR("KPPPInterface: Manager module not found!\n");
// are we a multilink subinterface?
if(parent && parent->IsMultilink()) {
@@ -225,7 +223,7 @@ KPPPInterface::KPPPInterface(const char *name, ppp_interface_entry *entry,
// load all protocols and the device
if(!LoadModules(fSettings, 0, fSettings->parameter_count)) {
dprintf("KPPPInterface: Error loading modules!\n");
ERROR("KPPPInterface: Error loading modules!\n");
fInitStatus = B_ERROR;
}
}
@@ -234,9 +232,7 @@ KPPPInterface::KPPPInterface(const char *name, ppp_interface_entry *entry,
//! Destructor: Disconnects and marks interface for deletion.
KPPPInterface::~KPPPInterface()
{
#if DEBUG
dprintf("KPPPInterface: Destructor\n");
#endif
TRACE("KPPPInterface: Destructor\n");
++fDeleteCounter;
@@ -347,9 +343,7 @@ KPPPInterface::InitCheck() const
bool
KPPPInterface::SetMRU(uint32 MRU)
{
#if DEBUG
dprintf("KPPPInterface: SetMRU(%ld)\n", MRU);
#endif
TRACE("KPPPInterface: SetMRU(%ld)\n", MRU);
if(Device() && MRU > Device()->MTU() - 2)
return false;
@@ -579,9 +573,7 @@ KPPPInterface::Control(uint32 op, void *data, size_t length)
bool
KPPPInterface::SetDevice(KPPPDevice *device)
{
#if DEBUG
dprintf("KPPPInterface: SetDevice(%p)\n", device);
#endif
TRACE("KPPPInterface: SetDevice(%p)\n", device);
if(device && &device->Interface() != this)
return false;
@@ -628,13 +620,11 @@ KPPPInterface::SetDevice(KPPPDevice *device)
bool
KPPPInterface::AddProtocol(KPPPProtocol *protocol)
{
// Find instert position after the last protocol
// Find insert position after the last protocol
// with the same level.
#if DEBUG
dprintf("KPPPInterface: AddProtocol(%X)\n",
TRACE("KPPPInterface: AddProtocol(%X)\n",
protocol ? protocol->ProtocolNumber() : 0);
#endif
if(!protocol || &protocol->Interface() != this
|| protocol->Level() == PPP_INTERFACE_LEVEL)
@@ -701,10 +691,8 @@ KPPPInterface::AddProtocol(KPPPProtocol *protocol)
bool
KPPPInterface::RemoveProtocol(KPPPProtocol *protocol)
{
#if DEBUG
dprintf("KPPPInterface: RemoveProtocol(%X)\n",
TRACE("KPPPInterface: RemoveProtocol(%X)\n",
protocol ? protocol->ProtocolNumber() : 0);
#endif
LockerHelper locker(fLock);
@@ -781,9 +769,7 @@ KPPPInterface::ProtocolAt(int32 index) const
KPPPProtocol*
KPPPInterface::ProtocolFor(uint16 protocolNumber, KPPPProtocol *start = NULL) const
{
#if DEBUG
dprintf("KPPPInterface: ProtocolFor(%X)\n", protocolNumber);
#endif
TRACE("KPPPInterface: ProtocolFor(%X)\n", protocolNumber);
KPPPProtocol *current = start ? start : FirstProtocol();
@@ -803,10 +789,7 @@ KPPPInterface::ProtocolFor(uint16 protocolNumber, KPPPProtocol *start = NULL) co
bool
KPPPInterface::AddChild(KPPPInterface *child)
{
#if DEBUG
dprintf("KPPPInterface: AddChild(%lX)\n",
child ? child->ID() : 0);
#endif
TRACE("KPPPInterface: AddChild(%lX)\n", child ? child->ID() : 0);
if(!child)
return false;
@@ -826,10 +809,7 @@ KPPPInterface::AddChild(KPPPInterface *child)
bool
KPPPInterface::RemoveChild(KPPPInterface *child)
{
#if DEBUG
dprintf("KPPPInterface: RemoveChild(%lX)\n",
child ? child->ID() : 0);
#endif
TRACE("KPPPInterface: RemoveChild(%lX)\n", child ? child->ID() : 0);
LockerHelper locker(fLock);
@@ -850,9 +830,7 @@ KPPPInterface::RemoveChild(KPPPInterface *child)
KPPPInterface*
KPPPInterface::ChildAt(int32 index) const
{
#if DEBUG
dprintf("KPPPInterface: ChildAt(%ld)\n", index);
#endif
TRACE("KPPPInterface: ChildAt(%ld)\n", index);
KPPPInterface *child = fChildren.ItemAt(index);
@@ -867,9 +845,7 @@ KPPPInterface::ChildAt(int32 index) const
void
KPPPInterface::SetAutoRedial(bool autoRedial = true)
{
#if DEBUG
dprintf("KPPPInterface: SetAutoRedial(%s)\n", autoRedial ? "true" : "false");
#endif
TRACE("KPPPInterface: SetAutoRedial(%s)\n", autoRedial ? "true" : "false");
if(Mode() != PPP_CLIENT_MODE)
return;
@@ -887,15 +863,11 @@ KPPPInterface::SetDialOnDemand(bool dialOnDemand = true)
// All protocols must check if DialOnDemand was enabled/disabled after this
// interface went down. This is the only situation where a change is relevant.
#if DEBUG
dprintf("KPPPInterface: SetDialOnDemand(%s)\n", dialOnDemand ? "true" : "false");
#endif
TRACE("KPPPInterface: SetDialOnDemand(%s)\n", dialOnDemand ? "true" : "false");
// Only clients support DialOnDemand.
if(Mode() != PPP_CLIENT_MODE) {
#if DEBUG
dprintf("KPPPInterface::SetDialOnDemand(): Wrong mode!\n");
#endif
TRACE("KPPPInterface::SetDialOnDemand(): Wrong mode!\n");
fDialOnDemand = false;
return;
} else if(DoesDialOnDemand() == dialOnDemand)
@@ -933,9 +905,7 @@ KPPPInterface::SetDialOnDemand(bool dialOnDemand = true)
bool
KPPPInterface::SetPFCOptions(uint8 pfcOptions)
{
#if DEBUG
dprintf("KPPPInterface: SetPFCOptions(0x%X)\n", pfcOptions);
#endif
TRACE("KPPPInterface: SetPFCOptions(0x%X)\n", pfcOptions);
if(PFCOptions() & PPP_FREEZE_PFC_OPTIONS)
return false;
@@ -955,9 +925,7 @@ KPPPInterface::SetPFCOptions(uint8 pfcOptions)
bool
KPPPInterface::Up()
{
#if DEBUG
dprintf("KPPPInterface: Up()\n");
#endif
TRACE("KPPPInterface: Up()\n");
if(InitCheck() != B_OK || Phase() == PPP_TERMINATION_PHASE)
return false;
@@ -973,6 +941,7 @@ KPPPInterface::Up()
while(fLock.LockWithTimeout(100000) != B_NO_ERROR)
if(fDeleteCounter > 0)
return false;
if(fUpThread == -1)
fUpThread = me;
@@ -1003,10 +972,8 @@ KPPPInterface::Up()
if(receive_data(&sender, &report, sizeof(report)) != PPP_REPORT_CODE)
continue;
//#if DEBUG
// dprintf("KPPPInterface::Up(): Report: Type = %ld Code = %ld\n", report.type,
// TRACE("KPPPInterface::Up(): Report: Type = %ld Code = %ld\n", report.type,
// report.code);
//#endif
if(IsUp()) {
if(me == fUpThread) {
@@ -1014,8 +981,7 @@ KPPPInterface::Up()
fUpThread = -1;
}
PPP_REPLY(sender, B_OK);
ReportManager().DisableReports(PPP_CONNECTION_REPORT, me);
PPP_REPLY(sender, PPP_OK_DISABLE_REPORTS);
return true;
}
@@ -1025,8 +991,7 @@ KPPPInterface::Up()
fUpThread = -1;
}
PPP_REPLY(sender, B_OK);
ReportManager().DisableReports(PPP_CONNECTION_REPORT, me);
PPP_REPLY(sender, PPP_OK_DISABLE_REPORTS);
return false;
} else if(report.type != PPP_CONNECTION_REPORT) {
PPP_REPLY(sender, B_OK);
@@ -1044,8 +1009,7 @@ KPPPInterface::Up()
// notify redial thread that we do not need it anymore
}
PPP_REPLY(sender, B_OK);
ReportManager().DisableReports(PPP_CONNECTION_REPORT, me);
PPP_REPLY(sender, PPP_OK_DISABLE_REPORTS);
return true;
} else if(report.code == PPP_REPORT_DOWN_SUCCESSFUL
|| report.code == PPP_REPORT_UP_ABORTED
@@ -1055,12 +1019,11 @@ KPPPInterface::Up()
fDialRetry = 0;
fUpThread = -1;
if(!DoesDialOnDemand() && report.code != PPP_REPORT_DOWN_SUCCESSFUL)
if(report.code != PPP_REPORT_DOWN_SUCCESSFUL)
Delete();
}
PPP_REPLY(sender, B_OK);
ReportManager().DisableReports(PPP_CONNECTION_REPORT, me);
PPP_REPLY(sender, PPP_OK_DISABLE_REPORTS);
return false;
}
@@ -1068,8 +1031,7 @@ KPPPInterface::Up()
// I am an observer
if(report.code == PPP_REPORT_DEVICE_UP_FAILED) {
if(fDialRetry >= fDialRetriesLimit || fUpThread == -1) {
PPP_REPLY(sender, B_OK);
ReportManager().DisableReports(PPP_CONNECTION_REPORT, me);
PPP_REPLY(sender, PPP_OK_DISABLE_REPORTS);
return false;
} else {
PPP_REPLY(sender, B_OK);
@@ -1080,8 +1042,7 @@ KPPPInterface::Up()
PPP_REPLY(sender, B_OK);
continue;
} else {
PPP_REPLY(sender, B_OK);
ReportManager().DisableReports(PPP_CONNECTION_REPORT, me);
PPP_REPLY(sender, PPP_OK_DISABLE_REPORTS);
return false;
}
}
@@ -1089,27 +1050,20 @@ KPPPInterface::Up()
// I am the thread for the real task
if(report.code == PPP_REPORT_DEVICE_UP_FAILED) {
if(fDialRetry >= fDialRetriesLimit) {
#if DEBUG
dprintf("KPPPInterface::Up(): DEVICE_UP_FAILED: >=maxretries!\n");
#endif
TRACE("KPPPInterface::Up(): DEVICE_UP_FAILED: >=maxretries!\n");
fDialRetry = 0;
fUpThread = -1;
Delete();
PPP_REPLY(sender, PPP_OK_DISABLE_REPORTS);
if(!DoesDialOnDemand())
Delete();
PPP_REPLY(sender, B_OK);
ReportManager().DisableReports(PPP_CONNECTION_REPORT, me);
return false;
} else {
#if DEBUG
dprintf("KPPPInterface::Up(): DEVICE_UP_FAILED: <maxretries\n");
#endif
TRACE("KPPPInterface::Up(): DEVICE_UP_FAILED: <maxretries\n");
++fDialRetry;
PPP_REPLY(sender, B_OK);
#if DEBUG
dprintf("KPPPInterface::Up(): DEVICE_UP_FAILED: replied\n");
#endif
TRACE("KPPPInterface::Up(): DEVICE_UP_FAILED: replied\n");
Redial(DialRetryDelay());
continue;
}
@@ -1124,11 +1078,8 @@ KPPPInterface::Up()
} else {
fDialRetry = 0;
fUpThread = -1;
PPP_REPLY(sender, B_OK);
ReportManager().DisableReports(PPP_CONNECTION_REPORT, me);
if(!DoesDialOnDemand())
Delete();
Delete();
PPP_REPLY(sender, PPP_OK_DISABLE_REPORTS);
return false;
}
@@ -1153,9 +1104,7 @@ KPPPInterface::Up()
bool
KPPPInterface::Down()
{
#if DEBUG
dprintf("KPPPInterface: Down()\n");
#endif
TRACE("KPPPInterface: Down()\n");
if(InitCheck() != B_OK)
return false;
@@ -1204,9 +1153,7 @@ KPPPInterface::Down()
}
}
if(!DoesDialOnDemand())
Delete();
Delete();
return true;
}
@@ -1232,9 +1179,7 @@ KPPPInterface::IsUp() const
bool
KPPPInterface::LoadModules(driver_settings *settings, int32 start, int32 count)
{
#if DEBUG
dprintf("KPPPInterface: LoadModules()\n");
#endif
TRACE("KPPPInterface: LoadModules()\n");
if(Phase() != PPP_DOWN_PHASE)
return false;
@@ -1304,9 +1249,7 @@ bool
KPPPInterface::LoadModule(const char *name, driver_parameter *parameter,
ppp_module_key_type type)
{
#if DEBUG
dprintf("KPPPInterface: LoadModule(%s)\n", name ? name : "XXX: NO NAME");
#endif
TRACE("KPPPInterface: LoadModule(%s)\n", name ? name : "XXX: NO NAME");
if(Phase() != PPP_DOWN_PHASE)
return false;
@@ -1357,9 +1300,7 @@ KPPPInterface::IsAllowedToSend() const
status_t
KPPPInterface::Send(struct mbuf *packet, uint16 protocolNumber)
{
#if DEBUG
dprintf("KPPPInterface: Send(0x%X)\n", protocolNumber);
#endif
TRACE("KPPPInterface: Send(0x%X)\n", protocolNumber);
if(!packet)
return B_ERROR;
@@ -1389,21 +1330,21 @@ KPPPInterface::Send(struct mbuf *packet, uint16 protocolNumber)
#if DEBUG
if(!protocol)
dprintf("KPPPInterface::Send(): no protocol found!\n");
TRACE("KPPPInterface::Send(): no protocol found!\n");
else if(!Device()->IsUp())
dprintf("KPPPInterface::Send(): device is not up!\n");
TRACE("KPPPInterface::Send(): device is not up!\n");
else if(!protocol->IsEnabled())
dprintf("KPPPInterface::Send(): protocol not enabled!\n");
TRACE("KPPPInterface::Send(): protocol not enabled!\n");
else if(!IsProtocolAllowed(*protocol))
dprintf("KPPPInterface::Send(): protocol not allowed to send!\n");
TRACE("KPPPInterface::Send(): protocol not allowed to send!\n");
else
dprintf("KPPPInterface::Send(): protocol allowed\n");
TRACE("KPPPInterface::Send(): protocol allowed\n");
#endif
// make sure that protocol is allowed to send and everything is up
if(!Device()->IsUp() || !protocol || !protocol->IsEnabled()
|| !IsProtocolAllowed(*protocol)) {
dprintf("KPPPInterface::Send(): cannot send!\n");
ERROR("KPPPInterface::Send(): cannot send!\n");
m_freem(packet);
return B_ERROR;
}
@@ -1468,9 +1409,7 @@ KPPPInterface::Send(struct mbuf *packet, uint16 protocolNumber)
status_t
KPPPInterface::Receive(struct mbuf *packet, uint16 protocolNumber)
{
#if DEBUG
dprintf("KPPPInterface: Receive(0x%X)\n", protocolNumber);
#endif
TRACE("KPPPInterface: Receive(0x%X)\n", protocolNumber);
if(!packet)
return B_ERROR;
@@ -1494,9 +1433,7 @@ KPPPInterface::Receive(struct mbuf *packet, uint16 protocolNumber)
for(; protocol;
protocol = protocol->NextProtocol() ?
ProtocolFor(protocolNumber, protocol->NextProtocol()) : NULL) {
#if DEBUG
dprintf("KPPPInterface::Receive(): trying protocol\n");
#endif
TRACE("KPPPInterface::Receive(): trying protocol\n");
if(!protocol->IsEnabled() || !IsProtocolAllowed(*protocol))
continue;
@@ -1509,9 +1446,7 @@ KPPPInterface::Receive(struct mbuf *packet, uint16 protocolNumber)
return result;
}
#if DEBUG
dprintf("KPPPInterface::Receive(): trying parent\n");
#endif
TRACE("KPPPInterface::Receive(): trying parent\n");
// maybe the parent interface can handle the packet
if(Parent())
@@ -1543,9 +1478,7 @@ KPPPInterface::Receive(struct mbuf *packet, uint16 protocolNumber)
status_t
KPPPInterface::ReceiveFromDevice(struct mbuf *packet)
{
#if DEBUG
dprintf("KPPPInterface: ReceiveFromDevice()\n");
#endif
TRACE("KPPPInterface: ReceiveFromDevice()\n");
if(!packet)
return B_ERROR;
@@ -1596,9 +1529,7 @@ KPPPInterface::Pulse()
bool
KPPPInterface::RegisterInterface()
{
#if DEBUG
dprintf("KPPPInterface: RegisterInterface()\n");
#endif
TRACE("KPPPInterface: RegisterInterface()\n");
if(fIfnet)
return true;
@@ -1632,9 +1563,7 @@ KPPPInterface::RegisterInterface()
bool
KPPPInterface::UnregisterInterface()
{
#if DEBUG
dprintf("KPPPInterface: UnregisterInterface()\n");
#endif
TRACE("KPPPInterface: UnregisterInterface()\n");
if(!fIfnet)
return true;
@@ -1671,9 +1600,7 @@ KPPPInterface::UpdateProfile()
status_t
KPPPInterface::StackControl(uint32 op, void *data)
{
#if DEBUG
dprintf("KPPPInterface: StackControl(0x%lX)\n", op);
#endif
TRACE("KPPPInterface: StackControl(0x%lX)\n", op);
switch(op) {
default:
@@ -1716,9 +1643,7 @@ class CallStackControl {
status_t
KPPPInterface::StackControlEachHandler(uint32 op, void *data)
{
#if DEBUG
dprintf("KPPPInterface: StackControlEachHandler(0x%lX)\n", op);
#endif
TRACE("KPPPInterface: StackControlEachHandler(0x%lX)\n", op);
status_t result = B_BAD_VALUE, tmp;
@@ -1744,9 +1669,7 @@ KPPPInterface::StackControlEachHandler(uint32 op, void *data)
void
KPPPInterface::CalculateInterfaceMTU()
{
#if DEBUG
dprintf("KPPPInterface: CalculateInterfaceMTU()\n");
#endif
TRACE("KPPPInterface: CalculateInterfaceMTU()\n");
fInterfaceMTU = fMRU;
fHeaderLength = 2;
@@ -1774,9 +1697,7 @@ KPPPInterface::CalculateInterfaceMTU()
void
KPPPInterface::CalculateBaudRate()
{
#if DEBUG
dprintf("KPPPInterface: CalculateBaudRate()\n");
#endif
TRACE("KPPPInterface: CalculateBaudRate()\n");
if(!Ifnet())
return;
@@ -1797,9 +1718,7 @@ KPPPInterface::CalculateBaudRate()
void
KPPPInterface::Redial(uint32 delay)
{
#if DEBUG
dprintf("KPPPInterface: Redial(%ld)\n", delay);
#endif
TRACE("KPPPInterface: Redial(%ld)\n", delay);
if(fRedialThread != -1)
return;
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
/*! \class KPPPLCP
\brief The LCP protocol.
@@ -279,7 +277,7 @@ KPPPLCP::Receive(struct mbuf *packet, uint16 protocolNumber)
return B_ERROR;
if(protocolNumber != PPP_LCP_PROTOCOL) {
dprintf("KPPPLCP::Receive(): wrong protocol number!\n");
ERROR("KPPPLCP::Receive(): wrong protocol number!\n");
return PPP_UNHANDLED;
}
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
/*! \class KPPPLCPExtension
\brief LCP protocol extension
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
/*! \class KPPPLayer
\brief An abstract layer that can encapsulate/send and receive packets.
@@ -84,7 +82,7 @@ KPPPLayer::SendToNext(struct mbuf *packet, uint16 protocolNumber) const
else
return Next()->SendToNext(packet, protocolNumber);
} else {
dprintf("KPPPLayer: SendToNext() failed because there is no next handler!\n");
ERROR("KPPPLayer: SendToNext() failed because there is no next handler!\n");
m_freem(packet);
return B_ERROR;
}
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
/*! \class KPPPOptionHandler
\brief Handler for LCP configure packets.
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
/*! \class KPPPProfile
\brief Manages profiles for KPPPInterface.
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
/*! \class KPPPProtocol.
\brief Represents a PPP protocol object.
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
/*! \class KPPPReportManager
\brief Manager for PPP reports and report requests.
@@ -117,10 +115,8 @@ KPPPReportManager::DoesReport(ppp_report_type type, thread_id thread)
bool
KPPPReportManager::Report(ppp_report_type type, int32 code, void *data, int32 length)
{
#if DEBUG
dprintf("KPPPReportManager: Report(type=%d code=%ld length=%ld) to %ld receivers\n",
TRACE("KPPPReportManager: Report(type=%d code=%ld length=%ld) to %ld receivers\n",
type, code, length, fReportRequests.CountItems());
#endif
if(length > PPP_REPORT_DATA_LIMIT)
return false;
@@ -157,7 +153,7 @@ KPPPReportManager::Report(ppp_report_type type, int32 code, void *data, int32 le
#if DEBUG
if(result == B_TIMED_OUT)
dprintf("KPPPReportManager::Report(): timed out sending\n");
TRACE("KPPPReportManager::Report(): timed out sending\n");
#endif
thread_info info;
@@ -194,31 +190,29 @@ KPPPReportManager::Report(ppp_report_type type, int32 code, void *data, int32 le
}
if(sender != request->thread) {
#if DEBUG
dprintf("KPPPReportManager::Report(): sender != requested\n");
#endif
TRACE("KPPPReportManager::Report(): sender != requested\n");
continue;
}
if(result == B_OK && code != B_OK)
if(result == B_OK && code != B_OK && code != PPP_OK_DISABLE_REPORTS)
acceptable = false;
#if DEBUG
if(result == B_TIMED_OUT)
dprintf("KPPPReportManager::Report(): reply timed out\n");
TRACE("KPPPReportManager::Report(): reply timed out\n");
#endif
}
// remove thread if it is not existant or if remove-flag is set
if(request->flags & PPP_REMOVE_AFTER_REPORT
|| get_thread_info(request->thread, &info) != B_OK) {
|| get_thread_info(request->thread, &info) != B_OK
|| code == PPP_OK_DISABLE_REPORTS) {
fReportRequests.RemoveItem(request);
--index;
}
}
#if DEBUG
dprintf("KPPPReportManager::Report(): returning: %s\n", acceptable?"true":"false");
#endif
TRACE("KPPPReportManager::Report(): returning: %s\n", acceptable?"true":"false");
return acceptable;
}
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
/*! \class KPPPStateMachine
\brief PPP state machine belonging to the LCP protocol
@@ -49,7 +47,8 @@ KPPPStateMachine::KPPPStateMachine(KPPPInterface& interface)
fRequestID(0),
fTerminateID(0),
fEchoID(0),
fNextTimeout(0)
fNextTimeout(0),
fLock("KPPPStateMachine")
{
}
@@ -78,9 +77,7 @@ KPPPStateMachine::NextID()
void
KPPPStateMachine::NewState(ppp_state next)
{
#if DEBUG
dprintf("KPPPSM: NewState(%d) state=%d\n", next, State());
#endif
TRACE("KPPPSM: NewState(%d) state=%d\n", next, State());
// maybe we do not need the timer anymore
if(next < PPP_CLOSING_STATE || next == PPP_OPENED_STATE)
@@ -103,7 +100,7 @@ KPPPStateMachine::NewPhase(ppp_phase next)
{
#if DEBUG
if(next <= PPP_ESTABLISHMENT_PHASE || next == PPP_ESTABLISHED_PHASE)
dprintf("KPPPSM: NewPhase(%d) phase=%d\n", next, Phase());
TRACE("KPPPSM: NewPhase(%d) phase=%d\n", next, Phase());
#endif
// there is nothing after established phase and nothing before down phase
@@ -117,9 +114,7 @@ KPPPStateMachine::NewPhase(ppp_phase next)
if(Phase() == PPP_ESTABLISHED_PHASE && next != Phase()) {
if(Interface().Ifnet()) {
Interface().Ifnet()->if_flags &= ~IFF_RUNNING;
if(!Interface().DoesDialOnDemand())
Interface().Ifnet()->if_flags &= ~IFF_UP;
Interface().Ifnet()->if_flags &= ~IFF_UP;
}
if(Interface().Parent())
@@ -144,10 +139,7 @@ KPPPStateMachine::NewPhase(ppp_phase next)
bool
KPPPStateMachine::Reconfigure()
{
#if DEBUG
dprintf("KPPPSM: Reconfigure() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: Reconfigure() state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -171,10 +163,7 @@ KPPPStateMachine::Reconfigure()
bool
KPPPStateMachine::SendEchoRequest()
{
#if DEBUG
dprintf("KPPPSM: SendEchoRequest() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: SendEchoRequest() state=%d phase=%d\n", State(), Phase());
if(State() != PPP_OPENED_STATE)
return false;
@@ -202,10 +191,7 @@ KPPPStateMachine::SendEchoRequest()
bool
KPPPStateMachine::SendDiscardRequest()
{
#if DEBUG
dprintf("KPPPSM: SendDiscardRequest() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: SendDiscardRequest() state=%d phase=%d\n", State(), Phase());
if(State() != PPP_OPENED_STATE)
return false;
@@ -237,10 +223,8 @@ KPPPStateMachine::SendDiscardRequest()
void
KPPPStateMachine::LocalAuthenticationRequested()
{
#if DEBUG
dprintf("KPPPSM: LocalAuthenticationRequested() state=%d phase=%d\n",
TRACE("KPPPSM: LocalAuthenticationRequested() state=%d phase=%d\n",
State(), Phase());
#endif
LockerHelper locker(fLock);
@@ -263,10 +247,8 @@ KPPPStateMachine::LocalAuthenticationRequested()
void
KPPPStateMachine::LocalAuthenticationAccepted(const char *name)
{
#if DEBUG
dprintf("KPPPSM: LocalAuthenticationAccepted() state=%d phase=%d\n",
TRACE("KPPPSM: LocalAuthenticationAccepted() state=%d phase=%d\n",
State(), Phase());
#endif
LockerHelper locker(fLock);
@@ -292,10 +274,7 @@ KPPPStateMachine::LocalAuthenticationAccepted(const char *name)
void
KPPPStateMachine::LocalAuthenticationDenied(const char *name)
{
#if DEBUG
dprintf("KPPPSM: LocalAuthenticationDenied() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: LocalAuthenticationDenied() state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -314,10 +293,8 @@ KPPPStateMachine::LocalAuthenticationDenied(const char *name)
void
KPPPStateMachine::PeerAuthenticationRequested()
{
#if DEBUG
dprintf("KPPPSM: PeerAuthenticationRequested() state=%d phase=%d\n",
TRACE("KPPPSM: PeerAuthenticationRequested() state=%d phase=%d\n",
State(), Phase());
#endif
LockerHelper locker(fLock);
@@ -340,10 +317,8 @@ KPPPStateMachine::PeerAuthenticationRequested()
void
KPPPStateMachine::PeerAuthenticationAccepted(const char *name)
{
#if DEBUG
dprintf("KPPPSM: PeerAuthenticationAccepted() state=%d phase=%d\n",
TRACE("KPPPSM: PeerAuthenticationAccepted() state=%d phase=%d\n",
State(), Phase());
#endif
LockerHelper locker(fLock);
@@ -369,10 +344,7 @@ KPPPStateMachine::PeerAuthenticationAccepted(const char *name)
void
KPPPStateMachine::PeerAuthenticationDenied(const char *name)
{
#if DEBUG
dprintf("KPPPSM: PeerAuthenticationDenied() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: PeerAuthenticationDenied() state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -393,10 +365,7 @@ KPPPStateMachine::PeerAuthenticationDenied(const char *name)
void
KPPPStateMachine::UpFailedEvent(KPPPInterface& interface)
{
#if DEBUG
dprintf("KPPPSM: UpFailedEvent(interface) state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: UpFailedEvent(interface) state=%d phase=%d\n", State(), Phase());
// TODO:
// log that an interface did not go up
@@ -407,10 +376,7 @@ KPPPStateMachine::UpFailedEvent(KPPPInterface& interface)
void
KPPPStateMachine::UpEvent(KPPPInterface& interface)
{
#if DEBUG
dprintf("KPPPSM: UpEvent(interface) state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: UpEvent(interface) state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -438,10 +404,7 @@ KPPPStateMachine::UpEvent(KPPPInterface& interface)
void
KPPPStateMachine::DownEvent(KPPPInterface& interface)
{
#if DEBUG
dprintf("KPPPSM: DownEvent(interface) state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: DownEvent(interface) state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -489,10 +452,7 @@ KPPPStateMachine::DownEvent(KPPPInterface& interface)
void
KPPPStateMachine::UpFailedEvent(KPPPProtocol *protocol)
{
#if DEBUG
dprintf("KPPPSM: UpFailedEvent(protocol) state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: UpFailedEvent(protocol) state=%d phase=%d\n", State(), Phase());
if((protocol->Flags() & PPP_NOT_IMPORTANT) == 0) {
if(Interface().Mode() == PPP_CLIENT_MODE) {
@@ -519,10 +479,7 @@ KPPPStateMachine::UpFailedEvent(KPPPProtocol *protocol)
void
KPPPStateMachine::UpEvent(KPPPProtocol *protocol)
{
#if DEBUG
dprintf("KPPPSM: UpEvent(protocol) state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: UpEvent(protocol) state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -539,10 +496,7 @@ KPPPStateMachine::UpEvent(KPPPProtocol *protocol)
void
KPPPStateMachine::DownEvent(KPPPProtocol *protocol)
{
#if DEBUG
dprintf("KPPPSM: DownEvent(protocol) state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: DownEvent(protocol) state=%d phase=%d\n", State(), Phase());
}
@@ -557,10 +511,7 @@ KPPPStateMachine::DownEvent(KPPPProtocol *protocol)
bool
KPPPStateMachine::TLSNotify()
{
#if DEBUG
dprintf("KPPPSM: TLSNotify() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: TLSNotify() state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -586,10 +537,7 @@ KPPPStateMachine::TLSNotify()
bool
KPPPStateMachine::TLFNotify()
{
#if DEBUG
dprintf("KPPPSM: TLFNotify() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: TLFNotify() state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -604,10 +552,7 @@ KPPPStateMachine::TLFNotify()
void
KPPPStateMachine::UpFailedEvent()
{
#if DEBUG
dprintf("KPPPSM: UpFailedEvent() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: UpFailedEvent() state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -633,10 +578,7 @@ KPPPStateMachine::UpFailedEvent()
void
KPPPStateMachine::UpEvent()
{
#if DEBUG
dprintf("KPPPSM: UpEvent() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: UpEvent() state=%d phase=%d\n", State(), Phase());
// This call is public, thus, it might not only be called by the device.
// We must recognize these attempts to fool us and handle them correctly.
@@ -703,10 +645,7 @@ KPPPStateMachine::UpEvent()
void
KPPPStateMachine::DownEvent()
{
#if DEBUG
dprintf("KPPPSM: DownEvent() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: DownEvent() state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -788,14 +727,13 @@ KPPPStateMachine::DownEvent()
if(Interface().DoesAutoRedial()) {
if(needsRedial)
Interface().Redial(Interface().RedialDelay());
} else if(!Interface().DoesDialOnDemand())
} else
Interface().Delete();
} else {
Interface().Report(PPP_CONNECTION_REPORT, PPP_REPORT_DOWN_SUCCESSFUL,
&fInterface.fID, sizeof(ppp_interface_id));
if(!Interface().DoesDialOnDemand())
Interface().Delete();
Interface().Delete();
}
fLocalAuthenticationStatus = PPP_NOT_AUTHENTICATED;
@@ -807,10 +745,7 @@ KPPPStateMachine::DownEvent()
void
KPPPStateMachine::OpenEvent()
{
#if DEBUG
dprintf("KPPPSM: OpenEvent() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: OpenEvent() state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -873,10 +808,7 @@ KPPPStateMachine::OpenEvent()
void
KPPPStateMachine::CloseEvent()
{
#if DEBUG
dprintf("KPPPSM: CloseEvent() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: CloseEvent() state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -942,10 +874,7 @@ KPPPStateMachine::CloseEvent()
void
KPPPStateMachine::TOGoodEvent()
{
#if DEBUG
dprintf("KPPPSM: TOGoodEvent() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: TOGoodEvent() state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -975,10 +904,7 @@ KPPPStateMachine::TOGoodEvent()
void
KPPPStateMachine::TOBadEvent()
{
#if DEBUG
dprintf("KPPPSM: TOBadEvent() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: TOBadEvent() state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -1010,10 +936,7 @@ KPPPStateMachine::TOBadEvent()
void
KPPPStateMachine::RCRGoodEvent(struct mbuf *packet)
{
#if DEBUG
dprintf("KPPPSM: RCRGoodEvent() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: RCRGoodEvent() state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -1071,10 +994,7 @@ KPPPStateMachine::RCRGoodEvent(struct mbuf *packet)
void
KPPPStateMachine::RCRBadEvent(struct mbuf *nak, struct mbuf *reject)
{
#if DEBUG
dprintf("KPPPSM: RCRBadEvent() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: RCRBadEvent() state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -1132,10 +1052,7 @@ KPPPStateMachine::RCRBadEvent(struct mbuf *nak, struct mbuf *reject)
void
KPPPStateMachine::RCAEvent(struct mbuf *packet)
{
#if DEBUG
dprintf("KPPPSM: RCAEvent() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: RCAEvent() state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -1212,10 +1129,7 @@ KPPPStateMachine::RCAEvent(struct mbuf *packet)
void
KPPPStateMachine::RCNEvent(struct mbuf *packet)
{
#if DEBUG
dprintf("KPPPSM: RCNEvent() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: RCNEvent() state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -1295,10 +1209,7 @@ KPPPStateMachine::RCNEvent(struct mbuf *packet)
void
KPPPStateMachine::RTREvent(struct mbuf *packet)
{
#if DEBUG
dprintf("KPPPSM: RTREvent() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: RTREvent() state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -1348,10 +1259,7 @@ KPPPStateMachine::RTREvent(struct mbuf *packet)
void
KPPPStateMachine::RTAEvent(struct mbuf *packet)
{
#if DEBUG
dprintf("KPPPSM: RTAEvent() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: RTAEvent() state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -1408,10 +1316,7 @@ void
KPPPStateMachine::RUCEvent(struct mbuf *packet, uint16 protocolNumber,
uint8 code = PPP_PROTOCOL_REJECT)
{
#if DEBUG
dprintf("KPPPSM: RUCEvent() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: RUCEvent() state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -1433,10 +1338,7 @@ KPPPStateMachine::RUCEvent(struct mbuf *packet, uint16 protocolNumber,
void
KPPPStateMachine::RXJGoodEvent(struct mbuf *packet)
{
#if DEBUG
dprintf("KPPPSM: RXJGoodEvent() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: RXJGoodEvent() state=%d phase=%d\n", State(), Phase());
// This method does not m_freem(packet) because the acceptable rejects are
// also passed to the parent. RXJEvent() will m_freem(packet) when needed.
@@ -1462,10 +1364,7 @@ KPPPStateMachine::RXJGoodEvent(struct mbuf *packet)
void
KPPPStateMachine::RXJBadEvent(struct mbuf *packet)
{
#if DEBUG
dprintf("KPPPSM: RXJBadEvent() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: RXJBadEvent() state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -1515,10 +1414,7 @@ KPPPStateMachine::RXJBadEvent(struct mbuf *packet)
void
KPPPStateMachine::RXREvent(struct mbuf *packet)
{
#if DEBUG
dprintf("KPPPSM: RXREvent() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: RXREvent() state=%d phase=%d\n", State(), Phase());
ppp_lcp_packet *echo = mtod(packet, ppp_lcp_packet*);
@@ -1553,7 +1449,7 @@ KPPPStateMachine::TimerEvent()
{
#if DEBUG
if(fNextTimeout != 0)
dprintf("KPPPSM: TimerEvent()\n");
TRACE("KPPPSM: TimerEvent()\n");
#endif
// We might cause a dead-lock. Thus, abort if we cannot get the lock.
@@ -1596,10 +1492,7 @@ KPPPStateMachine::TimerEvent()
void
KPPPStateMachine::RCREvent(struct mbuf *packet)
{
#if DEBUG
dprintf("KPPPSM: RCREvent() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: RCREvent() state=%d phase=%d\n", State(), Phase());
KPPPConfigurePacket request(packet);
KPPPConfigurePacket nak(PPP_CONFIGURE_NAK);
@@ -1620,16 +1513,14 @@ KPPPStateMachine::RCREvent(struct mbuf *packet)
optionHandler = LCP().OptionHandlerFor(request.ItemAt(index)->type);
if(!optionHandler || !optionHandler->IsEnabled()) {
dprintf("KPPPSM::RCREvent(): unknown type:%d\n", request.ItemAt(index)->type);
ERROR("KPPPSM::RCREvent():unknown type:%d\n", request.ItemAt(index)->type);
// unhandled items should be added to the reject
reject.AddItem(request.ItemAt(index));
continue;
}
#if DEBUG
dprintf("KPPPSM::RCREvent(): OH=%s\n",
TRACE("KPPPSM::RCREvent(): OH=%s\n",
optionHandler->Name() ? optionHandler->Name() : "Unknown");
#endif
result = optionHandler->ParseRequest(request, index, nak, reject);
if(result == PPP_UNHANDLED) {
@@ -1639,7 +1530,7 @@ KPPPStateMachine::RCREvent(struct mbuf *packet)
} else if(result != B_OK) {
// the request contains a value that has been sent more than
// once or the value is corrupted
dprintf("KPPPSM::RCREvent(): OptionHandler returned parse error!\n");
ERROR("KPPPSM::RCREvent(): OptionHandler returned parse error!\n");
m_freem(packet);
CloseEvent();
return;
@@ -1658,7 +1549,7 @@ KPPPStateMachine::RCREvent(struct mbuf *packet)
if(result != B_OK) {
// the request contains a value that has been sent more than
// once or the value is corrupted
dprintf("KPPPSM::RCREvent(): OptionHandler returned append error!\n");
ERROR("KPPPSM::RCREvent():OptionHandler returned append error!\n");
m_freem(packet);
CloseEvent();
return;
@@ -1684,10 +1575,7 @@ KPPPStateMachine::RCREvent(struct mbuf *packet)
void
KPPPStateMachine::RXJEvent(struct mbuf *packet)
{
#if DEBUG
dprintf("KPPPSM: RXJEvent() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: RXJEvent() state=%d phase=%d\n", State(), Phase());
ppp_lcp_packet *reject = mtod(packet, ppp_lcp_packet*);
@@ -1754,7 +1642,7 @@ KPPPStateMachine::IllegalEvent(ppp_event event)
{
// TODO:
// update error statistics
dprintf("KPPPSM: IllegalEvent(event=%d) state=%d phase=%d\n",
ERROR("KPPPSM: IllegalEvent(event=%d) state=%d phase=%d\n",
event, State(), Phase());
}
@@ -1762,10 +1650,7 @@ KPPPStateMachine::IllegalEvent(ppp_event event)
void
KPPPStateMachine::ThisLayerUp()
{
#if DEBUG
dprintf("KPPPSM: ThisLayerUp() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: ThisLayerUp() state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
@@ -1787,10 +1672,7 @@ KPPPStateMachine::ThisLayerUp()
void
KPPPStateMachine::ThisLayerDown()
{
#if DEBUG
dprintf("KPPPSM: ThisLayerDown() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: ThisLayerDown() state=%d phase=%d\n", State(), Phase());
// KPPPProtocol::Down() should block if needed.
DownProtocols();
@@ -1800,10 +1682,7 @@ KPPPStateMachine::ThisLayerDown()
void
KPPPStateMachine::ThisLayerStarted()
{
#if DEBUG
dprintf("KPPPSM: ThisLayerStarted() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: ThisLayerStarted() state=%d phase=%d\n", State(), Phase());
if(Interface().Device() && !Interface().Device()->Up())
Interface().Device()->UpFailedEvent();
@@ -1813,10 +1692,7 @@ KPPPStateMachine::ThisLayerStarted()
void
KPPPStateMachine::ThisLayerFinished()
{
#if DEBUG
dprintf("KPPPSM: ThisLayerFinished() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: ThisLayerFinished() state=%d phase=%d\n", State(), Phase());
if(Interface().Device())
Interface().Device()->Down();
@@ -1844,10 +1720,7 @@ KPPPStateMachine::ZeroRestartCount()
bool
KPPPStateMachine::SendConfigureRequest()
{
#if DEBUG
dprintf("KPPPSM: SendConfigureRequest() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: SendConfigureRequest() state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
--fRequestCounter;
@@ -1874,10 +1747,7 @@ KPPPStateMachine::SendConfigureRequest()
bool
KPPPStateMachine::SendConfigureAck(struct mbuf *packet)
{
#if DEBUG
dprintf("KPPPSM: SendConfigureAck() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: SendConfigureAck() state=%d phase=%d\n", State(), Phase());
if(!packet)
return false;
@@ -1901,10 +1771,7 @@ KPPPStateMachine::SendConfigureAck(struct mbuf *packet)
bool
KPPPStateMachine::SendConfigureNak(struct mbuf *packet)
{
#if DEBUG
dprintf("KPPPSM: SendConfigureNak() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: SendConfigureNak() state=%d phase=%d\n", State(), Phase());
if(!packet)
return false;
@@ -1925,10 +1792,7 @@ KPPPStateMachine::SendConfigureNak(struct mbuf *packet)
bool
KPPPStateMachine::SendTerminateRequest()
{
#if DEBUG
dprintf("KPPPSM: SendTerminateRequest() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: SendTerminateRequest() state=%d phase=%d\n", State(), Phase());
LockerHelper locker(fLock);
--fTerminateCounter;
@@ -1956,10 +1820,7 @@ KPPPStateMachine::SendTerminateRequest()
bool
KPPPStateMachine::SendTerminateAck(struct mbuf *request = NULL)
{
#if DEBUG
dprintf("KPPPSM: SendTerminateAck() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: SendTerminateAck() state=%d phase=%d\n", State(), Phase());
struct mbuf *reply = request;
@@ -1988,10 +1849,8 @@ KPPPStateMachine::SendTerminateAck(struct mbuf *request = NULL)
bool
KPPPStateMachine::SendCodeReject(struct mbuf *packet, uint16 protocolNumber, uint8 code)
{
#if DEBUG
dprintf("KPPPSM: SendCodeReject(protocolNumber=%X;code=%d) state=%d phase=%d\n",
TRACE("KPPPSM: SendCodeReject(protocolNumber=%X;code=%d) state=%d phase=%d\n",
protocolNumber, code, State(), Phase());
#endif
if(!packet)
return false;
@@ -2035,10 +1894,7 @@ KPPPStateMachine::SendCodeReject(struct mbuf *packet, uint16 protocolNumber, uin
bool
KPPPStateMachine::SendEchoReply(struct mbuf *request)
{
#if DEBUG
dprintf("KPPPSM: SendEchoReply() state=%d phase=%d\n",
State(), Phase());
#endif
TRACE("KPPPSM: SendEchoReply() state=%d phase=%d\n", State(), Phase());
if(!request)
return false;
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
#include <OS.h>
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
#include "_KPPPAuthenticationHandler.h"
@@ -99,9 +97,7 @@ _KPPPAuthenticationHandler::AddToRequest(KPPPConfigurePacket& request)
// this could omit some authenticators when we get a suggestion, but that is
// no problem because the suggested authenticator will be accepted (hopefully)
#if DEBUG
dprintf("KPPPAuthHandler: AddToRequest(%X)\n", authenticator->ProtocolNumber());
#endif
TRACE("KPPPAuthHandler: AddToRequest(%X)\n", authenticator->ProtocolNumber());
authenticator->SetEnabled(true);
return authenticator->OptionHandler()->AddToRequest(request);
@@ -193,9 +189,7 @@ _KPPPAuthenticationHandler::ParseRequest(const KPPPConfigurePacket& request,
return B_OK;
// no authentication requested by peer (index > request.CountItems())
#if DEBUG
dprintf("KPPPAuthHandler: ParseRequest(%X)\n", ntohs(item->protocolNumber));
#endif
TRACE("KPPPAuthHandler: ParseRequest(%X)\n", ntohs(item->protocolNumber));
// try to find the requested protocol
fLocalAuthenticator = Interface().ProtocolFor(ntohs(item->protocolNumber));
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
#ifndef __K_PPP_AUTHENTICATION_HANDLER__H
#define __K_PPP_AUTHENTICATION_HANDLER__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
#include "_KPPPMRUHandler.h"
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
#ifndef __K_PPP_MRU_HANDLER__H
#define __K_PPP_MRU_HANDLER__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
#include "_KPPPPFCHandler.h"
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
#ifndef __K_PPP_PFC_HANDLER__H
#define __K_PPP_PFC_HANDLER__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Haiku Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _K_PPP__H
#define _K_PPP__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Haiku Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _K_PPP_CONFIGURE_PACKET__H
#define _K_PPP_CONFIGURE_PACKET__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Haiku Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _K_PPP_DEFS__H
#define _K_PPP_DEFS__H
@@ -12,6 +10,15 @@
#include <PPPDefs.h>
// debugging macros
#define ERROR(format, args...) dprintf(format, ## args)
#ifdef DEBUG
#define TRACE(format, args...) dprintf(format, ## args)
#else
#define TRACE(format, args...)
#endif
extern struct core_module_info *core;
// needed by core quick-access function defines
@@ -19,6 +26,8 @@ extern struct core_module_info *core;
// various constants
#define PPP_PULSE_RATE 500000
//!< Rate at which Pulse() is called (in microseconds).
#define PPP_RESPONSE_TEST_CODE '_3PT'
// private code used to test if ppp_up did not crash
//! Module key types used when loading a module.
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Haiku Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _K_PPP_DEVICE__H
#define _K_PPP_DEVICE__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Haiku Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _K_PPP_INTERFACE__H
#define _K_PPP_INTERFACE__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Haiku Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _K_PPP_LCP__H
#define _K_PPP_LCP__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Haiku Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef __K_PPP_LCP_EXTENSION__H
#define __K_PPP_LCP_EXTENSION__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Haiku Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _K_PPP_LAYER__H
#define _K_PPP_LAYER__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Haiku Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _K_PPP_MANAGER__H
#define _K_PPP_MANAGER__H
@@ -20,11 +18,15 @@
class KPPPInterface;
//! Private structure used by PPP interface manager.
//! Private structure shared by PPP manager and KPPPInterface.
typedef struct ppp_interface_entry {
char *name;
KPPPInterface *interface;
vint32 accessing;
bool deleting;
// ppp_up communication
thread_id requestThread;
} ppp_interface_entry;
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Haiku Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _K_PPP_MODULE__H
#define _K_PPP_MODULE__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Haiku Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _K_PPP_OPTION_HANDLER__H
#define _K_PPP_OPTION_HANDLER__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Haiku Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _K_PPP_PROFILE__H
#define _K_PPP_PROFILE__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Haiku Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _K_PPP_PROTOCOL__H
#define _K_PPP_PROTOCOL__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Haiku Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _K_PPP_REPORT_MANAGER__H
#define _K_PPP_REPORT_MANAGER__H
@@ -16,10 +14,6 @@
#include <TemplateList.h>
//! Sends a reply to the report message sender.
#define PPP_REPLY(sender, value) \
send_data_with_timeout((sender), (value), NULL, 0, PPP_REPORT_TIMEOUT)
class KPPPReportManager {
public:
KPPPReportManager(BLocker& lock);
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Haiku Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _K_PPP_STATE_MACHINE__H
#define _K_PPP_STATE_MACHINE__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Haiku Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _K_PPP_UTILS__H
#define _K_PPP_UTILS__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
/*! \class LockerHelper
\brief Helper class for automatically releasing a lock.
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Haiku Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _PPP_CONTROL__H
#define _PPP_CONTROL__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Haiku Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _PPP_DEFS__H
#define _PPP_DEFS__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Haiku Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _PPP_REPORT_DEFS__H
#define _PPP_REPORT_DEFS__H
@@ -18,6 +16,13 @@
#define PPP_REPORT_CODE '_3PR'
// the code of receive_data() must have this value
//! Sends a reply to the report message sender.
#define PPP_REPLY(sender, value) \
send_data_with_timeout((sender), (value), NULL, 0, PPP_REPORT_TIMEOUT)
#define PPP_OK_DISABLE_REPORTS 'OKDR'
// additional reply code (B_OK should be used)
//! Report flags.
enum ppp_report_flags {
PPP_WAIT_FOR_REPLY = 0x01,
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
#ifndef _SETTINGS_TOOLS__H
#define _SETTINGS_TOOLS__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
#include <KPPPDefs.h>
#include <driver_settings.h>
@@ -10,6 +10,7 @@ StaticLibrary ppp :
strlcat.c
driver_settings.c
settings_tools.cpp
KPPPUtils.cpp
_libppputils.cpp
PPPInterface.cpp
@@ -20,3 +21,4 @@ StaticLibrary ppp :
SEARCH on [ FGristFiles strlcat.c ] = [ FDirName $(OBOS_TOP) src kernel libroot posix string ] ;
SEARCH on [ FGristFiles driver_settings.c ] = [ FDirName $(OBOS_TOP) src kernel libroot os ] ;
SEARCH on [ FGristFiles settings_tools.cpp ] = [ FDirName $(OBOS_TOP) src add-ons kernel network ppp shared libkernelppp ] ;
SEARCH on [ FGristFiles KPPPUtils.cpp ] = [ FDirName $(OBOS_TOP) src add-ons kernel network ppp shared libkernelppp ] ;
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
/*! \class PPPInterface
\brief This class represents a PPP interface living in kernel space.
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
/*! \class PPPInterfaceListener
\brief This class simplifies the process of monitoring PPP interfaces.
@@ -29,6 +27,7 @@
#include <Messenger.h>
#include <Handler.h>
#include <LockerHelper.h>
#include <KPPPUtils.h>
static const uint32 kReportFlags = PPP_WAIT_FOR_REPLY | PPP_NO_REPLY_TIMEOUT
@@ -92,9 +91,9 @@ PPPInterfaceListenerThread::Run()
BHandler *noHandler = NULL;
// needed to tell compiler which version of SendMessage we want
if(messenger.SendMessage(&message, noHandler, 100000) != B_OK)
send_data(sender, B_OK, NULL, 0);
PPP_REPLY(sender, B_OK);
} else
send_data(sender, B_OK, NULL, 0);
PPP_REPLY(sender, B_OK);
}
return B_OK;
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
/*! \class PPPManager
\brief Allows controlling the PPP stack.
@@ -134,12 +132,13 @@ PPPManager::CreateInterface(const driver_settings *settings,
/*! \brief Creates an interface with the given name and profile.
Every PPP interface has a profile. By it looks if the pppidf/profile folder
contains a profile with the interface's name. Otherwise the interface's settings
become its profile. This has the advantage that you can put the profile and the
settings into the same file which simplifies your PPP configuration if you edit
your PPP interface definitions by hand. In this case PAP, for example, would
still find the username and password although you specify them in the same
If the interface already exists its ID will be returned.
Every PPP interface has a profile. By default it checks if the pppidf/profile
folder contains a profile with the interface's name. Otherwise the interface's
settings become its profile. This has the advantage that you can put the profile
and the settings into the same file which simplifies your PPP configuration if
you edit your PPP interface definitions by hand. In this case PAP, for example,
would still find the username and password although you specify them in the same
parameter that loads the PAP module.
\param name The PPP interface description file's name.
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//---------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
#include <OS.h>
#include "_libppputils.h"
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//---------------------------------------------------------------------
/*
* Copyright 2003-2004, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
#ifndef __libppputils__h
#define __libppputils__h
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Haiku Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _PPP_INTERFACE__H
#define _PPP_INTERFACE__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Haiku Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _PPP_INTERFACE_LISTENER__H
#define _PPP_INTERFACE_LISTENER__H
@@ -1,9 +1,7 @@
//-----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//
// Copyright (c) 2003-2004 Waldemar Kornewald, [email protected]
//-----------------------------------------------------------------------
/*
* Copyright 2003-2004, Haiku Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _PPP_MANAGER__H
#define _PPP_MANAGER__H