]> www.infradead.org Git - users/dwmw2/openconnect.git/log
users/dwmw2/openconnect.git
4 years agovalgrind: fix f5 mem leaks
Daniel Lenski [Sun, 17 May 2020 00:50:15 +0000 (17:50 -0700)]
valgrind: fix f5 mem leaks

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agouse ACK/NAK request mechanism to request IPv4 address, (IPv4) DNS/NBNS addresses...
Daniel Lenski [Sat, 16 May 2020 01:03:45 +0000 (18:03 -0700)]
use ACK/NAK request mechanism to request IPv4 address, (IPv4) DNS/NBNS addresses, and IPv6 interface identifiers

The idea is that if we CONFREQ an all-zero value for one of these.
PPP server/peer is supposed to:

- CONFNAK with a value filled in, which we then re-CONFREQ to confirm.
- CONFREJ if it can't supply a value (e.g. NBNS servers because it's
  not 1994 and we're not using Windows for Workgroups 3.11).

Tested with F5, by overriding ppp->solicit_peerns=7, ppp->out_peer_addr.s_addr=0,
ppp->out_ipv6_int_ident=0 in openconnect_ppp_new (even though F5 in fact sends these
addresses in the XML config prior to PPP tunnel).

The CONFREQ/CONFNAK/re-CONFREQ exchange is inefficient, requiring three rounds trips
(request and reject, partial re-request and nak, confirming request and ack), but it
works:

    Sending PPP IPCP Configure-Request packet (id 1, 34 bytes total)
    > 0000:  f5 00 00 1e 80 21 01 01  00 1c 03 06 00 00 00 00  |.....!..........|
    > 0010:  81 06 00 00 00 00 82 06  00 00 00 00 83 06 00 00  |................|
    > 0020:  00 00                                             |..|

    ...

    Received proto 0x8021/id 1 Configure-Reject from server
    Server rejected IPCP request for NBNS[1] server
    Server rejected IPCP request for DNS[1] server
    Server rejected IPCP request for NBNS[0] server

    ...

    Sending our proto 0x8021/id 2 config request to server
    < 0000:  f5 00 00 10 80 57 02 01  00 0e 01 0a e0 a7 1c fb  |.....W..........|
    < 0010:  9e 55 00 00                                       |.U..|
    Sending PPP IPCP Configure-Request packet (id 2, 22 bytes total)
    > 0000:  f5 00 00 12 80 21 01 02  00 10 03 06 00 00 00 00  |.....!..........|
    > 0010:  81 06 00 00 00 00                                 |......|
    No work to do; sleeping for 3000 ms...
    < 0000:  f5 00 00 12 80 21 03 02  00 10 03 06 0a 00 00 17  |.....!..........|
    < 0010:  81 06 5a 9b 5c d1                                 |..Z.\.|
    Received proto 0x8021/id 2 Configure-Nak from server
    Server nak-offered IPv4 address: 10.0.0.23
    Server nak-offered IPCP request for DNS[0] server: 90.155.92.209

    ...

    Sending our proto 0x8021/id 3 config request to server
    Sending PPP IPCP Configure-Request packet (id 3, 16 bytes total)
    > 0000:  f5 00 00 0c 80 21 01 03  00 0a 03 06 0a 00 00 17  |.....!..........|
    No work to do; sleeping for 3000 ms...
    < 0000:  f5 00 00 0c 80 21 02 03  00 0a 03 06 0a 00 00 17  |.....!..........|
    Received proto 0x8021/id 3 Configure-Ack from server
    PPP state transition from OPENED to NETWORK
    Current PPP state: NETWORK (encap F5):
        in: asyncmap=0x00000000, lcp_opts=384, lcp_magic=0x04eb81f9, peer=1.1.1.1
       out: asyncmap=0x00000000, lcp_opts=422, lcp_magic=0x70ac508f, peer=10.0.0.23, solicit_peerns=0

