Commit Graph

127 Commits

Author SHA1 Message Date
Pau Espin d475673b69 osmo_client_send_data: Fix wrong log format
According to pcap.h, type bpf_u_int32 can be 32 bits on some systems,
so better cast explicitly to size_t to make sure always correct size is
used by log function.

Fixes warning:
osmo-pcap/src/osmo_client_network.c:175:4: warning: format ‘%zu’ expects argument of type ‘size_t’, but argument 7 has type ‘bpf_u_int32’ {aka ‘unsigned int’} [-Wformat=]
    "Capture len too big %zu\n", in_hdr->caplen);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~~~~~~~

Change-Id: I98654da143218d3e57da4e57781252eb3d3f3d5b
2018-10-08 13:33:50 +02:00
Pau Espin dc27ca85aa Drop osmo_init_logging and use osmo_init_logging2
Change-Id: Ib1c38f6134b3c1988477caa0f2c281b1ef01d5e0
2018-10-08 13:29:52 +02:00
Pau Espin 5f3c30c40c server: Properly name main talloc ctx
Change-Id: I810417d84c6a6ebcbc4b75a9bc41607bb0637228
2018-10-08 13:29:52 +02:00
Pau Espin 2828690633 client: Properly name main talloc ctx
Change-Id: Ibaa7f0e0add5f5e61cc0bb82341ee3b6b5c0cf07
2018-10-08 13:29:52 +02:00
Pau Espin 6e9bf9aa15 vty: skip installing cmds now always installed by default
Fixes following compilation warning:
osmo-pcap/src/osmo_client_vty.c:511:2: warning: ‘install_default’ is deprecated: Now happens implicitly with install_node() [-Wdeprecated-declarations]

Depends: libosmocore I5021c64a787b63314e0f2f1cba0b8fc7bff4f09b
Change-Id: I943f68dbafd7906313ad9e59f4adb289ae23cdec
2018-10-08 13:29:52 +02:00
Pau Espin 3dfdbc21dc cosmetic: client: rename forward_packet function
Function only checks if packet should be forwarded, it doesn't forward
any packet.

Change-Id: I87cd64290245db134b17bc0d6665c58f1cde17b6
2018-10-08 13:08:52 +02:00
Harald Welte e89231d8b0 debian/control: Fix URLs for homepage, git, gitweb
Change-Id: Iff74cf6b3e53a6786a96738b609a2e2d685b1300
2018-02-09 12:07:50 +01:00
Harald Welte f335e37ed5 Add support for generating IPIP to osmo-pcap-client
This allows the user to change the configuration between either using

a) the classic OsmoPCAP protocol (over TCP with or without TLS)
   which is used when you want to talk to an osmo-pcap-server

b) the (new) IPIP encapsulation, which will simply take the IP
   packet (without Ethernet or pcap header) and transmit it inside IPIP
   to the specified server IP address.  This is useful for gettin
   real-time streaming into wireshark.

Change-Id: I8056fc163ac2f15adcb964d867dd5e51df4e4710
2018-02-09 12:07:50 +01:00
Max 53044df9d5 Use release helper from libosmocore
See
https://osmocom.org/projects/cellular-infrastructure/wiki/Make_a_new_release
for details.

Change-Id: Iafe5905895a656b7055d58ca8f745fcfa4bd9886
Related: OS#1861
2017-08-28 10:57:19 +00:00
Max 93ac357b48 Add gitreview config
Change-Id: I35b3aaa3f8af4127d8a1b00c77ab02ae6a182714
2017-08-22 12:34:59 +02:00
Harald Welte 5f071cd2c6 client: Move to osmo_sock_init2_ofd()
We can simplify the code even further by using the osmo_fd version
of osmo_sock_init2() called osmo_sock_init2_ofd(), which takes care
of filling the osmo_fd.fd member and registering the socket in the
select loop.

Change-Id: Ibf1480e7dee287db77a19bb9f0254edddf7706ab
2017-07-21 18:25:15 +02:00
Harald Welte f266924bac Use libosmocore osmo_sock_init2() instead of local implementation
A related function for "create a socket, bind it locally and connect
remotely" has meanwhile been introduced in libosmocore, so the local
implementation can go.

