Commit Graph

642 Commits

Author SHA1 Message Date
Denis Kenzior d7c0640412 ppp: Tweak set_server_info API some more 2010-06-29 11:49:40 -05:00
Denis Kenzior 295270b4be hdlc: Stop recording packets to stdout (fd = 0) 2010-06-29 11:46:40 -05:00
Denis Kenzior aca0fdf87f hdlc: Don't bother recording empty packets 2010-06-29 11:46:20 -05:00
Zhenhua Zhang 1afd51a8c7 gsmdial: Configure network interface for PPP 2010-06-28 17:39:23 -05:00
Zhenhua Zhang 0725aba03f test-server: Configure network interface
Require ROOT priviledge to:
1. Run external command to configure and bring up network interface.
2. Enable kernel IP forwarding.
2010-06-28 17:39:18 -05:00
Denis Kenzior 90d240820b ppp: Tweak the set_server_info API 2010-06-28 17:38:54 -05:00
Zhenhua Zhang b6601bfeed test-server: Add PPP server support
So that gsmdial and wvdial could talk to test-server and establish PPP
connection.
2010-06-28 16:37:20 -05:00
Denis Kenzior ae24477801 ppp: Refactor server RCR action
We need to generate the Conf-Rej / Conf-Nak in the same order as the
client sent us.
2010-06-28 15:58:03 -05:00
Denis Kenzior c5c7a229d2 ppp: Refactor client RCR action 2010-06-28 15:30:15 -05:00
Denis Kenzior d5c963f5d8 ppp: Simplify the logic by re-using code 2010-06-28 11:15:44 -05:00
Denis Kenzior cff81df606 ppp: Minor style tweaks 2010-06-28 10:21:33 -05:00
Zhenhua Zhang 8be0707ab0 gsmdial: Update to the new API 2010-06-28 10:19:14 -05:00
Zhenhua Zhang 588db02354 gatppp: Add PPP server extension
1. Add interface to set PPP server info by g_at_ppp_set_server_info.
2. Pass local and peer address through IPCP handshaking.
2010-06-28 10:17:58 -05:00
Zhenhua Zhang 28b2c32dc7 ppp: Fix incorrect packet length for little-endian
packet->length is in TCP/IP network byte order. It needs to call ntohs()
to convert to host byte order, which is little-endian.
2010-06-23 16:45:28 -05:00
Zhenhua Zhang 9f180fc27a ppp: Fix leak in pppcp_send_protocol_reject
Free the reject pppcp packet after ppp_transmit.
2010-06-21 09:19:55 -05:00
Denis Kenzior ab76f57cf9 gathdlc: Don't crash if unreffed in callback 2010-06-18 12:23:10 -05:00
Zhenhua Zhang e2e17512e0 gsmdial: Unref ppp when we get disconnected 2010-06-17 14:57:49 -05:00
Zhenhua Zhang 199582f684 test-server: Fix GIOChannel leak in create_tty
Remove client_io and unref server_io after creating GAtServer.
2010-06-17 14:54:42 -05:00
Zhenhua Zhang 1822deba4a gatserver: Check for disconnection when resuming
If the internal GAtIO is no longer valid, treat it as if our channel was
disconnected.
2010-06-17 14:38:53 -05:00
Zhenhua Zhang 047ea0cebb gatserver: Suspend/resume GAtServer with GAtIO
Support g_at_server_suspend and g_at_server_resume operation by using
GAtIO to handle IO related function.
2010-06-17 14:38:23 -05:00
Denis Kenzior 48c3c4268c gatppp: whitespace issues 2010-06-11 09:20:05 -05:00
Denis Kenzior a0eafc269e gatppp: Unref HDLC when unrefing PPP 2010-06-11 09:20:05 -05:00
Denis Kenzior 75e6a4707b gathdlc: Free the main HDLC structure on unref 2010-06-11 09:20:05 -05:00
Denis Kenzior 719842ea39 gatchat: Check for disconnection when resuming
If the internal GAtIO is no longer valid, treat it as if our channel was
disconnected.
2010-06-07 19:32:26 -05:00
Marcel Holtmann 6178173160 Restore GAtChat disconnect handling when resuming a chat session 2010-06-07 02:18:39 -07:00
Denis Kenzior 1803f00c6e ppp: Trivial whitespace error 2010-05-19 05:26:21 -05:00
Kristen Carlson Accardi 3fff4c49c8 ppp: implement ppp_packet_new 2010-05-19 02:58:45 -05:00
Kristen Carlson Accardi 41188e326a ppp: fix another hardcode of ppp_packet size 2010-05-11 09:26:08 -05:00
Denis Kenzior 1794ad32fd gsmdial: Shut down cleanly when ppp link dies 2010-05-10 16:36:33 -05:00
Denis Kenzior 3946d7e07c ppp: Keep these defines private 2010-05-10 16:28:23 -05:00
Kristen Carlson Accardi 125fc62526 ppp: set address and control field
Before sending to hdlc, set the address and control field.
Fix hardcode of ppp header size.
2010-05-10 16:27:15 -05:00
Kristen Carlson Accardi f13d5e2bad gsmdial: use g_at_ppp_new_from_io() 2010-05-10 15:41:39 -05:00
Kristen Carlson Accardi 72c38f7adb gatchat: implement g_at_chat_get_io() 2010-05-10 15:41:39 -05:00
Kristen Carlson Accardi cb36130b13 gsmdial: use g_at_chat_suspend 2010-05-10 15:41:39 -05:00
Kristen Carlson Accardi 2d8a1462db ppp: transition to dead when lcp finished
Transition to DEAD when lcp is finished and ignore any io
disconnects if we are already dead.
2010-05-10 15:29:44 -05:00
Denis Kenzior 02c2cdaf21 gsmdial: Port to new PPP api 2010-04-30 15:32:45 -05:00
Denis Kenzior 6d20194e75 ppp: Refactor connect / disconnect callbacks
Right now it is very hard to figure out whether we should be calling the
connect callback or the disconnect callback.  So refactor as follows:
	- Connect callback is only called once the net is actually up
	- Disconnect callback is called once ppp is down, with a reason
	  for why it is so.