The purpose of the IPv6 interface identifier negotiation is unclear, but the F5
server does not accept a zero value, using CONFNAK to offer a new one.

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agofriendlier logging of outgoing PPP packets
Daniel Lenski [Sat, 16 May 2020 00:57:45 +0000 (17:57 -0700)]
friendlier logging of outgoing PPP packets

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agocreate vpninfo->ppp in-place
Daniel Lenski [Sat, 16 May 2020 00:54:41 +0000 (17:54 -0700)]
create vpninfo->ppp in-place

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agofix logging of unknown TLV lengths, and copy-paste mistake
Daniel Lenski [Sat, 16 May 2020 00:54:41 +0000 (17:54 -0700)]
fix logging of unknown TLV lengths, and copy-paste mistake

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoadd secure_cookie protocol field to suppress other protocols' cookies from --dump...
Daniel Lenski [Fri, 6 Mar 2020 21:52:18 +0000 (13:52 -0800)]
add secure_cookie protocol field to suppress other protocols' cookies from --dump-http-traffic as well

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agothanks Coverity
Daniel Lenski [Fri, 15 May 2020 21:41:33 +0000 (14:41 -0700)]
thanks Coverity

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agosuppress warnings
Daniel Lenski [Fri, 15 May 2020 15:34:03 +0000 (08:34 -0700)]
suppress warnings

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoIsn't this great?
Daniel Lenski [Fri, 15 May 2020 02:19:50 +0000 (19:19 -0700)]
Isn't this great?

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoattempted support for concatenated packets
Daniel Lenski [Fri, 15 May 2020 01:48:55 +0000 (18:48 -0700)]
attempted support for concatenated packets

Plus add comments about what each variable points to and when, during packet parsing.

Tested with F5 HDLC and non-HDLC. Doesn't complain about leftover bytes, or short/incomplete packets, but NOT YET
actually tested with concatenated packets.

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agomove checking of config packet length to handle_config_packet
Daniel Lenski [Fri, 15 May 2020 01:44:43 +0000 (18:44 -0700)]
move checking of config packet length to handle_config_packet

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agocan't determine encap-header location until after HDLC'ing
Daniel Lenski [Thu, 14 May 2020 23:38:33 +0000 (16:38 -0700)]
can't determine encap-header location until after HDLC'ing

Tested with F5 HDLC and non-HLDC

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agofactor out redundancy in HDLC de-encapsulation
Daniel Lenski [Thu, 14 May 2020 22:15:46 +0000 (15:15 -0700)]
factor out redundancy in HDLC de-encapsulation

Tested with F5 HDLC and non-HDLC

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoremove redundancy in HDLC encapsulation
Daniel Lenski [Thu, 14 May 2020 21:42:36 +0000 (14:42 -0700)]
remove redundancy in HDLC encapsulation

Tested with F5 HDLC and non-HDLC

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agofactor out add_ppp_header
Daniel Lenski [Thu, 14 May 2020 22:14:57 +0000 (15:14 -0700)]
factor out add_ppp_header

