From 0a628cf2fcff598a48c9b5f411da8d3f423203c6 Mon Sep 17 00:00:00 2001 From: Waldemar Kornewald Date: Thu, 15 Apr 2004 16:05:40 +0000 Subject: [PATCH] Nothing special. Just bringing the cvs version up-to-date with my private version. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7206 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/net/Jamfile | 26 ++++++++++++++- src/servers/net/NetServer.cpp | 3 +- src/servers/net/PPPServer.cpp | 61 +++++++++++++++++++++++++++++++++-- src/servers/net/PPPServer.h | 8 +++++ 4 files changed, 93 insertions(+), 5 deletions(-) diff --git a/src/servers/net/Jamfile b/src/servers/net/Jamfile index c4b008a3f3..fd4436ff81 100644 --- a/src/servers/net/Jamfile +++ b/src/servers/net/Jamfile @@ -2,6 +2,18 @@ SubDir OBOS_TOP src servers net ; UsePrivateHeaders net ; +# additonal headers for built-in add-ons: +UsePrivateHeaders net ; +UseHeaders [ FDirName $(OBOS_TOP) src add-ons kernel network ppp shared libppp headers ] ; +UseHeaders [ FDirName $(OBOS_TOP) src add-ons kernel network ppp shared libkernelppp headers ] ; +UseHeaders [ FDirName $(OBOS_TOP) src tests kits net DialUpPreflet ] ; +UseHeaders [ FDirName $(OBOS_TOP) src add-ons kernel network ppp pppoe ] ; # PPPoE +UseHeaders [ FDirName $(OBOS_TOP) src add-ons kernel network ppp ipcp ] ; # IPCP + +# additional sources for built-in add-ons: +SEARCH_SOURCE += [ FDirName $(OBOS_TOP) src tests kits net DialUpPreflet ] ; + + Server net_server : NetServer.cpp @@ -11,6 +23,16 @@ Server net_server : # built-in add-ons PPPServer.cpp + # PPPServer needs this + DialUpView.cpp + InterfaceUtils.cpp + MessageDriverSettingsUtils.cpp + TextRequestDialog.cpp + ConnectionOptionsAddon.cpp + GeneralAddon.cpp + IPCPAddon.cpp + PPPoEAddon.cpp + # old net_server (was a netstack tester app) # userland_server.c # userland_ipc.c @@ -18,5 +40,7 @@ Server net_server : LinkSharedOSLibs net_server : be - net + socket + bind + libppp.a ; diff --git a/src/servers/net/NetServer.cpp b/src/servers/net/NetServer.cpp index a0af732787..525ff0e8e5 100644 --- a/src/servers/net/NetServer.cpp +++ b/src/servers/net/NetServer.cpp @@ -5,11 +5,12 @@ // Copyright (c) 2004 Waldemar Kornewald, Waldemar.Kornewald@web.de //----------------------------------------------------------------------- +#include "NetServer.h" #include #include -static const char *kSignature = "application/x-obos.net_server"; +static const char *kSignature = NET_SERVER_SIGNATURE; class NetServerApplication : public BApplication { diff --git a/src/servers/net/PPPServer.cpp b/src/servers/net/PPPServer.cpp index 7770fcc870..dc807e0208 100644 --- a/src/servers/net/PPPServer.cpp +++ b/src/servers/net/PPPServer.cpp @@ -23,13 +23,18 @@ PPPServer::PPPServer() be_app->AddHandler(this); fFilter = new SimpleMessageFilter(kPPPWhatValues, this); be_app->AddCommonFilter(fFilter); + fListener = new PPPInterfaceListener(this); + fListener->WatchAllInterfaces(); + + InitInterfaces(); } PPPServer::~PPPServer() { - be_app->RemoveHandler(this); + delete fListener; be_app->RemoveCommonFilter(fFilter); + be_app->RemoveHandler(this); delete fFilter; } @@ -38,11 +43,61 @@ void PPPServer::MessageReceived(BMessage *message) { switch(message->what) { - // TODO: handle PPP stack messages + case PPP_REPORT_MESSAGE: + HandleReportMessage(message); + break; - // TODO: handle requests from DialUpPreflet + // TODO: handle default: BHandler::MessageReceived(message); } } + + +void +PPPServer::InitInterfaces() +{ +} + + +bool +PPPServer::AskBeforeDialing(ppp_interface_id id) +{ + return false; +} + + +void +PPPServer::HandleReportMessage(BMessage *message) +{ + thread_id sender; + message->FindInt32("sender", &sender); + + ppp_interface_id id; + if(message->FindInt32("interface", reinterpret_cast(&id)) != B_OK) { + send_data(sender, B_OK, NULL, 0); + return; + } + + int32 type, code; + message->FindInt32("type", &type); + message->FindInt32("code", &code); + + if(type == PPP_MANAGER_REPORT && code == PPP_REPORT_INTERFACE_CREATED) { + // TODO: check if we need to add this interface to our watch-list + } else if(type == PPP_CONNECTION_REPORT) { + switch(code) { + case PPP_REPORT_GOING_UP: { + if(AskBeforeDialing(id)) { +// OpenDialRequestWindow(id, sender); + return; + } + } break; + } + } else if(type == PPP_DESTRUCTION_REPORT) { + // TODO: check if this interface has DOD enabled. if so: create new! + } + + send_data(sender, B_OK, NULL, 0); +} diff --git a/src/servers/net/PPPServer.h b/src/servers/net/PPPServer.h index ff11d76a75..382cd922cd 100644 --- a/src/servers/net/PPPServer.h +++ b/src/servers/net/PPPServer.h @@ -9,6 +9,7 @@ #define _PPP_SERVER__H #include +#include class SimpleMessageFilter; @@ -21,8 +22,15 @@ class PPPServer : public BHandler { virtual void MessageReceived(BMessage *message); // the SimpleMessageFilter routes ppp_server messages to this handler + private: + void InitInterfaces(); + bool AskBeforeDialing(ppp_interface_id id); + + void HandleReportMessage(BMessage *message); + private: SimpleMessageFilter *fFilter; + PPPInterfaceListener *fListener; };