Commit Graph

116 Commits

Author SHA1 Message Date
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 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 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
Holger Hans Peter Freyther df92652c95 vty: Fix compiler warning about type changes
osmo_client_main.c:57:2: warning: initialization from incompatible pointer type
  .go_parent_cb = osmopcap_go_parent,
  ^
osmo_client_main.c:57:2: warning: (near initialization for ‘vty_info.go_parent_cb’)
  CCLD     osmo_pcap_client
  CC       osmo_server_main.o
osmo_server_main.c:56:2: warning: initialization from incompatible pointer type
  .go_parent_cb = osmopcap_go_parent,
  ^
osmo_server_main.c:56:2: warning: (near initialization for ‘vty_info.go_parent_cb’)

Change-Id: If73c85a64789ef4bff63dcfe008e918e650b428f
2016-08-13 10:29:46 +02:00
Holger Hans Peter Freyther e024869a72 server: Add zmq based event and data interface to the server
To allow easily extracting or streaming the data to an external
analysis system, zeromq can be configured (and reconfigured). The
system works as fire and forget and no loss detection is present.

A simple go based client application is provided to subscribe to
the publisher.

Change-Id: I4f3e6d675023a81b7d2ee19bf1f44a2be0ca003c
2016-08-05 16:10:05 +02:00
Holger Hans Peter Freyther ad29ce6f06 server: Add zmq interface for publishing events
Change-Id: I383558bb9aad3cb149f35e13910a1d6aa79afc84
2016-08-04 18:02:57 +02:00
Holger Hans Peter Freyther 2899428be2 server: Add a config knob to not store the pcap stream
We might only want to centralize the data streams but handle the
data differently. This will be combined with an upcoming ZeroMQ
publisher feature to broadcast all events out.

Change-Id: I12c6bf16310820d882fa28c6930931650475e0bb
2016-08-04 16:14:38 +02:00
Holger Hans Peter Freyther ddc698fa92 freebsd: Another fix for the next file
Change-Id: I509e44c48d7983b305bc5fbcd9360ead74ef8d68
2016-05-03 14:37:31 +02:00
Holger Hans Peter Freyther 072b183cd8 freebsd: Include netinet/in.h and hopefully fix the build
Fixes:
/usr/include/netinet/ip.h:69:17: error: field has incomplete type 'struct in_addr'
        struct  in_addr ip_src,ip_dst;  /* source and dest address */

Change-Id: I446f67b85122363de66c86ddb25c8392ffa61a4f
2016-05-03 14:37:28 +02:00
Holger Hans Peter Freyther 66b80cc8f5 client: Deal with external representation for pcap files
We need to convert the 64bit timeval on a 64bit userspace (or on
OpenBSD) into a 32bit truncated value for being able to write the
file. This means we have 2038 issue here?
2015-12-03 22:13:38 +01:00
Holger Hans Peter Freyther 42421c4f7e client: Allow receiving jumbo frames on the client as well
Check the caplen and see if it is bigger than our assumed
maximum. Make sure we have enough space for data+hdr+hdr.
2015-12-03 20:28:04 +01:00
Holger Hans Peter Freyther ff1a5dc751 server: Deal with jumbo frames on the wire
The 2000 as a number is too small. Modern networks can have a
higher MTU (up to 9000). Take this number and assume there is
a big header in front of it.
2015-12-03 19:53:24 +01:00
Holger Hans Peter Freyther 26327bd0ce server: Fix the language and refer to the received data length 2015-12-03 19:29:38 +01:00
Holger Hans Peter Freyther 74f89c6119 gprs: Do not collect BVC FLOW CONTROL / ACK messages
These generate a high amount of traffic. They are good to debug
ip.access nanoBTS GPRS crashes/service outage but in general cause
too much traffic.
2015-11-19 10:14:56 +00:00
Holger Hans Peter Freyther ae5ec91a40 gprs: Remove left over for counting llc frames
These variables were used to verify how many LLC frames were
seen.
2015-09-10 17:02:18 +02:00
Holger Hans Peter Freyther b7a834b4cb gprs: Add a custom GPRS filter
Allow to inspect UDP messages and check for GPRS, NS, BSSGP
and then filter LLC frames. Parsing the vL datastructure with
the libpcap syntax is a pain. It could be done using BPF but
we do not want to use bpf asm to specify the entire ruleset.

I looked into using libepan/libwireshark but this has memory
issues and is painful too. So let's parse UDP, NS, BSSGP using
the info we already have. I tried a bit of editcap to generate
a bit of broken data. The length check might still be bad.

I used my crash_20100602.pcap file to count the LLC frames we
detect and compare that to wireshark it ended with the right
number.

  pcap add-filter gprs

can be used to enable the new filtering option after the OS
has received the packet.