Tested with F5 HDLC and non-HDLC

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agofix HDLC packet logging buffer overflow
Daniel Lenski [Thu, 14 May 2020 21:30:41 +0000 (14:30 -0700)]
fix HDLC packet logging buffer overflow

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agon != ppp.hlen for HDLC (will only work by coincidence if PPP header is uncompressed...
Daniel Lenski [Thu, 14 May 2020 21:41:19 +0000 (14:41 -0700)]
n != ppp.hlen for HDLC (will only work by coincidence if PPP header is uncompressed/4 bytes)

See https://gitlab.com/openconnect/openconnect/-/commit/c060e713f7aba546ccc3a1e729dd6e2e21e0e43b#note_342889873

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agocheck pre-un-HDLC packet length for NX
Daniel Lenski [Thu, 14 May 2020 22:52:41 +0000 (15:52 -0700)]
check pre-un-HDLC packet length for NX

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agofix a couple off-by-encap_len bits of NX
Daniel Lenski [Thu, 14 May 2020 21:26:58 +0000 (14:26 -0700)]
fix a couple off-by-encap_len bits of NX

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoMerge branch 'nx' of https://gitlab.com/Rondom/openconnect into f5
David Woodhouse [Thu, 14 May 2020 16:33:06 +0000 (17:33 +0100)]
Merge branch 'nx' of https://gitlab.com/Rondom/openconnect into f5

4 years agoMerge branch 'master' of git.infradead.org:public_git/openconnect into f5
David Woodhouse [Thu, 14 May 2020 16:31:30 +0000 (17:31 +0100)]
Merge branch 'master' of git.infradead.org:public_git/openconnect into f5

4 years agoAdd initial SonicWall NetExtender support
Andreas Gnau [Mon, 11 May 2020 19:20:58 +0000 (21:20 +0200)]
Add initial SonicWall NetExtender support

LCP works, no error handling yet.

Signed-off-by: Andreas Gnau <rondom@rondom.de>
4 years agoTag version 8.10 v8.10
David Woodhouse [Thu, 14 May 2020 15:46:24 +0000 (16:46 +0100)]
Tag version 8.10

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoUpdate changelog
David Woodhouse [Thu, 14 May 2020 15:27:43 +0000 (16:27 +0100)]
Update changelog

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoMerge branch 'bug721570' of gitlab.com:floppym/openconnect
David Woodhouse [Thu, 14 May 2020 15:09:14 +0000 (16:09 +0100)]
Merge branch 'bug721570' of gitlab.com:floppym/openconnect

4 years agoBump Android API level to 23 to allow it to run on Android 10
David Woodhouse [Thu, 14 May 2020 13:28:21 +0000 (14:28 +0100)]
Bump Android API level to 23 to allow it to run on Android 10

Nobody cares about older API versions, which would only be needed
to support Android versions older than 6.0.

cf. https://gitlab.com/openconnect/openconnect/-/merge_requests/92

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoUpdate Android dependencies
David Woodhouse [Thu, 14 May 2020 11:56:46 +0000 (12:56 +0100)]
Update Android dependencies

Update GnuTLS, libxml2, nettle, gmp and lz4

Based on a patch from Severus <huynhok.uit@gmail.com>

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoMerge branch 'Juniper_frmNextToken_submit_button' of gitlab.com:openconnect/openconnect
David Woodhouse [Thu, 14 May 2020 11:18:41 +0000 (12:18 +0100)]
Merge branch 'Juniper_frmNextToken_submit_button' of gitlab.com:openconnect/openconnect

4 years agoMerge branch 'GP_stop_asking_to_report_unexpected_arg19=4' of gitlab.com:openconnect...
David Woodhouse [Thu, 14 May 2020 11:09:31 +0000 (12:09 +0100)]
Merge branch 'GP_stop_asking_to_report_unexpected_arg19=4' of gitlab.com:openconnect/openconnect

4 years agoMerge branch 'do_not_strip_newlines_in_CSD_response' of gitlab.com:dlenski/openconnect
David Woodhouse [Thu, 14 May 2020 10:50:07 +0000 (11:50 +0100)]
Merge branch 'do_not_strip_newlines_in_CSD_response' of gitlab.com:dlenski/openconnect

4 years agoTidy up PPP strings
David Woodhouse [Thu, 14 May 2020 10:27:21 +0000 (11:27 +0100)]
Tidy up PPP strings

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoparse real Fortinet config
Daniel Lenski [Thu, 14 May 2020 03:41:00 +0000 (20:41 -0700)]
parse real Fortinet config

Based on these two real examples (https://forum.fortinet.com/tm.aspx?m=170415 and https://forum.fortinet.com/tm.aspx?m=105123).

Tested with sample XML in comments.

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoadd test-fortinet-login.py
Daniel Lenski [Wed, 13 May 2020 21:29:41 +0000 (14:29 -0700)]
add test-fortinet-login.py

Often easier to prototype HTTPS-based authentication flows in Python, since
they're so fiddly and arbitary.  So I copied `test-f5-login.py` to
`test-fortinet-login.py`.  Currently only handles basic
username-and-password auth, no 2FA:

```
usage: test-fortinet-login.py [-h] [-v] [-u USERNAME] [-p PASSWORD] [-r REALM]
                              [-c CERT] [--key KEY] [--no-verify]
                              endpoint [extra [extra ...]]

positional arguments:
  endpoint              Fortinet server (or complete URL, e.g.
                        https://forti.vpn.com/remote/login)
  extra                 Extra field to pass to include in the login query
                        string (e.g. "foo=bar")

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose
  --no-verify           Ignore invalid server certificate

Login credentials:
  -u USERNAME, --username USERNAME
                        Username (will prompt if unspecified)
  -p PASSWORD, --password PASSWORD
                        Password (will prompt if unspecified)
  -r REALM, --realm REALM
                        Realm (empty if unspecified)
  -c CERT, --cert CERT  PEM file containing client certificate (and optionally
                        private key)
  --key KEY             PEM file containing client private key (if not
                        included in same file as certificate)
```

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoBasic ConfRej handling
David Woodhouse [Wed, 13 May 2020 21:21:29 +0000 (22:21 +0100)]
Basic ConfRej handling

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoMerge branch 'f5' of gitlab.com:openconnect/openconnect
David Woodhouse [Wed, 13 May 2020 18:25:40 +0000 (19:25 +0100)]
Merge branch 'f5' of gitlab.com:openconnect/openconnect

4 years agoUse LCP protocol code values for feature bitmask
David Woodhouse [Wed, 13 May 2020 18:25:09 +0000 (19:25 +0100)]
Use LCP protocol code values for feature bitmask

In preparation for handling ConfRej

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agosecond time's a charm?
Daniel Lenski [Wed, 13 May 2020 18:07:43 +0000 (11:07 -0700)]
second time's a charm?

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoFewer magic numbers for NCP opts
David Woodhouse [Wed, 13 May 2020 18:07:22 +0000 (19:07 +0100)]
Fewer magic numbers for NCP opts

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoMake encap_names[] compile again
David Woodhouse [Wed, 13 May 2020 17:53:27 +0000 (18:53 +0100)]
Make encap_names[] compile again

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoMerge branch 'master' of git.infradead.org:public_git/openconnect
David Woodhouse [Wed, 13 May 2020 17:50:26 +0000 (18:50 +0100)]
Merge branch 'master' of git.infradead.org:public_git/openconnect

4 years agofix encap_names for Fortinet HDLC
Daniel Lenski [Wed, 13 May 2020 17:15:46 +0000 (10:15 -0700)]
fix encap_names for Fortinet HDLC

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoUse do_https_request()
David Woodhouse [Wed, 13 May 2020 15:44:54 +0000 (16:44 +0100)]
Use do_https_request()

That's a lot simpler than open-coding it.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoFix fortinet_bye() path
David Woodhouse [Wed, 13 May 2020 15:24:44 +0000 (16:24 +0100)]
Fix fortinet_bye() path

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agocombine comments from heretofore missing ppp.h
Daniel Lenski [Wed, 13 May 2020 14:28:28 +0000 (07:28 -0700)]
combine comments from heretofore missing ppp.h

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agosave four bytes in HDLC malloc
Daniel Lenski [Wed, 13 May 2020 07:05:55 +0000 (00:05 -0700)]
save four bytes in HDLC malloc

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoAdd basic attempt at Fortinet support
David Woodhouse [Wed, 13 May 2020 13:58:56 +0000 (14:58 +0100)]
Add basic attempt at Fortinet support

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoUse ID from struct ncp
David Woodhouse [Wed, 13 May 2020 13:32:41 +0000 (14:32 +0100)]
Use ID from struct ncp

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoMake proto strings static
David Woodhouse [Wed, 13 May 2020 10:24:07 +0000 (11:24 +0100)]
Make proto strings static

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoAdd missing ppp.h
David Woodhouse [Wed, 13 May 2020 09:45:44 +0000 (10:45 +0100)]
Add missing ppp.h

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agouse HDLC_OUT macro
Daniel Lenski [Wed, 13 May 2020 06:38:51 +0000 (23:38 -0700)]
use HDLC_OUT macro

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agocheck for PPP state transitions before/after each packet received
Daniel Lenski [Wed, 13 May 2020 06:13:17 +0000 (23:13 -0700)]
check for PPP state transitions before/after each packet received

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agomove PPP #defines and structs to ppp.h
Daniel Lenski [Tue, 12 May 2020 22:26:23 +0000 (15:26 -0700)]
move PPP #defines and structs to ppp.h

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agounused label
Daniel Lenski [Tue, 12 May 2020 22:29:57 +0000 (15:29 -0700)]
unused label

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoHandle ConfRej for anything that needs it.
David Woodhouse [Tue, 12 May 2020 21:27:24 +0000 (22:27 +0100)]
Handle ConfRej for anything that needs it.

If get a ConfReq with anything we don't want or understand — and that
includes bloody VJ header compression, since I'm not completely batshit
insane — send a ConfRej.

Do this by building up the options to be rejected in an oc_text_buf as
we go, then rejecting that set if it's non-empty once we get to the end.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoFix un-HDLC corner cases
Daniel Lenski [Tue, 12 May 2020 21:12:25 +0000 (14:12 -0700)]
Fix un-HDLC corner cases

1) The initial 0x7e is optional, the final 0x7e is not (was reversed).
2) Dangling escape can occur even when we haven't run out of buffer. 0x7d 0x7e is an invalid sequence.