2010-04-30 15:31:26 -05:00
Denis Kenzior 9ae0dcb47d ppp: get rid of ppp_enter_phase
This function simply didn't have the context of why the phase was being
entered.  Instead have each protocol notify GAtPPP as to what is
happening.  We already had this more or less for IPCP and AUTH events,
this just now formalizes it for LCP as well.
2010-04-30 14:37:17 -05:00
Denis Kenzior c7ef06f91e ppp: Add _from_io constructor 2010-04-30 10:52:16 -05:00
Kristen Carlson Accardi 5ef90f934b ppp: fix return of drop_packet for NETWORK phase 2010-04-29 18:49:16 -05:00
Denis Kenzior 95e0a15010 gathdlc: Add from_io constructor 2010-04-29 18:49:16 -05:00
Kristen Carlson Accardi 7d59d7a377 ppp: silently drop invalid packets 2010-04-29 14:40:20 -05:00
Kristen Carlson Accardi 9d5eb5110f ppp: transition to dead when read io destroyed
remove call to signal_close for lcp object, it is redundent.  If
our io is destroyed we are dead, so transition the ppp phase to
DEAD so our disconnect callback can be called.
2010-04-29 14:24:47 -05:00
Denis Kenzior c9edf56fc6 ppp: Hang set_recording off the GAtPPP object
Marcel: recording right now only works for PPP, so we'd need some sort
of multi-protocol support.