Fixes: ONW#1314
2015-09-10 16:55:33 +02:00
Sylvain Munaut 07d96eb654 build: Replace deprecated INCLUDES with AM_CPPFLAGS
Thanks to mnhauke

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2014-12-22 22:33:31 +01:00
Holger Hans Peter Freyther fc3a427fb1 build: Properly link and package the example configurations 2012-11-06 09:06:44 +01:00
Holger Hans Peter Freyther b4fc89bfcf smatch: Check the client->device variable
This is fixing:
src/osmo_client_core.c +105 osmo_client_capture(8) warn: variable dereferenced before check 'client'
2011-07-19 17:59:00 +02:00
Holger Hans Peter Freyther cae1b7c960 misc: Remove process.h include, osmo_daemonize is in application.h now 2011-07-19 17:56:52 +02:00
Daniel Willmann b000368ad6 Catch up with API change in osmo_sock_init
The connect0_bind1 parameter has been replaced by a generic flag
parameter. With this patch osmo-pcap works (only) with versions of
libosmocore 0.3.2 or newer - configure.ac changed to reflects that.
2011-07-19 17:56:09 +02:00
Daniel Willmann c7401c6c23 server: Register signal handler to reopen logfiles on SIGHUP 2011-07-19 17:56:07 +02:00
Daniel Willmann de77386d84 server: Fix memory leak and error handling in restart_pcap 2011-07-19 17:56:03 +02:00
Holger Hans Peter Freyther f60990e3f4 server: Allow the group to read the files too 2011-06-10 15:29:46 +02:00
Holger Hans Peter Freyther dea9e8bbfe server: Make the maximum file size configurable 2011-06-10 15:23:04 +02:00
Holger Hans Peter Freyther 91eaae33ea osmo-pcap-server: Read the header in pieces too... 2011-06-02 17:58:46 +02:00
Holger Hans Peter Freyther 39d904f149 osmo-pcap-server: Try to read the the data with a simple state machine 2011-06-01 18:49:07 +02:00
Holger Hans Peter Freyther 9df7dc5f69 wireformat: Send the length in the network order..
this is a format change. but it is necessary now.
2011-06-01 17:34:09 +02:00
Holger Hans Peter Freyther 59bfb5854d osmo-server-network: Print the size of the packet.
Fix a typo, print the data we received and what we wanted.
2011-06-01 17:00:12 +02:00
Holger Hans Peter Freyther b1f5d5ebed osmo-client-core: Use the >= 0 handling. 2011-06-01 16:57:25 +02:00
Holger Hans Peter Freyther afcc2ae172 osmo-pcap-server: Indent the port properly 2011-06-01 16:33:55 +02:00
Holger Hans Peter Freyther 54ff0b1b86 osmo-pcap-server: Just check for >= 0 to find a valid fd 2011-06-01 16:33:11 +02:00
Holger Hans Peter Freyther dc3d1dcd59 osmo-pcap-server: Initialize local_fd with -1 otherwise 2011-06-01 16:32:29 +02:00
Holger Hans Peter Freyther e6acfea051 osmo-pcap-server: Deal with systems not providing these macros 2011-06-01 15:31:50 +02:00
Holger Hans Peter Freyther 0391b0a9c3 osmo-client-core: Work with older pcap libraries 2011-06-01 15:31:11 +02:00
Holger Hans Peter Freyther 7309a906d0 osmo-pcap-server: Write the pcap files to disk, roll them over 2011-06-01 14:09:26 +02:00
Holger Hans Peter Freyther 88c07f2b7e osmo-pcap-server: Prepare a file limit, initialize the base path 2011-06-01 14:02:54 +02:00
Holger Hans Peter Freyther 80b8b606c5 osmo-pcap-server: Accept the client connection from a given host
We now read from a given system.
2011-05-31 23:42:48 +02:00
Holger Hans Peter Freyther 9f6127f592 osmo-pcap-server: Work on the generic VTY interface for the server
Work on being able to configure clients that are allowed to
connect to the server.
2011-05-31 23:42:48 +02:00
Holger Hans Peter Freyther 13619dd235 osmo-pcap-server: Start with the skeleton of the pcap server 2011-05-31 23:42:48 +02:00
Holger Hans Peter Freyther 77288207fa osmo-pcap-client: Connect to a server, send the data to it 2011-05-31 21:19:52 +02:00
Holger Hans Peter Freyther cd2d3db3b7 osmo-pcap-client: Set the filter string on the pcap device.. 2011-05-31 21:19:51 +02:00
Holger Hans Peter Freyther bac0c98d22 osmo-pcap-client: Do not print the strings if they are NULL
this makes glibc add the (null) for us, but we don't want that
as we would attempt to compile a filter or open a device with that.
2011-05-31 17:55:45 +02:00
Holger Hans Peter Freyther 3b9b38ca68 osmo-pcap-client: Work on the client code, be able to open the device
Add vty code to allow changing the device, this will just attempt
to open and close the device. Nothing else is done.
2011-05-31 17:42:53 +02:00
Holger Hans Peter Freyther 47169baa6e common: Add the default case, e.g. needed for the logging code 2011-05-31 17:42:53 +02:00
Holger Hans Peter Freyther 530ecc0879 osmo_pcap_client: Start with the framework for the pcap client
This is just the normal skeleton for the osmocom code.
2011-05-31 15:47:44 +02:00
Holger Hans Peter Freyther 430366a2c5 osmo-pcap: Create a dummy client. 2011-05-31 11:16:55 +02:00