While not breaking…

3) 0x7d can be the “target” of an escape (0x7d 0x7d → 0x5d)
4) 0x5d as the “target” of an escape (0x7d 0x5d → 0x7d) doesn't indicate a new escape

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoget rid of a bunch of casts
Daniel Lenski [Wed, 13 May 2020 05:20:24 +0000 (22:20 -0700)]
get rid of a bunch of casts

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agostop asking users to report unexpected GP login argument arg[20]="unknown"
Daniel Lenski [Fri, 1 May 2020 18:49:25 +0000 (11:49 -0700)]
stop asking users to report unexpected GP login argument arg[20]="unknown"

We don't know what this one means, but newer GP servers always send it and it's basically uninteresting.

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoAdd FCS support
David Woodhouse [Tue, 12 May 2020 19:41:06 +0000 (20:41 +0100)]
Add FCS support

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agonope, F5 HDLC isn't emitting junk… I'm just failing to unescape the FCS
Daniel Lenski [Tue, 12 May 2020 20:15:37 +0000 (13:15 -0700)]
nope, F5 HDLC isn't emitting junk… I'm just failing to unescape the FCS

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agotweak unhdlc_in_place, in preparation for multiple concatenated packets
Daniel Lenski [Tue, 12 May 2020 17:37:00 +0000 (10:37 -0700)]
tweak unhdlc_in_place, in preparation for multiple concatenated packets

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agosimplify PPP header checking
Daniel Lenski [Tue, 12 May 2020 06:16:34 +0000 (23:16 -0700)]
simplify PPP header checking