So for now expose set_recording to be used through the main PPP object.
HDLC object recording support needs to be extended.
2010-04-28 20:25:10 -05:00
Denis Kenzior fb8ca665dd ppp: Re-add capability to detect io down events 2010-04-28 17:27:36 -05:00
Denis Kenzior 378f3c61e3 gathdlc: Add accessor for GAtIO 2010-04-28 17:27:36 -05:00
Denis Kenzior 3b98ed067a gathdlc: Port GAtHDLC to use GAtIO 2010-04-28 17:27:36 -05:00
Denis Kenzior d271216112 ppp: Don't crash if the interface wasn't created 2010-04-28 17:27:36 -05:00
Denis Kenzior db0b7c8a98 ppp: Accept 1500 byte MTUs 2010-04-28 17:27:36 -05:00
Denis Kenzior 7d5a3730d1 gsmdial: Use set recording on the HDLC object 2010-04-28 17:27:36 -05:00
Denis Kenzior ed15727b98 ppp: Add getter for HDLC object 2010-04-28 17:27:36 -05:00
Denis Kenzior 4cdf49f0de ppp: Initial port of PPP to use GAtHDLC 2010-04-28 17:27:35 -05:00
Denis Kenzior fa8614cc78 ppp: Make pppcp functions const correct 2010-04-28 17:27:35 -05:00
Denis Kenzior 87340d64e2 ppp: Make ppp_chap_process_packet const correct 2010-04-28 17:27:35 -05:00
Denis Kenzior 955673573b ppp: Make ppp_net_process_packet const correct 2010-04-28 17:27:35 -05:00
Denis Kenzior 5acb633a1d gathdlc: Add recording support, ported from PPP
For protocol examination using wireshark
2010-04-28 17:27:35 -05:00
Denis Kenzior 41ce6212a1 gathdlc: Add receive ACCM support 2010-04-28 17:27:35 -05:00
Denis Kenzior 7c6c72f558 gathdlc: Support transmit ACCM 2010-04-28 17:27:35 -05:00
Denis Kenzior e088f3c2bb gatchat: Don't try to cleanup twice
In case we get unrefed from the disconnect callback
2010-04-28 17:27:35 -05:00
Denis Kenzior 0845dc3b5d gatchat: Use GAtIO for write watchers 2010-04-28 17:27:34 -05:00
Denis Kenzior 6a66505e46 gatio: support for blocking / nonblocking writes 2010-04-28 17:27:34 -05:00
Denis Kenzior 85448aac8c gatchat: get_channel should return one from GAtIO 2010-04-28 17:27:34 -05:00
Denis Kenzior 19115e0a15 gatchat: Channel is now setup by GAtIO 2010-04-28 17:27:34 -05:00
Denis Kenzior 033b576593 gatchat: Better re-entrancy handling 2010-04-28 17:27:34 -05:00
Denis Kenzior 9c3ae4746e gsmdial: Get rid of g_at_chat_shutdown usage 2010-04-28 17:27:34 -05:00
Denis Kenzior d875298404 gsmdial: Unref the chat instead of using shutdown 2010-04-28 17:27:34 -05:00
Denis Kenzior 8645b05c4f gatmux: Unref the chat instead of using shutdown 2010-04-28 17:27:34 -05:00
Denis Kenzior f9b2e5cf5a gatchat: Only set debug on IO if we have it 2010-04-28 17:27:33 -05:00
Denis Kenzior 3aa1faddef gatchat: Replace shutdown by suspend/resume
Shutdown was actually pointless and according to Marcel he only had it
in mind for PPP useage.
2010-04-28 17:27:33 -05:00
Denis Kenzior 7b8f4f5dc8 gatchat: port gatchat to use gatio 2010-04-28 17:27:33 -05:00
Denis Kenzior 43c30e2292 gatio: Remove g_at_io_shutdown 2010-04-28 17:27:33 -05:00
Denis Kenzior 204814da05 gatio: Get re-entrancy correct 2010-04-28 17:27:32 -05:00
Denis Kenzior c614254ae9 gatio: Style fix for gsource id comparisons 2010-04-28 17:27:32 -05:00
Denis Kenzior 2d2bc8b5b3 gatio: Kill the reader when no more space 2010-04-28 17:27:32 -05:00
Denis Kenzior f09ce13ad7 gatchat: Remove g_at_chat_set_syntax
Never used and too unsafe in its current form
2010-04-28 17:27:32 -05:00
Denis Kenzior 5fc7c1e1d0 gatchat: Add initial GAtIO implementation 2010-04-28 17:27:32 -05:00
Kristen Carlson Accardi a9c0be7339 ppp: use default ACCM when sending LCP codes 1-7
According to the spec, you must transmit all Link Configuration,
Termination, and Code-Reject packets as if no options had been
negotiated.  This requires that when encoding we use the
default ACCM of 0xffffffff when sending these types of packets.
2010-04-26 15:31:17 -05:00
Kristen Carlson Accardi fce78feb54 ppp: discard non-LCP packets in ESTABLISHMENT phase 2010-04-26 12:38:31 -05:00
Marcel Holtmann cc1975270c Fix broken HDLC flag handling 2010-04-24 19:12:30 +02:00
Marcel Holtmann 057bd9f0b3 Fix wrong escape character check in HDLC transmit 2010-04-24 19:02:04 +02:00
Marcel Holtmann 46839fbd15 Allow real wrapping around of HDLC transmit ring buffer 2010-04-24 19:00:54 +02:00
Marcel Holtmann 8f05535bb2 Add offset parameter to ring_buffer_write_ptr() function 2010-04-24 18:59:44 +02:00
Marcel Holtmann 9fd7d841c8 Add support for wrapping of HDLC transmit ring buffer 2010-04-24 18:54:34 +02:00
Marcel Holtmann d2c8f124e6 Use HDLC_FCS helper where possible 2010-04-23 17:22:56 +02:00
Marcel Holtmann 2a609f9054 Use HDLC constants instead of magic numbers 2010-04-23 17:21:49 +02:00
Marcel Holtmann a31870f542 Add support for wrapping of HDLC receive ring buffer 2010-04-23 17:18:30 +02:00
Denis Kenzior fa5e8cf56b ppp: Fix trivial style error 2010-04-22 17:58:29 -05:00
Kristen Carlson Accardi e98fb9a6bd ppp: change MTU on TUN device when MRU option received 2010-04-22 17:56:31 -05:00
Denis Kenzior fde23f113a ppp: Request MRU if we ever get NAKed with it
Huawei E160G hardware seems to NAK our configure request and suggest
that it will never send packets bigger than 1440 bytes.  Since we don't
particularly care (our receive ring buffer is 4K, so it can handle 2048
byte packets), we just re-send the Configure Request with the preferred
value.
2010-04-22 15:08:05 -05:00
Denis Kenzior 07280e1bff ppp: Fix trivial copy paste error 2010-04-22 15:07:42 -05:00
Denis Kenzior 226865272c ppp: Shut off IPCP when entering TERMINATING phase 2010-04-22 15:05:18 -05:00
Kristen Carlson Accardi 71775550fe ppp: implement MRU option
If the peer requests a MRU option, set the mtu for the network
phase.  When we are in link establishment phase, we should
continue to behave as if no option has been set and the peer
should use the default MRU.