Change-Id: Ieda77ad8b3f7b89faa09882c0037562ce4d0fc89
2017-07-21 18:20:36 +02:00
Harald Welte 2fe9cb937d Rename osmo_pcap_{client_server} executables to osmo-pcap-{client,server}
This naming is more in line with what all the other osmocom programs are
doing (e.g. osmo-pcu, osmo-bts-sysmo, osmo-bsc, ...).  We don't
generally use osmo_ anywhere else, so I suggest to change it for more
uniformity.

Change-Id: If1e3ce76f93266e0f01c801204769432b571fdb1
2017-07-21 15:21:01 +02:00
Harald Welte 2aea8704f3 Use TCP port numbers for VTY that don't overlap with other Osmocom Software
osmo-pcap for historical reasons uses the same port numbers as
OsmoPCU and OsmoBTS.  This leads to problems when wanting to run related
software together on one system.  Let's break the historical assumptions
and start with non-overlapping port numbers that are allocated/assigned
from https://osmocom.org/projects/cellular-infrastructure/wiki/Port_Numbers

Change-Id: I638ac0534517931d0987ce9f72f5db4f5b6c16b7
2017-07-21 15:18:02 +02:00
Harald Welte 604e071159 sock_src_init(): Don't freeaddrinfo() undefined src_result
src_result is only valid "if (src)", so we cannot unconditionally
free it:

(gdb) bt
    host=0x52 <error: Cannot access memory at address 0x52>, src=0x0)
    at /usr/src/debug/osmo-pcap/0.0.6+gitrAUTOINC+4776b2972e-r1d/git/src/osmo_client_network.c:165

Change-Id: I3b6778d9110583ecb1daec59ef2c86465d5818b9
2017-07-21 13:11:24 +02:00
Holger Hans Peter Freyther 4776b2972e debian: Add -dbg packages for the osmo-pcap-client and osmo-pcap-server
Currently looking at a weird issue. Make it possible to install the
-dbg packages.

Change-Id: I7d6c8e491be459151c1531b86f28bb1dc2ee8bb4
2017-03-07 23:17:41 +01:00
Holger Hans Peter Freyther 17f5b00506 debian: Make a new release with the new feature
Change-Id: Ibe86b761b494e0fb78bbbc78e3c1982e44185750
2017-01-17 09:13:36 +01:00
Holger Hans Peter Freyther 40c1e85499 client: Allow to bind to a specific source_ip
Modify the osmo_sock_init (code clone to be integrated upstream)
to allow binding to a specific source ip and source port. Allow
the source ip to be configured but allow the kernel to pick a
random port for us.

This is necessary for systems with multiple interfaces where the
default route is not necessarily the right one to connect to the
pcap server.

Change-Id: I84e728b0752213d28f970fcbbfd6565c441ccfeb
2017-01-17 09:06:42 +01:00
Holger Hans Peter Freyther fdebd88059 debian: Make a new release with the new features we gained
Change-Id: I85e210e6ed14aef085902a5af6407d51685aecba
2016-11-09 02:11:45 +01:00
Holger Hans Peter Freyther 36a183fd78 client: Tolerate an invalid pcap_handle
When not running as root the opening might fail and then we would
crash when sending the link information. Do not crash. This could
have crashed before the re-factoring but due the async connect it
seems more likely we hit it now.

Change-Id: I26a10c401a9a8998acc50a4bd4432d2ac7fceaeb
2016-11-09 01:46:35 +01:00
Holger Hans Peter Freyther 9294c40f14 client: disconnect before connecting the connection
With the VTY a user can write connect, connect, connect and this
would lead to leaking fds. Always close the connection.

Change-Id: Iab94dc2fd28496bf5fd8ceb5611f9e6505ccae1b
2016-11-09 01:04:04 +01:00
Holger Hans Peter Freyther 0a94e57b72 client: Allow to stop and remove a connection
Change-Id: I2118723345caf6a68f03de74a4182506e7bf105c
2016-11-09 01:04:04 +01:00
Holger Hans Peter Freyther d7ab53dc16 client: Do not connect default connection if no ip/port present
Ignore the default connection if no srv_port and has been specified.

Change-Id: I6a3a9a0af73a9183a6b233937af3357d15a07f25
2016-11-09 01:04:04 +01:00
Holger Hans Peter Freyther 1448f50db4 client: Allow to configure and connect multiple servers
Allow to configure multiple servers and connect. Introduce a new VTY
node to allow multiple servers. Add an explicit connect. Do not put
the main connection into the same list but assume it exists.