There's no point whatsover to checking if the server is doing ACCOMP/PFCOMP
as negotiated:
- Even if negotiated, they're optional.
- Even if *not* negotiated, they're unambiguous.
- Either way, it's much easier just to ignore the negotiated options.

“Be liberal in what you accept, and conservative in what you send.”

Some day I will acquire a time machine, travel back to 1993, and ask the
designers of PPP not to add meaningless boilerplate bytes to their protocol
in such a uniquely strange-yet-approachable way that compels future implementers to
reinvent clever ways of dealing with them hundreds of times.

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoF5 server sends frequent extra junk/padding in HDLC mode… just accept it
Daniel Lenski [Tue, 12 May 2020 02:39:36 +0000 (19:39 -0700)]
F5 server sends frequent extra junk/padding in HDLC mode… just accept it

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoworking unhdlc_in_place and hdlc_into_new_pkt
Daniel Lenski [Tue, 12 May 2020 01:02:19 +0000 (18:02 -0700)]
working unhdlc_in_place and hdlc_into_new_pkt

TODO: verify incoming FCS and generate outgoing FCS (F5 accepts it set to zero ¯\_(ツ)_/¯)

https://tools.ietf.org/html/rfc1662#appendix-C.2

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agorip out HDLC skeleton as a thought experiment
Daniel Lenski [Mon, 11 May 2020 22:56:36 +0000 (15:56 -0700)]
rip out HDLC skeleton as a thought experiment

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoremove state-machine fall-throughs: unnecessary, error-prone, make the transition...
Daniel Lenski [Tue, 12 May 2020 02:14:30 +0000 (19:14 -0700)]
remove state-machine fall-throughs: unnecessary, error-prone, make the transition display confusing

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoget rid of offset-by-1 in lcp_names and encap_names arrays
Daniel Lenski [Tue, 12 May 2020 01:47:10 +0000 (18:47 -0700)]
get rid of offset-by-1 in lcp_names and encap_names arrays

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agolog ancient deprecated IPCP IP-Addresses option
Daniel Lenski [Mon, 11 May 2020 23:54:47 +0000 (16:54 -0700)]
log ancient deprecated IPCP IP-Addresses option

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agouse tcp_control_queue for PPP config packets
Daniel Lenski [Mon, 11 May 2020 22:34:34 +0000 (15:34 -0700)]
use tcp_control_queue for PPP config packets