This option is required for the Huawei E160G modem.
2010-04-22 07:00:40 +02:00
Marcel Holtmann 123b87de2c No to check for NULL pointers with g_free 2010-04-15 04:42:03 -07:00
Kristen Carlson Accardi 60643ee287 ppp: nak unknown auth protocol
If we are sent a Config-Request for an auth proto other than
CHAP with MD5, send a NAK.
2010-04-14 17:16:03 -05:00
Denis Kenzior 15d93ad0b9 Fix: GAtMux channels should return EAGAIN
GAtChat uses non-blocking semantics, so the GAtMux channels should
return the EAGAIN status to make GAtChat work properly.
2010-04-14 10:39:47 -05:00
Denis Kenzior c8aa645973 ppp: Refing the channel is actually not necessary
The read_watch and write_watches both take a ref
2010-04-13 15:57:07 -05:00
Denis Kenzior 8e15816ac1 Fix: Don't try to set channel flags if they're 0 2010-04-13 15:37:05 -05:00
Denis Kenzior c74e2ab189 ppp: TUN channel should not be opened NONBLOCKING
We don't handle it as a nonblocking channel and getting it right would
be a nightmare.
2010-04-13 15:35:55 -05:00
Denis Kenzior 7085818f23 ppp: Cleanup function definitions in ppp.h 2010-04-13 15:32:35 -05:00
Kristen Carlson Accardi b74a9342d2 ppp: remove pfc and acfc
We will not support pfc or acfc
2010-04-13 15:32:35 -05:00
Kristen Carlson Accardi 9c3631f24e ppp: remove references to magic number
We will not support loopback detection.
2010-04-13 15:32:35 -05:00
Denis Kenzior 0aaf98a354 ppp: Get rid of net_open and net_close
There really isn't a need for these now
2010-04-13 15:14:40 -05:00
Denis Kenzior 1d939052fc ppp: Introduce ppp_net_down_notify 2010-04-13 14:59:13 -05:00
Denis Kenzior d1d73a75fc ppp: Introduce ppp_net_up_notify and use it
This is slightly cleaner way than defining a weird callback function.
2010-04-13 14:55:10 -05:00
Denis Kenzior 6525826455 ppp: Hide ppp_net definition in ppp_net.c 2010-04-13 14:42:59 -05:00
Denis Kenzior 71ddfca269 ppp: Use chap functions directly, instead of auth 2010-04-13 14:21:16 -05:00
Denis Kenzior 18e5e26acb ppp: Remove auth_ functions from ppp_auth.c
These really serve no purpose right now as we use only CHAP.  So they
only take up space and make the code harder to read.  If we implement
1-3 auth protocols, then they're easier handled inside gatppp.c.  If we
have more, then a proper auth driver framework is required.
2010-04-13 14:21:16 -05:00
Denis Kenzior 42f6e8ec6e ppp: introduce ppp_auth_notify
This function will be notified whenever authentication has succeeded /
failed.  This can happen in the authentication phase or during the
network phase.  If auth fails, then we should proceed to the terminate
phase.
2010-04-13 14:21:16 -05:00
Denis Kenzior e21bb72df0 ppp: Add set / get password & username
Also refactor the set credentials function, we will be removing the auth
object shortly
2010-04-13 14:21:16 -05:00
Denis Kenzior fed99b9265 ppp: Transition the phase directly
Use of the generate event function, while more 'pure' with regard to how
the spec views transitions, actually makes code more difficult to read.