Change-Id: I9448ad4a005dd7c7eb1c615d03e57d6cb058ae4d
2016-11-09 01:04:04 +01:00
Holger Hans Peter Freyther 956c3facf1 client: Enable a non-blocking connect to the PCAP server
If we want to have multiple servers we should not block when trying to
connect to one of them. Enable non blocking mode and handle the fd
specially until it is connected. E.g. on failed connect the read will
become readable but fail, otherwise it becomes writable.

Clear the write queue to make sure that the link data is sent first.
We might be able to introduce a osmo_wqueue_prepend.

Change-Id: Iae2bc264d15aa8598beefc194e3b8c4ebe87320a
2016-11-09 01:03:59 +01:00
Holger Hans Peter Freyther e3d7c3e154 client: Prepare to work with a list of servers
There is no VTY code yet and no servers in the list but it looks
good client this.

Change-Id: Ic35748f1a95a880a9fa49dd18361592d8ac941ba
2016-11-09 00:20:29 +01:00
Holger Hans Peter Freyther bdda28b1f5 client: Finish renaming client to conn in other places of the code
Change-Id: I3c7c499c921b03752cbbcdda3eac8ca360323a22
2016-11-09 00:20:29 +01:00
Holger Hans Peter Freyther 13f397c68c client: Prepare to have multiple server connections
Take out various fields into a new connection class. We will have the
option to connect to multiple servers.

Change-Id: I820176d133fbdb0240a16eb4e1a6d505e5c080c6
2016-11-09 00:20:29 +01:00
Holger Hans Peter Freyther 0381276993 Merge branch 'feature/tls'
Add TLS support to the client and server. What is known working is
support of anonymous mode with generated DH params. Mildly tested
by hand over localhost.
2016-09-08 16:32:36 +02:00
Holger Hans Peter Freyther 22acd211f1 test: Add tls config file and enable tls a bit
Change-Id: Iba0008e3e0da276cc65c7501145b65294233febb
2016-09-08 16:24:04 +02:00
Holger Hans Peter Freyther 07b94157ec doc: Add initial documentation for the tls support
Change-Id: Ifc042e6755c223339fafbc3af9106073341f9b45
2016-09-08 16:17:02 +02:00
Holger Hans Peter Freyther cf29fd7069 server: Add vty interface for the TLS configuration
Make the priority configurable, load DH params, allow to specify
certificates or anonymous operations.

Change-Id: I8ec3c0f8e1ee2089e1b7dacd9de842260930032f
2016-09-08 16:17:02 +02:00
Holger Hans Peter Freyther ff3314e45c server: Allow to enable tls for the pcap server
Add simple vty command to enable tls per client or not. We still
need a lot more tls commands for the server.

Change-Id: I583b7d5c999ed01c135882895fb2a8f04739ad00
2016-09-08 16:17:01 +02:00
Holger Hans Peter Freyther 9ea4da4bbb server: Introduce tls mode for the server
Using tls priority of NORMAL:+ANON-ECDH:+ANON-DH already allows a
client to connect to a server and protect the data using tls.

Generate the dh params on load (and do that for the client right
now as well) but that will go away soon.

Change-Id: Ifa2ad24c0a631573c259a3bf94b91a946ad9ec9d
2016-09-08 16:17:01 +02:00
Holger Hans Peter Freyther 064d224288 server: Re-factor the read dispatch and connection close
In preparation of TLS let's not call close_connection from
within the dispatch but return an error and then close the
connection from the outside.

Change-Id: I607fed0191907cfbc8887d749c88f7f4ffb87166
2016-09-08 16:17:00 +02:00
Holger Hans Peter Freyther 1bec9d5d09 server: Add API function to close a connection
Change-Id: I4295854c749d86ca8c34a979c877363d9f48e176
2016-09-08 16:17:00 +02:00
Holger Hans Peter Freyther 098850d0a8 server: Move to a write_queue for the conn socket
We are only reading from the socket and never write but the osmo_tls
code is integrated with it. We will never write and the queue size is
set to 0. Simplify the read_cb.

