Commit Graph

34 Commits

Author SHA1 Message Date
Harald Welte 3dcdd20343 add missing copyright / license headers everywhere
Change-Id: I5c1fceead0ee799a948995f55c6ebee441cfb79a
2019-03-09 13:11:56 +01:00
Harald Welte 3cded63aa6 naming: Distinguish "rspro client" from "remsim client"
"remsim-client" is the client program running next to a phone/modem
which is attaching to the SIM slot.

"RSPRO client" is a protocl-level client of the RSPRO protocol:
* the remsim-client connects as RSPRO client to the remsim-server
* the remsim-client connects as RSPRO client to the remsim-bankd
* the remsim-bankd connects as RSPRO client to the remsim-server

Let's clarify this in naming.

Change-Id: I10462d4669a0a30c46f3f8d3df67e9c1d4ce8c4b
2019-03-09 13:11:56 +01:00
Harald Welte 707c85a49b Split "RSPRO client FSM" from "BANKD client FSM"
This allows the RSPRO client FSM to be used by both remsim-client
as well as remsim-bankd -- both of which connect as RSPRO client to
remsim-server.

Change-Id: I57b5f8dc9de522b6ae8ceb030e639b5b8001b55a
2019-03-09 13:11:48 +01:00
Harald Welte cbd18960e7 generalize slotmap to make use of it outside of bankd
Change-Id: I0ca7feaa38dfd0468814ef5a1eff997ce854cedf
2019-03-03 19:38:40 +01:00
Harald Welte 61d98e9f3e share debug.[ch] across all executables
This avoids us having to re-define log_info/log_info_cat for each
program.

Change-Id: I22f4f8a51b91ee09c5be26b1ed1bfca41730c577
2019-03-03 15:43:07 +01:00
Kevin Redon ff5db6e81e ensure the local asn1c library is used
Change-Id: Icc91c8f422965fec9c247aa9006e993c15f86d93
2018-10-12 14:09:04 +02:00
Harald Welte 5a3613a57f bankd: Ignore IPA CCM and don't terminate if we receive it
The IPA multiplex has a built-in sub-protocol called "CCM", which
we are not implemnting so far.  We still don't implement it, but
at least we don't terminate the TCP connection anymore if any such
unsupported IPA CCM is received.

Change-Id: Ibf7bf2aa973c3f7503479c35adfdc135d7165618
2018-10-12 14:04:19 +02:00
Harald Welte 43ab79f8c2 remove libasn1c dependency and use asn1c without libasn1c
TODO: re-introduce talloc integration for asn1 runtime

Change-Id: I2140509c5359727f304470249be2a726b9a8deb1
2018-10-03 23:34:21 +02:00
Harald Welte 8f893ff208 bankd: Add FIXME to the main thread
Change-Id: I5d36afdf2417023d09e7029244e2e649f08266b2
2018-10-03 23:23:44 +02:00
Harald Welte 7b41d9c863 bankd: Remove second \n after PC/SC OK statements
Change-Id: I80cc727d0260599d8114b1050f04cf17977944f2
2018-10-03 23:15:10 +02:00
Harald Welte 150d6d6788 bankd: more timeout/retry handling, including resolving slotmap
Change-Id: I6541456700d2615a391d8163424b3e39561a29c0
2018-10-03 23:13:21 +02:00
Harald Welte 694df83f35 bankd: Implement re-opening/connecting to card/reader
Change-Id: I5f4b12a76f82776cfd929bd56a4a1f0d4217be65
2018-10-03 22:47:52 +02:00
Harald Welte 31c9eca75a bankd_main: Set the pthread name for easier debugging
Change-Id: Ib1bf2b392ee161ba0d2d01bec927c2c0293a8f3b
2018-10-03 21:03:34 +02:00
Harald Welte f94b9ee67b bankd: Initialize logging early.
In case libosmocore wants to log e.g. a failure to bind the port,
we must have initialized logging before that point.

Change-Id: I86e805a66da6269748e6bd3164e5c0342e014f77
2018-09-25 15:04:21 +02:00
Harald Welte 9ebbacc801 correctly use asn1c API: PDU pointers must be NULL when calling decoder
If the pointers are != NULL, asn1c assumes their memory has already been
allocated, rather than dynamically allocating storage for it.