Instead use phase transitions directly inside gatppp.  This still bleeds
through a little into lcp code, and probably should be fixed in a better
way eventually.
2010-04-13 14:21:12 -05:00
Denis Kenzior 552db428ef ppp: Refactor how tls/tlu/tld/tlf are used
With the upper layer driving these, the special handling is no longer
required.
2010-04-13 14:00:01 -05:00
Denis Kenzior 9116b7e8f8 ppp: Let the upper layer handle open / up events
This removes the need for the layer_started functions in lcp and ipcp.
For LCP the link is always up unless the socket has been closed, and for
IPCP the link should be opened as soon as LCP is ready anyway.
2010-04-13 13:58:12 -05:00
Denis Kenzior 87939c2fcf Merge: make link 2010-04-13 13:57:03 -05:00
Denis Kenzior dbbaa3c416 ppp: Reset the options whenever the layer is down
So we can re-negotiate the options if the layer is opened again.
2010-04-13 13:34:12 -05:00
Denis Kenzior 8c1677713f ppp: Rename data to pppcp 2010-04-13 13:27:23 -05:00
Denis Kenzior 843db6f9a5 ppp: unref should mean a hard shutdown
This can happen when e.g. the modem is physically removed from the
system and it is not feasible to wait for the nice shutdown state to be
reached.
2010-04-13 12:03:32 -05:00
Denis Kenzior b916f189f5 ppp: Signal Down & Close when socket is closed 2010-04-13 12:03:32 -05:00
Denis Kenzior a661dd1583 ppp: Add pppcp_signal_down
For use when the link is abruptly terminated by the remote side
2010-04-13 12:03:32 -05:00
Denis Kenzior f5270cc9bd ppp: Use pppcp_signal functions directly
No real need to wrap them behind lcp_ functions
2010-04-13 12:03:32 -05:00
Denis Kenzior 36d15b4366 ppp: Keep track when read watcher dies 2010-04-13 12:03:32 -05:00
Denis Kenzior 79d81af431 ppp: Remove unused define 2010-04-13 12:03:32 -05:00
Denis Kenzior 6ac0025767 Fix: busy loop in atserver 2010-04-12 22:33:42 -05:00
Marcel Holtmann 7a27cc42fc Reindent the handler registration inside AT server 2010-04-12 18:13:02 -07:00
Marcel Holtmann f319e65b99 Use ppp_debug() for PPP CP event debug statements 2010-04-12 18:02:11 -07:00
Marcel Holtmann 143d6db7c3 Remove useless debug in PPP transmit destroy callback 2010-04-12 17:53:29 -07:00
Marcel Holtmann a977ecf260 Remove various GDestroyNotify function casting 2010-04-12 17:48:20 -07:00
Marcel Holtmann 5b229e60c9 The exit() function should always use positive exit values 2010-04-12 17:37:50 -07:00
Marcel Holtmann 0e178517ce Fix file descriptor leakage when closing PPP recording 2010-04-12 17:34:24 -07:00
Marcel Holtmann 313eb4f285 The AT+CGDATA command should return CONNECT on success 2010-04-12 16:36:06 -07:00
Marcel Holtmann 9fe2d4c88c Add fake support for AT+CGDATA and AT+CGDCONT inside AT server 2010-04-12 16:34:13 -07:00
Marcel Holtmann a21499ca01 Add basic support for emulating AT+CGATT inside AT server 2010-04-12 16:28:59 -07:00
Marcel Holtmann 4add05f4f0 Add basic support for emulating AT+CGREG inside AT server 2010-04-12 16:22:57 -07:00
Marcel Holtmann 5c1da8f6fc Add basic support for emulating AT+CREG inside AT server 2010-04-12 16:19:34 -07:00
Marcel Holtmann 156904535e Check for PIN after activating the modem 2010-04-11 18:23:24 +02:00
Marcel Holtmann 3187e46799 Reduce fake CFUN delay to 1 second to make testing simpler 2010-04-11 18:18:01 +02:00
Marcel Holtmann 4e16e48b24 Make CPIN handling of AT server a bit more compliant 2010-04-11 18:14:12 +02:00
Marcel Holtmann 0cafc1646c Add really simple COPS support to AT command server 2010-04-11 18:10:50 +02:00
Marcel Holtmann 2dab6bc3a6 The user data pointer variable should be called user_data 2010-04-11 17:42:40 +02:00
Marcel Holtmann 0b2014df05 Implement full CFUN handling for AT server 2010-04-11 17:36:34 +02:00
Marcel Holtmann 46e77907b3 Use a ring buffer for non-blocking HDLC output streams 2010-04-11 07:01:14 +02:00
Marcel Holtmann 6ddf874318 Add initial implementation for QCDM test utility 2010-04-10 15:13:23 +02:00
Marcel Holtmann 20b394e72b Add abstraction for HDLC stream handling 2010-04-10 15:11:46 +02:00
Marcel Holtmann a9c204effa Add utility helper for debugging binary blobs 2010-04-10 11:56:11 +02:00
Marcel Holtmann 4c76be6c0d Add generic receive function definition 2010-04-10 11:54:12 +02:00
Marcel Holtmann 017b4d3955 Check for PIN status to see details in debug output 2010-04-10 09:33:45 +02:00
Marcel Holtmann 8cd991b81f Add skeleton for QCDM test program 2010-04-10 01:33:47 +02:00
Marcel Holtmann 455884d86e Remove one empty line and add another one 2010-04-09 17:10:48 +02:00
Marcel Holtmann df9723db02 Move CRC-CCITT table and helper into separate file 2010-04-09 17:08:30 +02:00
Denis Kenzior a4921aef11 ppp: Trivial style fix
Be more explicit
2010-04-09 08:57:12 -05:00
Denis Kenzior 5a25fd6f11 ppp: Use flags not booleans for ipcp options 2010-04-09 08:55:16 -05:00
Denis Kenzior c26447d922 ppp: Use flags instead of booleans for lcp options 2010-04-09 08:44:29 -05:00
Denis Kenzior 8f5459ffbc ppp: Stop the timer when re-starting
In case we receive NAK/REJ we should stop and re-start the timer,
otherwise we end up generating multiple Conf-Reqs
2010-04-08 19:47:58 -05:00
Denis Kenzior cad3223a94 ppp: Rip out the now unused option string stuff
Using wireshark is much easier
2010-04-08 16:47:05 -05:00
Denis Kenzior 4f31b6c3b2 ppp: Port LCP to the new option framework 2010-04-08 16:47:05 -05:00
Denis Kenzior 7c3e43be03 ppp: port IPCP to the new option framework 2010-04-08 16:47:05 -05:00
Denis Kenzior 06298becc1 ppp: Rip out the old option processing
Put in the new option processing
2010-04-08 16:47:05 -05:00
Denis Kenzior b803ea8616 ppp: Fix make some functions const correct 2010-04-08 16:47:04 -05:00
Denis Kenzior 9d118c4666 ppp: Make iterators work all the time 2010-04-08 16:46:45 -05:00
Denis Kenzior c5590d114e ppp: Move some one-time setters to the proto 2010-04-08 10:40:12 -05:00
Denis Kenzior 4e01f9921e ppp: Add rca callback
When the other side acks our options, then let us apply these options
locally and start using them
2010-04-07 16:41:49 -05:00
Denis Kenzior 5f361d7de9 ppp: Add pppcp option iterators 2010-04-07 16:41:49 -05:00
Denis Kenzior 4a6a381a1d ppp: Remove lcp_protocol_reject
Use pppcp_send_reject_protocol
2010-04-07 16:41:49 -05:00
Denis Kenzior 892ee0a364 ppp: Move pppcp_timer_data private 2010-04-07 16:41:49 -05:00
Denis Kenzior fc26e6e409 ppp: Cleanup ipcp.c 2010-04-07 16:41:49 -05:00
Denis Kenzior 340013c6ef ppp: Hide away the magic_number in ppp_lcp.c 2010-04-07 16:41:40 -05:00
Denis Kenzior 1149210e16 ppp: Use auth->proto, not ppp->proto
Otherwise we move on to NCP stage prematurely
2010-04-06 23:11:26 -05:00
Denis Kenzior 97ff3d56f4 Fix: Allow setting of tx ACCM
Specification is explicit that ACCM defaults to ~0
2010-04-06 22:49:47 -05:00
Denis Kenzior 5e67ee2ff5 ppp: Remove OPTION_ERR, treat errors as reject 2010-04-06 22:49:47 -05:00
Denis Kenzior e0c8704705 ppp: Verify magic number is not zero 2010-04-06 22:49:47 -05:00
Denis Kenzior 130ac43255 ppp: Move up the look up table definition 2010-04-06 22:49:47 -05:00
Denis Kenzior f6d23e153e ppp: Implement receive ACCM 2010-04-06 22:49:44 -05:00
Denis Kenzior 8bff9b6541 Refactor: Make struct pppcp declaration private 2010-04-05 16:55:28 -05:00
Denis Kenzior 04cfa990e2 Refactor: add pppcp_set/get_magic_number 2010-04-05 16:55:07 -05:00
Denis Kenzior de83e99644 Refactor: add pppcp_set_prefix 2010-04-05 16:46:08 -05:00
Denis Kenzior 97b0aa590d Refactor: add pppcp_get_ppp 2010-04-05 16:44:00 -05:00
Denis Kenzior 7739af4a26 Refactor: add pppcp_set_option_strings 2010-04-05 16:42:17 -05:00
Denis Kenzior 7b447dd0e2 Refactor: Move valid code selection to ipcp/lcp
We already have a set_valid_codes function, let us use it
2010-04-05 16:16:14 -05:00
Denis Kenzior 4f5de3426e Refactor: Move packet_ops to a static look-up
No need to allocate space for this, as it is always the same for all
instances.
2010-04-05 16:14:39 -05:00
Denis Kenzior 48a012c810 Refactor: Make option_scan more type safe 2010-04-05 14:32:11 -05:00
Denis Kenzior 5e8a9c2941 Refactor: Make option_process more typesafe
option_process was declared with two gpointer arguments for the sole
reason of being used as a GFunc.  Casting to a GFunc or re-writing the
foreach as a loop is preferable.
2010-04-05 14:25:14 -05:00
Denis Kenzior 60d96505dc Refactor: Add pppcp_set_data & pppcp_get_data
Using these functions makes the code much cleaner than trying to pass
the priv pointer everywhere
2010-04-05 14:16:00 -05:00
Marcel Holtmann 331fcaea32 Make pppcp_code enum a private structure 2010-04-05 11:12:43 -07:00
Marcel Holtmann 12ffb2c772 Make pppcp_event_type enum a private structure 2010-04-05 11:05:08 -07:00
Denis Kenzior 64ffcf1cfa Refactor: Move to a transition state table
It is much more compact to re-implement the transition states as a table
as opposed to functions with switch/case statements.  The logic is made
much easier to follow and much of the code duplication is eliminated
2010-04-05 12:36:43 -05:00
Denis Kenzior d6517e63fe Refactor: Make the enum assignments explicit
They will be used for certain magic later on
2010-04-05 10:13:10 -05:00
Denis Kenzior e56710e1da Refactor: Move the state definition to ppp_cp.c 2010-04-05 10:12:39 -05:00
Kristen Carlson Accardi 9905245e79 ppp: implement Max-Failure counter
put a cap on the number of Configure-Nak packets we send.
2010-04-05 09:45:14 -05:00
Marcel Holtmann c2fb0a1630 Move PPP constants where they are used 2010-04-03 22:32:27 -07:00
Marcel Holtmann 5772ad5d8b Make GAtPPP fields really private 2010-04-03 22:25:09 -07:00
Marcel Holtmann 352ea97f8f Hide internals of ring buffer structure 2010-04-02 21:51:19 -07:00
Marcel Holtmann 09f7be82a9 Remove circular inclusion protection from ring buffer header 2010-04-02 20:34:25 -07:00
Marcel Holtmann 764501482e Fix some cases where g_try_new should be used 2010-04-02 19:20:53 -07:00
Marcel Holtmann 4733ddaffa Move frame NULL checks into the unstuffing function 2010-04-02 19:06:31 -07:00
Marcel Holtmann 9d8e55d489 Fix coding style with callback structures 2010-04-02 19:01:38 -07:00
Kristen Carlson Accardi 3c3077f847 ppp: implement net close 2010-04-02 19:03:56 -05:00
Denis Kenzior ebc6e3b9dc Refactor: Get rid of (now) pointless comments 2010-04-02 19:03:56 -05:00
Marcel Holtmann ffa99a1ebb Also the default case should have a break statement 2010-04-02 13:48:44 -07:00
Denis Kenzior 349d4d8c5d Remove the PPP option from gsmdial
Pointless since we should always connect using PPP
2010-04-02 15:13:25 -05:00
Denis Kenzior 2c466c8baf Refactor: Get rid of packet handler registrations
There are only about 4 protocols that the current ppp code handles and
it is doubtful that it will grow much more.  There's no point in having
an extensive packet handler registration framework.
2010-04-02 15:11:48 -05:00
Marcel Holtmann 3c39543cd6 Fix tabs vs. whitespace coding style violation 2010-04-02 13:34:10 -07:00
Marcel Holtmann 76200165bb Add more missing break statements 2010-04-02 13:33:35 -07:00
Kristen Carlson Accardi 0766a67832 ppp: fix missing breaks in switch statements 2010-04-02 13:19:14 -07:00
Marcel Holtmann 8097a1ed52 Add missing break or fall through comments to switch statements 2010-04-02 12:40:45 -07:00
Marcel Holtmann 0e8b2815a8 Always reset option_rval for every option 2010-04-02 11:43:20 -07:00
Marcel Holtmann 843d3bd2a3 Add missing arpa/inet.h includes 2010-04-02 11:42:42 -07:00
Kristen Carlson Accardi 74e1abd353 ppp: use queue to transmit
Since we are using non buffered I/O, use a queue to transmit when buffer
space is available.
2010-04-02 13:05:47 -05:00
Denis Kenzior 1ed6966cb4 Split out ipcp protocol into ppp_ipcp.c 2010-04-02 12:53:45 -05:00
Kristen Carlson Accardi c2a589e732 ppp: fix event generation on close
Prevents too early transition to PPP_DEAD
2010-04-02 12:53:45 -05:00
Marcel Holtmann edba0296c5 Remove PPP CP event_queue handling and process events directly 2010-04-01 21:44:07 -07:00
Denis Kenzior a182034336 Fix: Stop infinite attempts to register
Sometimes if the modem firmware is particularly nutty we will see
frequent cell-reselections at startup, resulting in us attempting to
register multiple times.  Try to stop this behavior by keeping track of
what state we're in and hoping the hardware is at least somewhat sane.
2010-04-01 22:32:58 -05:00
Marcel Holtmann a845dc8da7 Remove obfuscation for some of the event handling 2010-04-01 20:40:39 -07:00
Marcel Holtmann 6607b5985e Move functions from ppp.c into gatppp.c 2010-04-01 20:33:03 -07:00
Marcel Holtmann 7d6649680f Remove PPP event_queue handling and process events directly 2010-04-01 20:26:24 -07:00
Marcel Holtmann cdc1e3c31b Check FCS while unstuffing the byte stream 2010-04-01 20:18:49 -07:00
Marcel Holtmann dabac98cb4 Remove PPP recv_queue handling and process frames directly 2010-04-01 20:11:43 -07:00
Marcel Holtmann cb791ceb78 Remove usage of AT+CGACT for now 2010-04-01 20:06:31 -07:00
Marcel Holtmann 847e7c7f14 Fix order of PPP frame recording and processing 2010-04-01 14:31:19 -07:00
Marcel Holtmann 544c02da49 Add support for recording PPP sessions in pppdump format 2010-04-01 13:47:25 -07:00
Marcel Holtmann ef82241deb Implement g_at_ppp_set_debug support 2010-04-01 13:11:11 -07:00
Marcel Holtmann dc55d14e9c Add some debugging information to PPP authentication handling 2010-04-01 09:56:18 -07:00
Marcel Holtmann 4f99859d37 Remove useless pppcp_protocol_data structure 2010-04-01 09:13:44 -07:00
Marcel Holtmann 5f0d8493e7 Remove forward declarations in PPP network handling 2010-04-01 00:17:10 -07:00
Marcel Holtmann eb9e7872a9 Add debugging for PPP LCP and IPCP options 2010-04-01 00:07:40 -07:00
Marcel Holtmann f081de4ea6 Use ppp%d as PPP interface name instead of tun%d 2010-03-31 22:29:43 -07:00
Denis Kenzior 988b24adb0 Fix: Introduce PPP data state
Some modems send PPP data introspersed along with the CONNECT final
response.  Fixup the parser so we can still detect the final response.
2010-03-31 18:48:52 -05:00
Denis Kenzior ee8084c0d0 Fix: Update gsm dial to the new GAtPPP API 2010-03-31 18:48:30 -05:00
Denis Kenzior cc1bb46ffa Refactor: Use GAtDisconnectFunc for ppp disconnect
The ppp argument to the current disconnect callback is useless as the
ppp structure is most likely stored in user data anyway.
2010-03-31 18:47:30 -05:00
Denis Kenzior d6093b819f Refactor: GAtPPP connect callback
The connect callback was not giving enough information and the
information it was providing was not in a convenient form.