Change-Id: I32335b1f7b7ed06b92c6222516c185301ce13781
2016-09-08 16:17:00 +02:00
Holger Hans Peter Freyther 6413e7669e server: Update copyright after zmq changes
Change-Id: I8861acaaec5465de620637b7fdf3341517133c4f
2016-09-08 16:16:59 +02:00
Holger Hans Peter Freyther c266796caa client: Initial support for TLS in the client
Use GNUtls because it is GPL compatible and instead of mbedTLS seems
to have a working non-blocking I/O integration. GNUtls has various
issues that could not be resolved easily:

* Pick spdy as sub protocol
* gmt_time not randomized
* private key loaded to RAM (but not verified)

This is the beginning and not the end. Client support might need more
work with actual tls verification. Maybe more manual x509 cert
verification is needed and maybe client certs don't work at all. I try
to ignore renegotiation as I threw away the key.

Reload x509 creds and keys as they might have changed from one
connection to another.

Change-Id: I9128e14084da1fc2705f858393f98b8133996172
2016-09-08 16:16:55 +02:00
Holger Hans Peter Freyther c1c194393b client: Add API function to close and re-connect network connection
Change-Id: Ib4e17948ffa84e73c1c81734e6002a73251d744b
2016-09-08 15:48:02 +02:00
Holger Hans Peter Freyther 3d439d0d08 tls: Add initial ideas about TLS in the client/server
Change-Id: I63a8cea776e57dce747a357c40f9caa0a9e2d3b5
2016-09-08 15:48:02 +02:00
Holger Hans Peter Freyther 0b4b824887 tests: Enable the vty tests for the osmo-pcap as well
Change-Id: I1704e0d58a04770a3aac1f70f3e01ee9ac585dbf
2016-09-08 15:21:29 +02:00
Holger Hans Peter Freyther fa5572e2af client: Use pcap_stats and export them as statistics
Attempt to write code that detects the wrap and is doing the
right thing when it happens.

Change-Id: I501ebc49d3e86b0605ec1fbe2f62aee3f362aa36
2016-08-19 20:28:21 +02:00
Holger Hans Peter Freyther 99526a6ad0 server: Add global and per client counters and begin to count
Add the basics for getting a picture what a client and the server
is doing. We need to create unique descriptions as the code is
working with names and not numbers for clients.

Change-Id: I4a9be5bdd815d280cccf0199efc2ca79fc77d393
2016-08-19 19:23:00 +02:00
Holger Hans Peter Freyther c3455dcb79 client: Additional counters for the statistics
Add more counters and start counting them when reading from the
PCAP library and when trying to write to the socket.

Change-Id: I52d3064a265b402ac849d8578a14f718156c0805
2016-08-19 17:31:01 +02:00
Holger Hans Peter Freyther f416463a3c client: First round of statistics in the pcap client
Count certain events that can help to understand what is going on.
This includes OOM, failure to queues.

Change-Id: I4a2dad32afb577822c7181d2813ea5a7e693c704
2016-08-18 18:39:53 +02:00
Holger Hans Peter Freyther 918be51338 server: Fail if the telnet interface can not be bound
Change-Id: Ibd14da3e7f62065f5d28d4a90d2b55eed609b64f
2016-08-18 18:37:13 +02:00
Holger Hans Peter Freyther 86282d65db client: Fail to start if it can't bind the telnet interface
Change-Id: Ic628dd348f8fce978691aaa331b0e67ee13f10c6
2016-08-18 18:34:27 +02:00
Holger Hans Peter Freyther 6e938eda1c stats: Initialize the stats(d) backend in the client/server
Initialize the stats backend allowing key performance indicators
to be pushed out of the system.

Change-Id: Id652b60d230f705b927e49d81cd3731432156c7e
2016-08-13 10:36:58 +02:00
Holger Hans Peter Freyther f8ff41e0f9 misc: Address compiler warning about deprecated header
In file included from osmo_client_main.c:27:0:
/home/ich/install/openbsc/include/osmocom/core/process.h:1:2: warning: #warning "Update from osmocom/core/process.h to osmocom/core/application.h" [-Wcpp]
 #warning "Update from osmocom/core/process.h to osmocom/core/application.h"

Change-Id: Id60cf90ebb7255d79f8e3bdb81f099f1362d538b
2016-08-13 10:31:02 +02:00