Change-Id: I6b78be75d8927f032ca4051520a3053b3fbf9e13
2018-09-24 17:46:05 +02:00
Harald Welte e1176cf510 bankd: Print error messages in more error cases during IPA read
Change-Id: I5b9720688ebda8ad37109c0cd32e8804678f46ac
2018-09-24 14:54:58 +02:00
Harald Welte f1dd16291e bankd: Add app_comp_id to use repro_util helpers
Change-Id: Ie981388220ed0612e427d076f8741fec73e6026b
2018-09-24 14:54:23 +02:00
Harald Welte 3e689874ff bankd: Handle errors during PC/SC open/connect
Change-Id: I304b4f73433d6027409aeef7faf04d4e8acd2e54
2018-09-24 14:52:56 +02:00
Harald Welte fd47119111 use msb->l2h as pointer to the RSPRO part inside msgb
Change-Id: Ib8d02047ec64178f9ee235534dab3d9bf4ead296
2018-09-24 14:52:17 +02:00
Harald Welte e72e57383d bankd: Add hack for hard-coded slotmap
As we don't yet have any software that would dynamically install
slot mappings into bankd, let's add a bunch of them as compiled-in
defaults during bankd_init().   This must of course be removed once
the dynamic slot mapping configuration from remsim-server exists.

Change-Id: I04d6ed68c9b9bfb559a41c705884cce4394ea926
2018-09-23 19:31:55 +02:00
Harald Welte 796a7492c7 bankd: Add code to handle TPDUs in rx and tx direction
Change-Id: Icb35ad28939392e75a17b732834d9d570452164f
2018-09-23 19:31:28 +02:00
Harald Welte 57593f0ce9 bankd_main: Missing state transition to BW_ST_CONN_CLIENT_MAPPED_CARD
After we opened the card, we need to transition in this state.

Change-Id: I2de62045bae6313620e81b24d883cec9e4b6017f
2018-09-23 19:30:31 +02:00
Harald Welte 48865c284b bankd_main: Fix SCardConnect(): Needs dwActiveProtocol output param
Change-Id: I4d07d75966afbf4af7ac592ecdef61074a329186
2018-09-23 19:30:07 +02:00
Harald Welte 45c948cc10 bankd_pcsc: Add CSV based mapping of bank-id/slot-nr to PC/SC reader name
In the PC/SC world, each slot is associated with a string name. In the
bankd for PC/SC readers, we need to establish a mapping which
bank_id/slot_nr maps to which given string name.  We use a minimalistic
CSV file for defining those mappings.  The file is read only once at
bankd startup time.

Change-Id: Ifd2caab670625e2e3fbc57b966dce2f43b690417
2018-09-23 19:29:51 +02:00
Harald Welte af61473729 bankd: Resolve slot mapping after client identifies itself.
If mapping cannot be resolved, transition to new
BW_ST_CONN_CLIENT_WAIT_MAP state

Change-Id: I27b4bc301a784712808881a40636e9299816fe72
2018-08-17 22:10:05 +02:00
Harald Welte 371d026c6b RSPRO: Use ClientSlot in ConnectClientReq, ConfigClientReq
Change-Id: I33b44009eea338627b0ccbe69b9e4114e4fb85d8
2018-08-16 15:30:41 +02:00
Harald Welte 415e8f66ce bankd: Re-initialize client.peer_addr when recycling the thread
Change-Id: I56ed45bda4323326c42283f160f4b99a4138add1
2018-08-16 14:47:38 +02:00
Harald Welte ceb3e68fab bankd: Include worker state and file/line in LOGW output
Change-Id: I00974d7f567ec1d3142727d455549c76ec974a03
2018-08-16 14:47:11 +02:00
Harald Welte d6dfb8c045 bankd: use getnameinfo() to print client IP/port on connect
Change-Id: Ia721f993b4e4c0addf429fbd6179d7d379c0ccd0
2018-08-16 14:46:53 +02:00
Harald Welte cce2aadbb3 bankd: Add client.id to bankd_worker
Change-Id: I1461f626b579d92621df21b53bbbe8062fb97d72
2018-08-16 14:44:37 +02:00
Harald Welte 7f684a0021 bankd: Don't consume 100% CPU in main thread
Change-Id: I4586a4c00fcdd4540f84caa005d2f116a63aa59c
2018-08-16 14:43:50 +02:00
Harald Welte 12534e776d bankd: Actually create + listen to a socket
Change-Id: I3b6a2b8bd74afafe9575ab00a7f3738a8fac0861
2018-08-15 23:37:29 +02:00
Harald Welte 8d85829821 bankd: Log worker number; Add formal state + state transition function
Change-Id: Ib18e3ad79657e9423a1c1ac75438abcd2e4fdbbd
2018-08-15 23:36:46 +02:00
Harald Welte 77911b0091 Add initial remsim-bankd skeleton
This is not a complete program yet, but a rough initial skeleton with
the key data structures in place, as well as the thread / locking model
in place.

Change-Id: I5ad5a1a4918b8eacdaeb7e709ff05dc056346752
2018-08-15 08:56:31 +02:00