- Provide the ppp interface name (e.g. tun0)
- Provide ip, dns1 & dns2 as strings
- Do not send the ppp structure in the callback, it is most likely
  present in the user data anyway
2010-03-31 18:45:17 -05:00
Denis Kenzior 0a98e1aef3 Style: Whitespace damage due to spaces, not tabs
Also use proper indentation style
2010-03-31 14:11:41 -05:00
Andrzej Zaborowski 27d0bc6ccf Fix ampersand commands check
Also remove a trailing tab.
2010-03-31 13:16:13 -05:00
Denis Kenzior a3eeb88511 Style: remove unneeded blank line 2010-03-31 13:04:57 -05:00
Marcel Holtmann f87537644b Fix whitespace damage in PPP implementation 2010-03-31 10:30:54 -07:00
Zhenhua Zhang 82687aa58b Add test implementation for CPBS 2010-03-31 08:39:47 -05:00
Zhenhua Zhang ba35179687 Add test implementation to support SMS 2010-03-31 08:39:43 -05:00
Denis Kenzior b421d0756b Refactor: Simplify V250 setting command functions 2010-03-31 08:38:01 -05:00
Denis Kenzior 2ec19b67a2 Refactor: Simplify gatserver s-register functions 2010-03-31 08:22:40 -05:00
Zhenhua Zhang 86b0fa3194 Fix echo command back even if don't process it 2010-03-31 08:12:55 -05:00
Zhenhua Zhang 5819927a38 Add Repeat last command support 2010-03-31 08:10:33 -05:00
Zhenhua Zhang 1390a63933 Add implementation for ATE and other basic command 2010-03-31 08:10:27 -05:00
Zhenhua Zhang d7eb09cc05 Add implementation for S3, S4, S5 command 2010-03-31 08:10:23 -05:00
Denis Kenzior e63840ba11 Fix: Make sure we still increment read_count 2010-03-30 22:06:12 -05:00
Zhenhua Zhang c288921bab Fix ignore incoming bytes during parsing
Server processes one command line at one time, so ignore the rest
incoming bytes during the command parsing.
2010-03-30 21:59:34 -05:00
Denis Kenzior 1f5e785901 Update test-server to the new API 2010-03-30 20:29:25 -05:00
Denis Kenzior 250c0c1ef9 Simplify the send_info API 2010-03-30 20:29:10 -05:00
Denis Kenzior d7e784d517 Fix: Treat garbage as echo 2010-03-30 19:16:47 -05:00
Denis Kenzior 46ebde6965 Fix: Properly handle async final responses 2010-03-30 19:15:55 -05:00
Denis Kenzior 94eeab3688 Fix: We need to preserve the original line 2010-03-30 17:12:43 -05:00
Denis Kenzior 437c2d8ccf Fix: Use VERSION define to generate CGMR response 2010-03-30 16:40:44 -05:00
Denis Kenzior 40ca3cb3f5 Fix: Record last received command 2010-03-30 15:25:50 -05:00
Denis Kenzior a2c4c8e7b6 Fix: Send an ERROR on A/ 2010-03-30 15:18:34 -05:00