(Also fixes the dodginess of using high nibble of first byte to distinguish config from data packets)

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agooncp_control_queue → tcp_control_queue
Daniel Lenski [Mon, 11 May 2020 22:34:34 +0000 (15:34 -0700)]
oncp_control_queue → tcp_control_queue

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agocleanup state printing
Daniel Lenski [Mon, 11 May 2020 22:10:06 +0000 (15:10 -0700)]
cleanup state printing

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoadd timers to resend Config-Request after 3 seconds
Daniel Lenski [Mon, 11 May 2020 22:04:27 +0000 (15:04 -0700)]
add timers to resend Config-Request after 3 seconds

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agosend_config_request → queue_config_request
Daniel Lenski [Mon, 11 May 2020 21:52:20 +0000 (14:52 -0700)]
send_config_request → queue_config_request

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agonow storing {in,out}_lcp_magic in on-the-wire order (for ease of assembing util packets)
Daniel Lenski [Mon, 11 May 2020 19:34:36 +0000 (12:34 -0700)]
now storing {in,out}_lcp_magic in on-the-wire order (for ease of assembing util packets)

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agofix header shift prediction
Daniel Lenski [Mon, 11 May 2020 19:33:16 +0000 (12:33 -0700)]
fix header shift prediction

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoBetter attempt to get HDLC outbound right
David Woodhouse [Mon, 11 May 2020 15:12:34 +0000 (16:12 +0100)]
Better attempt to get HDLC outbound right

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoUse CONFREQ et al definitions instead of numbers
David Woodhouse [Mon, 11 May 2020 13:26:38 +0000 (14:26 +0100)]
Use CONFREQ et al definitions instead of numbers

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoMake oc_ncp state a structure, including the id.
David Woodhouse [Mon, 11 May 2020 12:39:10 +0000 (13:39 +0100)]
Make oc_ncp state a structure, including the id.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoDrop hdlc and we_go_first args from openconnect_ppp_new()
David Woodhouse [Mon, 11 May 2020 12:29:28 +0000 (13:29 +0100)]
Drop hdlc and we_go_first args from openconnect_ppp_new()

We should always go first for *our* outbound ConfReqs, not wait for the
server to go first. And HDLC can be inferred from the encap mode, to
which we can add PPP_ENCAP_F5_HDLC.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agowe're never gonna want outgoing header compression
Daniel Lenski [Mon, 11 May 2020 18:47:54 +0000 (11:47 -0700)]
we're never gonna want outgoing header compression

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agohandle we_go_first
Daniel Lenski [Mon, 11 May 2020 18:40:59 +0000 (11:40 -0700)]
handle we_go_first

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agouse queue for conf-ack packets too
Daniel Lenski [Mon, 11 May 2020 18:17:55 +0000 (11:17 -0700)]
use queue for conf-ack packets too

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agotwo more dumb bugs
Daniel Lenski [Mon, 11 May 2020 17:57:02 +0000 (10:57 -0700)]
two more dumb bugs

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoqueue util packets
Daniel Lenski [Mon, 11 May 2020 16:58:33 +0000 (09:58 -0700)]
queue util packets

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agofix two bugs which were cancelling each other
Daniel Lenski [Mon, 11 May 2020 16:58:12 +0000 (09:58 -0700)]
fix two bugs which were cancelling each other

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoconsolidate send_util and stash packet header length in packet
Daniel Lenski [Mon, 11 May 2020 08:28:12 +0000 (01:28 -0700)]
consolidate send_util and stash packet header length in packet

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoPPP: use echo-request/discard-request for DPD/keepalive
Daniel Lenski [Mon, 11 May 2020 04:32:50 +0000 (21:32 -0700)]
PPP: use echo-request/discard-request for DPD/keepalive

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoworking PPP mainloop
Daniel Lenski [Mon, 11 May 2020 03:39:03 +0000 (20:39 -0700)]
working PPP mainloop

