IPCP: changed route initialization a little bit. Still cannot remove default route correctly.
Renamed interface_id to ppp_interface_id.
Some minor changes.
Worked on libppp.a (userland PPP library).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6159 a95241bf-73f2-0310-859d-f6bbb57e9c96
I established a connection with PPPoE and pinged goole and osnews. Net+ loaded half of www.osnews.com but then crashed because of a bug in our DNS resolver.
There is one more bug to fix: our core stack module does not remove the routes when an interface is deleted.
Thus, there will always remain the route(s) from the last connection(s).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5910 a95241bf-73f2-0310-859d-f6bbb57e9c96
Fixed a warning in modem.
Fixed a small bug in IPCP.
Added empty PPPInterfaceListener class (needed for DialUpPreflet and Deskbar add-on).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5877 a95241bf-73f2-0310-859d-f6bbb57e9c96
Some minor changes.
Added TODO file to almost all modules.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5768 a95241bf-73f2-0310-859d-f6bbb57e9c96
IPCP: fixed setting of local and peer address (in_control).
Renamed some variables to comply with our style defs.
Fixed a dead-lock in ppp interface and libkernelppp.a.
TODO:
Unfortunately, our stack does not want to ping the remote host. :(
I do not know if this is my fault or a problem with our stack.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5487 a95241bf-73f2-0310-859d-f6bbb57e9c96
NOTE: To make PPP usable with the test suite I will need to use a shared memory area to be able to pass structures to the ppp module.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5443 a95241bf-73f2-0310-859d-f6bbb57e9c96
Most important:
Finished IPCP and PAP modules.
Both of them are untested at the moment.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5442 a95241bf-73f2-0310-859d-f6bbb57e9c96
You can now successfully (dis-)connect to(/from) a PPP server using the PPPoE device module.
To be useful we need the PAP and IPCP modules (in the works).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5276 a95241bf-73f2-0310-859d-f6bbb57e9c96
Also added header for PPPoE support in ethernet module.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5115 a95241bf-73f2-0310-859d-f6bbb57e9c96
The problem was that netdb.h defined a macro that always replaced h_errno with a function call so that libnet.so failed when res_query (and all other functions using h_errno, but this is where the bug occured for me) tried to assign a new value to h_errno which of course failed because it was actually assigned to the return value of _h_errnop().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5010 a95241bf-73f2-0310-859d-f6bbb57e9c96
PPPEncapsulator was removed. PPPProtocol is now a protocol and an encapsulator.
PPPDevice, PPPProtocol, and PPPInterface derive from PPPLayer. This base class simplifies the packet passing process and gives PPPDevice more flexibility as it now can add layers between itself and PPPInterface (which was not possible before). This feature will probably be used by the HDLC framing module.
Also, PPPProtocol will always send to the next layer which might either be another protocol, an encapsulator protocol, or the PPPInterface. No distinction is necessary anymore.
This all reduced the list template usage and made some methods simpler.
With this step I could reduce the size of the libkernelppp.a binary from >200K to 143K.
Now, I will go hunting bugs! :)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4928 a95241bf-73f2-0310-859d-f6bbb57e9c96
libkernelppp.a should be feature-complete now. As it is completely untested we could call it _very_ early alpha stage.
The next task will be to add an interface module for our netstack. Some ioctls will be handled by PPPInterface, so libkernelppp.a will be modified in the next few days/weeks to support these ioctls.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4767 a95241bf-73f2-0310-859d-f6bbb57e9c96
Fixed wrong definition of MRU.
Added the StackControl() method to all handlers (expect PPPDevice) and changed how the netstack ioctls are passed to the handlers.
Added a template for iterating over indexed lists (needed methods: CountItems() and ItemAt()). This simplified StackControlEachHandler() a little bit.
Some minor changes.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4673 a95241bf-73f2-0310-859d-f6bbb57e9c96
Added support for Protocol-Field-Compression including the needed handler.
Added initial support for ppp_manager's ioctl() function (currently, PPPInterface does not handle any ioctls). These calls are routed to all handlers, too (if PPPInterface did not handle the ioctl).
Changed naming of local states and report codes (authentication, etc.). These now have "Local"/"LOCAL" in their name.
Some minor changes.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4672 a95241bf-73f2-0310-859d-f6bbb57e9c96
Fixed missing ifnet flags.
PPPStateMachine: replaced nearly all pointers to PPPInterface objects with references.
PPPInterface: added delay to Redial() method (will be used to implement DialRetryDelay, too).
PPPLCP: changed the way Receive() handles LCPExtensions and added code for removing padding from packet.
PPPOptionHandler: added code and only one OptionHandler per code is allowed from now on.
Added some changes to support authenticators.
TODO:
- add DialRetryDelay
- maybe change how StateMachine iterates over OptionHandlers (as they have a code field now)
- commit changes for PFC support and PFC, MRU, and authentication handler
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4661 a95241bf-73f2-0310-859d-f6bbb57e9c96
Added Control() op codes for report enabling/disabling.
Fixed memory leaks in StateMachine and LCP (packets were not freed).
Some minor changes.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4514 a95241bf-73f2-0310-859d-f6bbb57e9c96
Added some control/ioctl ops.
Moved KPPPUtils.h to headers.
Limited the name length of each handler to a maximum of 255 characters (not including the zero-byte).
Removed PPP_ACTION from (K)PPPDefs.h.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4502 a95241bf-73f2-0310-859d-f6bbb57e9c96
Replaced spawn_kernel_thread with spawn_thread (KernelExport.h will do the distinction between kernel mode and userland).
Changed PPPLCP::Send().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4468 a95241bf-73f2-0310-859d-f6bbb57e9c96
Fixed all warnings and errors (except from the one mentioned above).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4437 a95241bf-73f2-0310-859d-f6bbb57e9c96
TODO:
- implement Control() methods
- write an authentication option handler
- write an MRU option handler
I will need to write the jamfile...
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4415 a95241bf-73f2-0310-859d-f6bbb57e9c96
- PPPDevice
- PPPEncapsulator
- PPPOptionHandler
- PPPProtocol
Added SendCodeReject implementation (though, I am not sure if it really works because I am not familiar with mbufs).
Fixed some bugs.
Changed the manager interface (there are no pointers to classes anymore).
Some minor changes.
TODO for libkernelppp.a:
- finish PPPLCP
- finish PPPConfigurePacket
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4400 a95241bf-73f2-0310-859d-f6bbb57e9c96
Added a new case when to destroy interface (when Up() failes and DialOnDemand is disabled).
Forgot some to remove fUpThread in Up().
Changed UpFailedEvent() so that it pretends a connection-lost event (so we can try to redial).
Added ResetOptionHandlers() and DownProtocols/Encapsulators().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4351 a95241bf-73f2-0310-859d-f6bbb57e9c96
Started to get familiar with the code, again. ;)
Some _very_ small work on Up().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4305 a95241bf-73f2-0310-859d-f6bbb57e9c96
Added checking for sender to report system.
Worked on StateMachine and added cases where the interface should be deleted.
Added some flags (report and protocol) and report codes.
Started implementing Up().
Some minor changes (comments, multilink).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4108 a95241bf-73f2-0310-859d-f6bbb57e9c96
Unfortunately I need threads for this (because reports will be used in Up()/Down() and always creating a reply port is not very nice).
Does anyone have a good send/receive_data_etc() implementation? :) I hope our kernel will get that functionality.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4085 a95241bf-73f2-0310-859d-f6bbb57e9c96
Event/action code should be finished soon.
TODO for libkernelppp.a:
- reports
- redial
- PPPInterface::Up()/Down()
- all other classes (not very much work)
- LCP protocol
- MRU and protocol-field-compression (needs some addition to PPPInterface, too) option handlers
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4071 a95241bf-73f2-0310-859d-f6bbb57e9c96
StateMachine now waits until all protocols/encapsulators have finished going up before entering next phase.
Added StateMachine methods to support main interfaces (multilink).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4055 a95241bf-73f2-0310-859d-f6bbb57e9c96
Added some more events.
Added UpRequested methods to protocols/encapsulators.
Worked on actions and events. Also added some checks.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4054 a95241bf-73f2-0310-859d-f6bbb57e9c96
Added some initial code to get general (as far as possible) multilink support (the modules must be aware of whether they belong to the device or to the bundle).
PPPDevice now reports speed and number of bytes in the output queue.
Removed PPP_CTOR_DTOR_PHASE. Modules can be loaded in PPP_DOWN_PHASE.
Worked on events and actions.
Some minor changes/fixes.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4008 a95241bf-73f2-0310-859d-f6bbb57e9c96
Added lcp_packet structure.
Changed reference style.
Changed some names.
Added general events.
Completed most events.
Copy constructors and assign operators are now private (just to be on the safe side ;).
SendToDevice() now checks if the packet is small enough.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3930 a95241bf-73f2-0310-859d-f6bbb57e9c96
Still far from being complete.
Comments are welcome.
In brief: Stack will be modular and written in C++.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3875 a95241bf-73f2-0310-859d-f6bbb57e9c96