Still TODO:
- Handle we_go_first option where we offer our Configure-Request before receiving one
- Handle HDLC (blech)

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agostate naming/handling cleanup
Daniel Lenski [Mon, 11 May 2020 03:36:33 +0000 (20:36 -0700)]
state naming/handling cleanup

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoplan to handle different types of PPP encapsulation (F5, array, etc.)
Daniel Lenski [Mon, 11 May 2020 03:33:43 +0000 (20:33 -0700)]
plan to handle different types of PPP encapsulation (F5, array, etc.)

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoinclude ppp state in `struct openconnect_info`
Daniel Lenski [Mon, 11 May 2020 00:37:18 +0000 (17:37 -0700)]
include ppp state in `struct openconnect_info`

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agofactor out send_config_request
Daniel Lenski [Fri, 8 May 2020 21:35:13 +0000 (14:35 -0700)]
factor out send_config_request

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoworking PPP config negotation (LCP+IPCP+IP6CP)
Daniel Lenski [Fri, 8 May 2020 09:40:47 +0000 (02:40 -0700)]
working PPP config negotation (LCP+IPCP+IP6CP)

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agomake buf_append_{be16,be32,le16} global
Daniel Lenski [Fri, 8 May 2020 07:11:51 +0000 (00:11 -0700)]
make buf_append_{be16,be32,le16} global

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoadd test-f5-login.py script
Daniel Lenski [Wed, 6 May 2020 20:01:28 +0000 (13:01 -0700)]
add test-f5-login.py script

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoextract basic IP configuration from XML, including default and split routes
Daniel Lenski [Thu, 7 May 2020 00:01:51 +0000 (17:01 -0700)]
extract basic IP configuration from XML, including default and split routes

Based on code structure in gpst.c, and hints about interpretation of XML tags from:

- https://github.com/rei/f5vpn-client/blob/HEAD/f5vpn-login.py
- https://github.com/rei/f5vpn-client/blob/HEAD/README.md

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agognutls: prevent buffer overflow in get_cert_name
Sergei Trofimovich [Fri, 8 May 2020 14:39:41 +0000 (10:39 -0400)]
gnutls: prevent buffer overflow in get_cert_name

The test suite for ocserv calls openconnect with a certificate that has
a name that is 84 bytes in length. The buffer passed to get_cert_name is
currently 80 bytes.

The gnutls_x509_crt_get_dn_by_oid function will update the buffer size
parameter if the buffer is too small.

http://man7.org/linux/man-pages/man3/gnutls_x509_crt_get_dn_by_oid.3.html

RETURNS
       GNUTLS_E_SHORT_MEMORY_BUFFER if the provided buffer is not long
       enough, and in that case the  buf_size will be updated with the
       required size. GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE if there are no
       data in the current index. On success 0 is returned.

Use a temporary variable to avoid clobbering the namelen variable that is
passed to get_cert_name.

Bug: https://bugs.gentoo.org/721570
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Signed-off-by: Mike Gilbert <floppym@gentoo.org>
4 years agoJuniper frmNextToken: recognize secidactionEnter as submit button
Daniel Lenski [Thu, 7 May 2020 16:12:09 +0000 (09:12 -0700)]
Juniper frmNextToken: recognize secidactionEnter as submit button

ping #137

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoDisable OpenSSL RDRAND in COPR tests to work around SoftHSM deadlock
David Woodhouse [Thu, 7 May 2020 14:17:37 +0000 (15:17 +0100)]
Disable OpenSSL RDRAND in COPR tests to work around SoftHSM deadlock

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoFix name of tpm2-tss-engine
David Woodhouse [Thu, 7 May 2020 09:42:57 +0000 (10:42 +0100)]
Fix name of tpm2-tss-engine

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoAlso disable cURL's use of HTTP/1.1 expect logic
Daniel Lenski [Wed, 6 May 2020 22:05:00 +0000 (15:05 -0700)]
Also disable cURL's use of HTTP/1.1 expect logic

This is only a useful optimization for large payloads, and seems to confuse some Cisco ASAs or middleboxes.

See https://gms.tf/when-curl-sends-100-continue.html#disabling-expect-logic

Signed-off-by: Daniel Lenski <dlenski@gmail.com>