145 Commits
0.1.0 ... 0.4.0

Author SHA1 Message Date
Pau Espin Pedrol
d5c0b73f00 Bump version: 0.3.0.93-65d3 → 0.4.0
Change-Id: I8a7e8830dba3193419e4854588a98d1572747344
2022-08-08 11:42:57 +02:00
Vadim Yanitskiy
65d3c505b7 libosmo-sbcap: add -no-undefined to libosmo_sbcap_la_LDFLAGS
Make sure that there is no undefined references in shared libraries.

Change-Id: Id08bbd5ba35ef3f507f60f31a0634f921ec1db65
2022-08-05 11:47:44 +00:00
Pau Espin Pedrol
13152304f7 cbsp: Store content of received Cell Id from Failed List
Change-Id: I10d2627cb5ef327fd57c22480a4e7d9a464930f0
2022-08-04 14:17:48 +02:00
Pau Espin Pedrol
40a6158e41 cbsp: Log storing of CellId info received from peers
This is already done similarly in Sbc-AP.

Change-Id: I81ad8d40c5e2b9fbc011db795993fb7f00e99692
2022-08-04 14:07:45 +02:00
Pau Espin Pedrol
d78f13c89a sbcap: Add Concurrent-Warning-Message-Indicator IE to Write-Replace-Req
3GPP TS 23.041 9.3.32 states that the IE is always present for non-ETWS
messages and never present in ETWS messages.

Related: OS#4945
Change-Id: I4a5ac56b7e6eeb85aee07ae2ddf10fa2afbbf4ef
2022-08-02 17:58:10 +02:00
Pau Espin Pedrol
28d3a53dc5 cbsp/sbcap: Fail if trying to Tx on non-connected (connecting) link
This way upper layers know right away that the message could not be
transmitted to that peer.

Change-Id: I1d2285d18ee064fd78191765e8cb833bf5ee08a4
2022-08-02 11:48:59 +02:00
Pau Espin Pedrol
caba7fc493 cbsp/sbcap: Set link fsm id with peer's name
Otherwise the id is left unset.

Change-Id: I8a6850293cbe01c66e4fb545d646d63743ddaecb
2022-08-02 11:48:59 +02:00
Pau Espin Pedrol
cb4e11f984 cbsp: Fix heap-use-after-free closing cli conn in connecting state
if conn is not in STREAM_CLI_STATE_CONNECTED state, it won't call disconnect_cb during
osmo_stream_cli_destroy(), hence the osmo-cbc pointers holding are not
nullified correctly.

"""
20220801174147247 DCBSP NOTICE ttcn3-bsc-server: Disconnected. (cbsp_link.c:101)
20220801174147247 DCBSP NOTICE ttcn3-bsc-server: Reconnecting... (cbsp_link.c:102)
20220801174147247 DLINP INFO [WAIT_RECONNECT] osmo_stream_cli_reconnect(): retrying in 5 seconds... (stream.c:287)
20220801174152235 DCBSP DEBUG CBSP-Link[0x612000002c20]{RESET_PENDING}: Timeout of T3 (fsm.c:317)
20220801174152236 DCBSP DEBUG CBSP-Link[0x612000002c20]{RESET_PENDING}: timer_cb requested termination (fsm.c:327)
20220801174152236 DCBSP DEBUG CBSP-Link[0x612000002c20]{RESET_PENDING}: Terminating (cause = OSMO_FSM_TERM_TIMEOUT) (fsm.c:332)
=================================================================
==17==ERROR: AddressSanitizer: heap-use-after-free on address 0x6180000024f0 at pc 0x7fbd28a05d01 bp 0x7ffe247352b0 sp 0x7ffe247352a8
READ of size 4 at 0x6180000024f0 thread T0
    #0 0x7fbd28a05d00 in osmo_stream_cli_close /tmp/libosmo-netif/src/stream.c:307
    #1 0x7fbd28a0a5b3 in osmo_stream_cli_destroy /tmp/libosmo-netif/src/stream.c:714
    #2 0x55c3534a0322 in cbc_cbsp_link_close /tmp/osmo-cbc/src/cbsp_link.c:356
    #3 0x55c3534a16e1 in cbsp_link_fsm_cleanup /tmp/osmo-cbc/src/cbsp_link_fsm.c:199
    #4 0x7fbd28bf5085 in _osmo_fsm_inst_term /tmp/libosmocore/src/fsm.c:947
    #5 0x7fbd28be6881 in fsm_tmr_cb /tmp/libosmocore/src/fsm.c:332
    #6 0x7fbd28bc70ab in osmo_timers_update /tmp/libosmocore/src/timer.c:269
    #7 0x7fbd28bcba5b in _osmo_select_main /tmp/libosmocore/src/select.c:394
    #8 0x7fbd28bcbb31 in osmo_select_main /tmp/libosmocore/src/select.c:438
    #9 0x55c35348bce8 in main /tmp/osmo-cbc/src/cbc_main.c:314
    #10 0x7fbd27a4cd09 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x26d09)
    #11 0x55c353488ce9 in _start (/usr/local/bin/osmo-cbc+0x68ce9)
"""

Change-Id: Ic13578e958345207892465644b5e1f28537c032d
2022-08-01 20:36:49 +02:00
Pau Espin Pedrol
a76d15048d *_smscb_peer_fsm: Immediately NACK if Tx of msg failed
This makes the smscb_message_fsm receive immediate notice that this peer
failed to deliver the message, avoiding need to wait for 10 seconds
timeout.

Change-Id: I1f3911accb327f3378d65902d53d86fb298fd528
2022-08-01 10:55:21 +02:00
Pau Espin Pedrol
20705a0877 cbsp/sbcap: Fix memleak in error condition (tx without link)
Change-Id: I95f6ab4e642529afc583b0747450b83af1e8f32e
2022-08-01 10:54:02 +02:00
Pau Espin Pedrol
041ae3246d sbcap: Fix NULL pointer dereference
Related: Coverity CID#275347
Change-Id: I9ae1cad4ce4e3fe6cfd67ac6058fb7345a3dd49e
2022-08-01 10:49:12 +02:00
Pau Espin Pedrol
e86af042fd Propagate error to caller when tx cbsp/sbcap Write-Replace-Req fails
Change-Id: Ie40c8e41c297398bbec48f7bb2c60cfdc703fa5d
2022-07-29 17:55:33 +02:00
Pau Espin Pedrol
0b8a08b698 cbc_main: Enable logging of fsm timeouts
Change-Id: I6ffbfbc8eddb3efff0b6401223b9b5563cf83b51
2022-07-29 17:55:33 +02:00
Pau Espin Pedrol
d24c3dfba0 Split smscb_peer_fsm into CBSP and SBcAP specific FSMs
This further simplifies tracking of events and simplifies and clears
code on each of the FSMs.

Change-Id: I0fd00b60cdc6bc6a088be1336d849548ca89c847
2022-07-29 14:54:26 +02:00
Pau Espin Pedrol
c190939f0c Split event list for smscb_message_fsm and smscb_peer_fsm
It really doesn't make sense to share the event list betwen those for
several reasons.
First, because ech of those FSM relate to different things:
* smscb_message_fsm: Handling/scheduling of 1 smscb towards all peers
* smscb_peer_fsm: Handling/scheduling of 1 smscb towards 1 peer.

The former has higher level interface used by the REST
API, plus some mid level interface used by smscb_peer_fsm.
The later has a mid level interface used by smscb_message_fsm to
interact, and a lower level interface used by the SBcAP/CBSP links to
talk to.

Furthermore, this makes it a lot easier understanding which events are
sent from one to another FSM.

Change-Id: I909474d1ff4ec7ed20aff0981da47074397df6cb
2022-07-29 14:49:30 +02:00
Pau Espin Pedrol
cb99991127 Introduce logging category smscb
The smscb_message_fsm is totally independent of CBSP.

Change-Id: I6e686747ddde9540ff3f765ef461bfca812615ba
2022-07-29 14:49:30 +02:00
Pau Espin Pedrol
e6e878a2fc sbcap: Improve handling of WriteReplaceWarnResponse
If cause != accepted, submit a NACK to the upper layers.
In that case, in the upper layers we don't want to parse the PDU IE
"Unknown Tracking Area List" since it shouldn't be there. 3GPP TS
29.168 4.3.4.3.6 states:
"""
This IE shall only be included if the Cause IE indicates Message accepted, which means the MME will proceed with the
request for Tracking Areas that are known to the MME. The Cause IE indicating Tracking area not valid is used when
all Tracking Areas in the Request are invalid.
"""

Change-Id: I0a4d5bdbb6c4fd3870a4f4ebf226668b70fea06a
2022-07-29 14:49:30 +02:00
Pau Espin Pedrol
d8a537aca8 sbcap: Store reported failed TAIs from WriteReplaceResponse in cbc_message_peer
Change-Id: I37b08aa374c1097d2871bf69a7bb7893f32bccd3
2022-07-29 14:49:30 +02:00
Pau Espin Pedrol
4a9d22e5a0 sbcap: Request and handle Write Replace Warning Indication
Change-Id: I563e7d1c999f14b8197bb41e85b7bcf6262fe2a0
2022-07-29 14:49:30 +02:00
Pau Espin Pedrol
1429377005 Move ASN1C enc/dec logging to its own category
ASN1C encoding/decoding can get really verbose. Furthermore, it should
only be enabled under really specific conditions, so it makes sense to
have it under its own category.

Change-Id: Ia4cbae2395532d9b5b7b9177a7d0f31bf777d751
2022-07-29 14:49:30 +02:00
Pau Espin Pedrol
bc21b3ae81 Move cbc_cell_id2str() and make it public
It will be used later on to log whenever new cell ids are added to a
message_peer.

Change-Id: I74ccbbc810a2fa76fb2999a7588b3f67d4d21e03
2022-07-29 14:49:30 +02:00
Pau Espin Pedrol
ab8b8402a4 sbcap: Log info about messages received and trasmitted
Change-Id: Ifd1eca79bf4fac63de8066cd6a18004138d51d04
2022-07-29 14:49:26 +02:00
Pau Espin Pedrol
e416069cf6 sbcap: Fix typo in comment
Change-Id: I6d519cb80a90e2a7e80e4608c713996f94043f21
2022-07-27 13:42:17 +02:00
Pau Espin Pedrol
e67faef4ec Move sbcap_as_find_ie() to libsbcap
This function is generic and can be (will be) used in more places.

Change-Id: Ib0c7fa12a8f6faa4271e4132ca5a5c656e717400
2022-07-27 13:42:17 +02:00
Pau Espin Pedrol
745a2d6600 sbcap: Tx Error ind if Rx ProcedureCode is unknown
Change-Id: I3ee760b98d87f179917acbc369f56d72d0db571d
2022-07-27 13:42:17 +02:00
Pau Espin Pedrol
b093e6708d sbcap: Improve logging on non-implemented PWS Restart/Failure Ind
Change-Id: I0085ac40a7676d9c3626a9da38d02d3b1b2cf6b4
2022-07-27 13:42:17 +02:00
Pau Espin Pedrol
66625de21c sbcap: Improve logging of rx Error Indication
Change-Id: I63871a57f219a98f8191e6ee4787fc33edb21528
2022-07-27 13:42:06 +02:00
Pau Espin Pedrol
6db8c13fea sbcap: Drop unused events
Those events doesn't exist in SBc-AP.

Change-Id: Ie4843ed5debbd4282df487ada9596b4d75f4b46c
2022-07-26 14:33:47 +02:00
Pau Espin Pedrol
3f9d78e2a3 sbcap: Send Error Indication if decoding rx msg fails
Change-Id: I444290f3d697e7485e04eaa38acd8fc3623e0eab
2022-07-26 14:33:47 +02:00
Pau Espin Pedrol
692243baf5 sbcap: Fix typo in sbcap_cause_vals
Change-Id: I519a86e5292c39bf1ad502c587838e7b62a0e64f
2022-07-26 14:33:47 +02:00
Pau Espin Pedrol
9ce5d4bad7 Rename functions generating CBSP/SBc-AP Write-Replace request
Previous naming is misleading, as it seems to indicate the function is
used to generate any kind of message, which is wrong.

Change-Id: Ib0228c64bbf104accdbbebb6076004a6a1f44c6f
2022-07-26 14:33:43 +02:00
Pau Espin Pedrol
7beca6fda0 Rearrange cbc_message and cbsp message code
Move code from message_handling containing both code for generic
cbc_message and specific cbsp_message into thers files. The former are
moved to cbc_message.c and the later to cbsp_msg.c, similar to what's
already done for SBc-AP messages.

Change-Id: Ie4082e40f23170cfd6c573fbbb7beb8c6226b6e6
2022-07-26 10:01:05 +02:00
Pau Espin Pedrol
4dd20eec56 vty: Fix typo in vty output
Change-Id: I601f9ebcf17c5129edbce5b3ac7f0fd8294dd572
2022-07-26 08:04:06 +02:00
Pau Espin Pedrol
9144fd1fd8 sbcap_msg: Improve spec references for used IEs
Change-Id: I55749aa84415e0af240c3cc46f2b274e1d24e403
2022-07-26 08:03:33 +02:00
Pau Espin Pedrol
3c804efcc6 vty: Print created and expired times for each message
This also allows differentiating between expired and active
messages.

Change-Id: I9ee49b99546a44be706700c3db94d45210c47e54
2022-07-26 08:03:33 +02:00
Pau Espin Pedrol
5ae411980b vty: Add command to delete expired messages
Otherwise there's no way to remove expired messages, which keep filling
the expired list forever.

Change-Id: Ie7ed2d9ec8fc23cdc4cb007dce4150458085a6a3
2022-07-26 08:03:20 +02:00
Pau Espin Pedrol
93a588ba60 vty: Fix 'show message' not finding expired messages
Change-Id: I23523876f1df167e8afd730b2164f133c2776085
2022-07-25 16:27:26 +02:00
Pau Espin Pedrol
56d1ef3b52 cbc_vty: Fix missing indent char in dump_one_etws_msg
Change-Id: I8cdced4fa108dede8d5f5dba37dde9cb199198ab
2022-07-25 16:27:26 +02:00
Pau Espin Pedrol
3ef5020007 Support CBSP/TCP and SBc-AP/SCTP client mode
This patch adds support to set up a CBSP link so that osmo-cbc connects
as a TCP client to the BSC, which runs as a TCP server.
Similary, support to set up a SBc-AP link so that osmo-cbc connects
as a SCTP client to the MME, which runs as SCTP server.

A new "mode (client|server|disabled)" VTY command is added to use one
mother or the other, and also to disable the link and hence the peer
until it is set again. This is useful if the peer is under manintenance
for instance.

client sockets are created automatically when the "peer" vty node is
exited if the link is not yet created, hence creating it at startup or
if moved back from "disabled" mode. If client socket dies, it will
keep attempting reconnect every 5 seconds.

Related: OS#4945
Change-Id: I3ec54b615b41b56f7a9c64298e3fcaac37f4b60e
2022-07-25 16:27:26 +02:00
Pau Espin Pedrol
5044524f01 cosmetic: smscb_message_fsm.c: Fix typo in comment
Change-Id: I2eb15c2401efa9b07a51dbe71997da01aab30bba
2022-07-25 14:27:48 +02:00
Pau Espin Pedrol
3468e90ab3 sbcap: Fix encoding of Warning-Type
Change-Id: I9f6a0779c20ba86962aaaebc9b40ad162d2f2f3e
2022-07-25 14:27:48 +02:00
Pau Espin Pedrol
028b48b967 cbc-apitool: print usage instead of crashing if no subcmd passed
The "required" param was added in python 3.7.

Change-Id: Ia8d13beeb8da64644d1aaf36deeddda4de889a6c
2022-07-25 14:27:48 +02:00
Pau Espin Pedrol
01338add1d cbc-apitool: Fix port stored in var as a string
Passing "-p 12345" on the cmd line, fixes:
"""
  File "/osmo-cbc/contrib/./cbc-apitool.py", line 20, in build_url
    return "http://%s:%u%s%s" % (server_host, server_port, BASE_PATH, suffix)
TypeError: %u format: a real number is required, not str
"""

Change-Id: Ief688bb8c2a6cfa410608a6896ce3cb5df4eb48e
2022-07-22 17:58:33 +02:00
Pau Espin Pedrol
a97e166ee7 Split cbsp/sbcap server socket creation from struct allocation
This will be needed when we add client support, since clients will
require the mgr structs to be available during VTY parsing.

Change-Id: I14e49d8d2e603925d7f06a7edb710c0eceb02ea3
2022-07-22 16:13:15 +02:00
Pau Espin Pedrol
5661cef889 Move struct cbc bring up code to its own file and functions
This way it's clear and we have in one place all the related code that
neds to be run at a given time.t

Change-Id: I00fe755340664d4ca4a5cfdcae8d4cd33b2f40a1
2022-07-22 15:45:09 +02:00
Pau Espin Pedrol
d462e452e1 vty: Define peer proto during 'peer' node cmd
This way we lock the type (proto) of each peer at creation time.
Otherwise, having the possibility of changing the protocol of the peer
makes all the code too complex and there's no good way to prevent the
protocol from being changed at any time creating unexpected issues.
If the user wants to change the protocol, she can do so by removing the
peer and re-adding it through the VTY with the desired protocol.

Change-Id: I47756dddd8f9b8450ba14c914614fd2391d5486e
2022-07-22 14:16:10 +02:00
Pau Espin Pedrol
b05a9a6615 cbc_main: Fix setting default SBc-AP local address
The issue was not spotted until now because until recently
cbc_vty_go_parent was not called due to another bug.

Change-Id: I697597438d8c45f5956b12e2a6ea76413e945e5e
2022-07-22 14:16:10 +02:00
Pau Espin Pedrol
54f50a4857 Fix cbc_vty_go_parent() not being called
Change-Id: I946c503f5a40eafbee6e7fa359781548b74e45a6
2022-07-21 21:50:04 +02:00
Pau Espin Pedrol
7a8a388edf Make cbsp,sbcap mgr available in data model
Change-Id: I60c3ded80c38bcf50b831c6e9db719a8d2cba5b1
2022-07-21 20:39:23 +02:00
Vadim Yanitskiy
bc606f8ea1 cbc_vty: use install_element[_ve](), not install_lib_element[_ve]()
As the naming suggests, install_lib_element[_ve]() should be used
for commands registered by libraries.  This API allows to enforce
some rules for command attribute letters and should not be used
by application specific commands.

Change-Id: I8c0c8ac66dfc4fc2b8bf9102fba0df2dd988e7c9
2022-07-21 20:33:42 +02:00
Pau Espin Pedrol
b4f7404b6c cbc_vty: write peer config nodes at the end
This way we end up with more "global" configs at the start of the file,
which are read/applied first, and later all the per-peer information,
which is a list of variable length.

Change-Id: I7623ea5874552e57764327e94a9c3a4de7b71d67
2022-07-21 20:33:42 +02:00
Pau Espin Pedrol
678a9cb385 Refactor {cbsp,sbcap}_cbc_accept_cb
Delay allocating the structures until really needed.
First do checks agains the opened connection, and if an issue is
detected simply close the fd.
Next, fetch or allocate the related peer.
Finally, create the link from the fd.
This makes it easier to add early extra checks later when peers will
contain info on link_mode (client|server|disabled) later on.

Change-Id: Id4f83ec6b0b14e556b1caa9c80e7f68d062fec57
2022-07-21 20:33:38 +02:00
Pau Espin Pedrol
85bc27d394 cbc_vty: print correct protocol when writing config
Change-Id: Id9fc0b42827f9a74ff1de4b35339de02aeeefee2
2022-07-20 21:02:53 +02:00
Pau Espin Pedrol
053018abeb cbc_vty: Use value_string to define proto names used in vty
This will be used in other places in a follow up patch.

Change-Id: I125c7e5ca1f86c2ef390a85975465330c3ae1eb0
2022-07-20 21:02:21 +02:00
Pau Espin Pedrol
351b2c8c2b Use cbc_{cbsp,sbcap}_link_close when possible
This way we abstract whether the underlaying stream is a TCP/SCTP client
or server.

Change-Id: Ie020b9b5ee93ae8d0c9e7266177728185e8635f2
2022-07-20 20:27:50 +02:00
Pau Espin Pedrol
907c4013c4 Rename fields in cbc_{cbsp,sbcap}_mgr
* link -> srv_link to avoid confusing with cbsp/sbcap links
* clients -> links, since it holds links, which in the future will be
  both TCP/SCTP clients and servers.

Change-Id: I4717f49413af45b45059c1601a667f4161b4ca8a
2022-07-20 20:16:35 +02:00
Pau Espin Pedrol
5f6dfe77d4 Rename {cbsp,sbcap}_server(_fsm).h s/server/link/
Change-Id: I1e56dd1fcba23f6efd209e9d4dcdc88c8866d250
2022-07-20 20:10:16 +02:00
Pau Espin Pedrol
d3be026b93 Rename CBSP,SABP,SBcAP structs and APIs
Rename osmo_*_cbc -> cbc_*_mgr:
Now they only hold TCP/SCTP server related conns, but will also hold
TCP/SCTP client conns in the near future.

Rename osmo_cbc_*_client -> cbc_*_link:
The term "client" is confusing, since it doesn't exist in CBSP/SBcAP,
and will later support connecting to server at TCP/SCTP level.
Let's use "link" instead, similar to what's used in osmo-bsc which
already supports both TCP client and server modes.

Change-Id: Ia9d26dc1593c8ee08dce348fe9f5f4c9398ea2a5
2022-07-20 20:10:13 +02:00
Pau Espin Pedrol
0f17a212d1 cbsp_server.c: Drop unused code
This will be properly implemented soon.

Change-Id: I5165e3c64d2c933027019264f68f94fb0c18e0e9
2022-07-20 19:48:02 +02:00
Pau Espin Pedrol
782d431068 sbcap_server.h: Remove unused fields
Change-Id: I3086a264557b976985d166e56fb7f70ad96b81df
2022-07-20 19:23:36 +02:00
Pau Espin Pedrol
881d5bab4b Get rid of internal.h
Let's create missing header files and move stuff around to have a clear
view of who implements what.

Change-Id: Ib32091d716b33bca58e2d3acf8840b52824c0bd3
2022-07-20 19:23:36 +02:00
Pau Espin Pedrol
36be606dd4 Split cbc_message related code to its own .c and .h file
Change-Id: I41f6e169b1ee6731cd472f6b72ea922260e30ceb
2022-07-20 19:23:36 +02:00
Pau Espin Pedrol
28ccced217 Move vty stuff to its own header cbc_vty.h
Change-Id: Ib793a74befb7eaad66d19967c28acb4baf52ea69
2022-07-20 19:23:36 +02:00
Pau Espin Pedrol
a346b88b42 Move function defined in rest_it_op.c to rest_it_op.h
Change-Id: I434357d995a3c90342dbc7d2ac7e568c049ff7ae
2022-07-20 19:23:36 +02:00
Pau Espin Pedrol
f9d73a1cc1 cbc_peer: Close SBcAP conn when removing active peer
Change-Id: I50751856ba10640ecf036ab587c5e821d37863e2
2022-07-20 19:23:27 +02:00
Pau Espin Pedrol
1486ac0191 Split cbc_peer to its own .c and .h files
Change-Id: I41c890d81e76ac1a1c89d42af70a1f0631e9724e
2022-07-20 17:58:45 +02:00
Pau Espin Pedrol
f4741401e2 sbcap_server: Fix double-free of rx msg if conn is destroyed
In sbcap_cbc_read_cb(), if sctp_recvmsg() fails and we end up calling
osmo_stream_srv_destroy(conn), then both conn and client will end up
being freed by sbcap_cbc_closed_cb(), so we cannot use them anymore
after calling osmo_stream_srv_destroy(conn).
Furthermore, since msg was allocated with "client" ctx as parent, it
would also be freed when "client" was freed.
Let's make the logic easier and alloc it under g_cbc, which is
guaranteed to always be kept there.

Change-Id: I201f44efa24a514e0087b6dcd01115b9b2b8e9db
2022-07-20 17:58:45 +02:00
Pau Espin Pedrol
f955099737 sbcap_server: Log all sctp notif
Change-Id: Ibe73f1e976f088154c2a20e2c7dd98b39a475c08
2022-07-20 17:58:45 +02:00
Pau Espin Pedrol
5c39ea182d sbcap_server.c: Remove unneeded goto
Change-Id: I02cf8e7ec05d5189d9c6dcc9a7b1e4def80220d7
2022-07-20 17:58:45 +02:00
Pau Espin Pedrol
3f7eb33673 Improve example osmo-cbc.cfg file
Change-Id: I585ef7a6195891df36751999ee91ded799612c66
2022-07-20 16:05:01 +02:00
Vadim Yanitskiy
bd20466a2e tests/sbcap: fix wrong operator used in OSMO_ASSERT statement
Change-Id: I6fe9080302166ad9bdc305eab736d51496dd1ff8
Related: CID#274972, CID#274971
2022-07-20 05:05:44 +07:00
Pau Espin Pedrol
dcf9014f1d sbcap: Update asn1c skeleton files
Update skeleton files using newest asn1c with APER support [1],
commit eb4cd0c2a891a7dbfe90b4cb8cca545879b6d622.

This contains APER fixes for 32bit architectures.

[1] https://github.com/mouse07410/asn1c/tree/vlm_master/

Change-Id: I9ca556dec639223a8d37badb908fab254826192e
2022-07-19 20:32:50 +02:00
Pau Espin Pedrol
75f3c1da5a vty: Fix call to OSMO_STRBUF_PRINTF
"""
osmo-cbc/src/cbc_vty.c:61:3: error: format not a string literal and no format arguments [-Werror=format-security]
   61 |   OSMO_STRBUF_PRINTF(sb, peer->remote_host[i]);
"""

Change-Id: I90e7bdbe9f01dae9269ae4850bc2d7391fee71ec
2022-07-19 09:10:12 +00:00
Pau Espin Pedrol
3df34be9ce Fix printf format in 32bit arch
Change-Id: I1273a42da2362c2b65169343e3b8d856338b3973
2022-07-19 09:10:12 +00:00
Pau Espin Pedrol
384cff745e doc: Document SBc-AP support and config
Change-Id: Ic14ec2766fce251a6fe52a77d7bc0bbcd8d3afbf
2022-07-19 09:10:12 +00:00
Pau Espin Pedrol
c47c6a9e2e doc: user manual: fix typo
Change-Id: I20e595581f7d6145a01e9c0a6b0eb2af7637bfd9
2022-07-19 09:10:12 +00:00
Pau Espin Pedrol
6e59534d6b Add initial SBc-AP support to osmo-cbc
This patch makes use of the newly introduced sbcap library, and
introduces new code (and extends existing one) to handle all the aspects
of MME peers talking SBc-AP and its underlaying SCTP connection.

This commit doesn't aim to implement all the SBc-AP features, but to
implement a minimal subset of features already available for CBSP in
osmo-cbc, in order to have similar support level for both 2G and 4G
networks.

Related: OS#4945
Change-Id: Ib278bc1d1a74459814016fef7a8fe21cc29d46c9
2022-07-19 09:10:12 +00:00
Oliver Smith
ac2f4037bc libosmo-sbcap.pc.in: new file
Related: OS#4945
Change-Id: I9a7cf40e68cc246cab81f8c93485b83f75dcf778
2022-07-18 13:57:04 +00:00
Oliver Smith
3f0839d1cb debian: add subpackages libosmo-sbcap0/-dev
Related: OS#4945
Change-Id: Ic0e80000b377f80c3914e607e94e998e9862ceac
2022-07-18 13:57:04 +00:00
Oliver Smith
88613b7d44 contrib/osmo-cbc.spec: add libosmo-sbcap0/-dev
Fix for:
  error: Installed (but unpackaged) file(s) found:
  ...

Related: OS#4945
Change-Id: I789b32c9a9e1fd3f11db8593da3c3ac9a20aeb3d
2022-07-18 13:57:04 +00:00
Pau Espin Pedrol
3c846a7f36 sbcap: Update asn1c skeleton files
Update skeleton files using newest asn1c with APER support [1],
commit 24247e2813a7510ebabe6a9b6b6b29fffa0eb27b.

This contains some APER decoding and encoding fixes for length
determinants. See [2] for more information.

[1] https://github.com/mouse07410/asn1c/tree/vlm_master/
[2] https://github.com/mouse07410/asn1c/issues/94

Change-Id: I581fc53b124a443e150508811df4cca4593038c4
2022-07-18 11:49:08 +02:00
Pau Espin Pedrol
ca432adbcb Add unit tests for sbcap
This commit adds some minimum unit tests to validate encoding and
decoding of SBc-AP ASN.1 APER format is working properly.

Related: OS#4945
Change-Id: I5a26d008b7282da637c3781ae77435c6a69cf65d
2022-07-15 15:53:39 +02:00
Pau Espin Pedrol
4b8175d189 Add sbcap library
This commit adds initial support to encode/decode SBc-AP messages in the
form of a library, under src/sbcap/ (includes in
include/osmocom/sbcap/).
asn1c is used to generate all suport code and structures for ASN.1 APER
encoding/decoding, based on asn files obtained from 3GPP TS 29.168 and
stored under src/sbcap/asn1/.
Currently, mainstream asn1c doesn't yet support ASN.1 APER
encoding/decoding, hence mouse07410 's fork is used [1]. Furthermore,
several encdoing/decoding bugs where found during the process and fixed,
which means asn1.c git >= 30219de2d3da888b4f1eea0dd79f2a505000401a must
be used to generate proper code.

A new "make -C src/ gen" target is added which can be used to regenerate
all C code from the available ASN.1 files in src/sbcap/asn1/*.asn (after
properly setting configure.ac ASN_* variables if needed).

[1] https://github.com/mouse07410/asn1c

Related: OS#4945
Change-Id: If76f8619a9b2d46af6d94b8ae49348b8514e53aa
2022-07-15 15:53:35 +02:00
Oliver Smith
98d5b6143a checkpatch.conf: ignore sbcap generated files
Prepare to add sbcap library in
If76f8619a9b2d46af6d94b8ae49348b8514e53aa.

Change-Id: Icc5150b2c835f8a9c6b584da5e01ab2fd938ee45
2022-07-15 09:17:36 +00:00
Oliver Smith
4b19583188 gitreview: add new file
Change-Id: Ie1539f23b67dadce29d03f1e6542eb8077b25504
2022-07-15 09:14:07 +00:00
Pau Espin Pedrol
cc599727c7 rest_api: Fix cbs.data_user_len not set in 'payload_encoded'
This is later used in cbcmsg_to_cbsp(), but only set for type
'payload_decoded' in parse_payload_decoded().

Change-Id: I519cf300cd01e8c2728babeaa77b8486f47115be
2022-07-12 19:42:45 +02:00
Pau Espin Pedrol
a12affbc0f cbsp: Clean up conn closed paths
Change-Id: I08d1da97f0a2d83f7f48c59bc4dbd669f4f814b3
2022-07-07 16:22:36 +02:00
Pau Espin Pedrol
2eb9c116d9 Improve error handling when forwarding ECBE msg to CBSP
Change-Id: Ie411409b3af8f7dd6913b522ea9ed3b58736dc9f
2022-07-06 16:37:54 +02:00
Pau Espin Pedrol
8dc5648176 Move header files to include/osmocom/cbc/ dir
Change-Id: Id6c9f99805169d624a2c6e001fe1983e24fdc5c3
2022-07-04 13:35:47 +02:00
Pau Espin Pedrol
18f144662e cbsp_server: Exit process gracefully if binding socket fails
Change-Id: I6fac793aa6975cacfeffc3389167bd00864a8a08
2022-07-01 17:24:28 +02:00
Pau Espin Pedrol
9f2a1e3013 main: remove newline char in perror() call
perror() appends ":" immediatelly afterwards in order to append the
error string, so having a newline breaks the format.

Change-Id: I14874c2c86495c83030fa40c7060706e9dfe1968
2022-07-01 17:22:36 +02:00
Pau Espin Pedrol
b38bc5cb38 Fix typos in error messages
Change-Id: I42b201127535ae9fc61adbdc37e1d23897fd81d8
2022-07-01 17:15:26 +02:00
Pau Espin Pedrol
b1ab55d887 Move peer to DELETED state before signalling parent FSM with DELETE_(N)ACK
When receiving SMSCB_E_CBSP_DELETE_(N)ACK, smscb_message_fsm will iterate
over all peers to find out if some of them has still not ended, and in
that case delay sending an HTTP result.
However, the peer was sending the signal before moving to DELETED state,
and hence smscb_message_fsm would never send the HTTP result until T3
(T_WAIT_DELETE_ACK) would time out after it:
"""
20220629104312596 DCBSP INFO SMSCB-PEER(TTCN-3-44-ttcn3)[0x560b46c1f770]{WAIT_DELETE_ACK}: Received Event DELETE_ACK (cbsp_server_fsm.c:348)
20220629104312596 DCBSP INFO SMSCB(TTCN-3-44)[0x560b46c1f090]{WAIT_DELETE_ACK}: Received Event DELETE_ACK (smscb_peer_fsm.c:423)
20220629104312596 DCBSP INFO SMSCB-PEER(TTCN-3-44-ttcn3)[0x560b46c1f770]{WAIT_DELETE_ACK}: state_chg to DELETED (smscb_peer_fsm.c:424)
20220629104327599 DCBSP INFO SMSCB(TTCN-3-44)[0x560b46c1f090]{WAIT_DELETE_ACK}: Timeout of T3 (fsm.c:317)
20220629104327599 DREST DEBUG rest_it_op_complete(op=0x7fd09c001490) complete (rest_it_op.c:129)
20220629104327599 DCBSP INFO SMSCB(TTCN-3-44)[0x560b46c1f090]{WAIT_DELETE_ACK}: state_chg to DELETED (smscb_message_fsm.c:294)
20220629104327599 DREST DEBUG rest_it_op completed with 0 (HTTP 0) (rest_it_op.c:68)
"""

Change-Id: Idb418728e1242fc5436355ccf73f20b1419e1eb8
2022-06-30 16:46:31 +02:00
Pau Espin Pedrol
14b862099e Configure libosmocore logging system as multithread
OsmoCBC uses libulfius, which creates its own thread(s).
Hence, we must set up osmocom logging system appropiately so that
relevant stuff is protected by locks.

Related: OS#5598
Change-Id: Ic06edc19d22b90e2b6b7de3a25d62cda5001f46e
2022-06-30 16:21:50 +02:00
Pau Espin Pedrol
61f2f7123c Bump version: 0.2.3.13-aeea-dirty → 0.3.0
Change-Id: I3cbf26467dd90c3fc56dae76324f5eb9cdd0f4ef
2022-06-29 12:00:03 +02:00
Pau Espin Pedrol
aeea8b1145 .gitignore: add configure~
Change-Id: I2b4327fd78914b63040fb3e7d5e00b92bdb5e1c1
2022-06-23 14:09:14 +02:00
Pau Espin Pedrol
5b25874c2b cbsp_server: Reorder logged message
log macro needs to be changed since it uses cbsp_cbc_client_name() which
accesses client->conn which is NULL in there.

Change-Id: Ic444c749476bb1626df5494c00021c5e1a9f24b9
2022-06-21 12:11:49 +02:00
Pau Espin Pedrol
b3ee9ca764 Rework cbsp_cbc_create() params
There's no need to pass the specific params. Let's simply get whatever
need from the global config in the function.
This makes it easier to extend it to more params if needed.
Also, when we add SBc-AP support, the params that have to be passed to
the counter part function are different, so let's simplify param
passing here.

While at it, rename also the callback function to contain "cbsp" on it,
since it is cbsp specific.

Change-Id: Ia2362757275e7cbce82b64c7c2a0798276d964c3
2022-06-21 12:11:49 +02:00
Pau Espin Pedrol
6c7d06a50a cbsp_server.h: Move function to the proper section
Change-Id: I47f694c2ffa1df50394ff01977ddb85768657062
2022-06-21 09:39:21 +00:00
Harald Welte
9514e3e4ba update git URLs (git -> https; gitea)
Change-Id: Ife8212bcd6db51f5d4533c7bd8a52f9a21a8d144
2022-06-18 11:41:07 +02:00
Pau Espin Pedrol
fb6f123daf src/Makefile: Reformat files one per line
Change-Id: I666d6cd1461117397e05ac573c834a82abb2807d
2022-06-16 16:10:14 +02:00
Pau Espin Pedrol
2029fbaf6a vty. Fix several typos and missing param descriptions
Change-Id: I798ba4663247018a61d6f392961af11871c6152b
2022-06-16 16:08:29 +02:00
Harald Welte
8b12076f97 cbc: Don't crash if peer->remote_host is NULL
As the peer->remote_host is initially NULL when creating a CBC peer,
the code should tolerate this.  The situation arises in two cases:

* if a peer is created by VTY but without any subequent 'remote-ip'
  statement
* if a peer is auto-created by 'unknown-peers accept'

Closes: OS#5506
Change-Id: I455e61f379f042680cdd2600a08d57a1ea22897c
2022-05-06 10:44:26 +02:00
Harald Welte
4db977919c CBSP: Append/store results in KILL COMPLETE + KILL FAIL
When the BSC returns a KILL COMPLETE or KILL FAIL, append the contained
lists (number of broadcasts completed list, fail list, ...) to update
the state of the CBC.

Change-Id: Iabe5b4e6a238597455294bf91759d4dc6e90d660
2022-04-29 13:34:50 +02:00
Harald Welte
a7a5270814 CBSP: Set Channel Indication IE in KILL for CBS
The channel Indicator IE shall be present if the KILL relates to a
CBS message.  Its absence indicates KILL for ETWS/PWS.

Change-Id: I11bfac3236d7cf1e30ae5bae0abcbd72531ab5cd
Related: SYS#5906, OS#5540, OS#5541
2022-04-29 13:16:03 +02:00
Vadim Yanitskiy
f492acf37f VTY: fix incomplete 'remote-ip' command description
Change-Id: I2f98285bda4a482ac1af04f71eafa19daee5137f
2022-03-30 23:11:50 +03:00
Vadim Yanitskiy
6e3f0abd89 VTY: cosmetic: use VTY_IPV46_CMD in the command string
Change-Id: I3088aed936b936d36a550f766031328143481064
2022-03-30 23:08:56 +03:00
Vadim Yanitskiy
cfb35a8c5b doc/examples: make osmo-cbc.cfg file more informative
This example is not any better than just using '-c /dev/null'.
Add some default parameters taken from 'show running-config'.

Change-Id: I6dca38a2220c32fad96237d7522a300f12b4469e
2022-03-30 23:04:04 +03:00
Pau Espin Pedrol
78f4cc85a4 Bump version: 0.2.2.1-cf3c → 0.2.3
Change-Id: I145e8f4292f582b2656a66832e522e6010998828
2021-11-16 18:05:21 +01:00
Harald Welte
cf3c47d6bc varaible for atoi() result shouild be signed integer
... otherwise we won't detect < 0 cases.

Fixes: CID#240731
Change-Id: I650fce5bd64752823ee57d8b528d2b371fada857
2021-10-25 08:09:16 +02:00
Harald Welte
35b230f2bf Bump version: 0.2.1.4-88b5 → 0.2.2
Change-Id: If4919093a0569b81bfd95f76763f8b4b2fddaada
2021-02-23 20:40:44 +01:00
Harald Welte
88b5f3bb04 Update dependencies to current libosmocore & co
So far we couldn't depend on proper versions as they had not been
released yet.  Now they do, so we can add the respective dependencies

Change-Id: I0573a151f55488599a01ea9dfdcfa02396cd6c35
2021-02-23 20:36:25 +01:00
Harald Welte
3ae1a77bbc fix encoding of CBSP cell identifiers
We need to use the matching enum values if we actually want to
match correctly.  Before this patch, the Cell List Items in CBSP
were encoded wrongly.

Change-Id: Iea3e2a28573baaead308eb9c8475c6b8093d0b48
2021-02-20 20:04:21 +01:00
Harald Welte
1c3cfd2ccc bring JSON schema in sync with reality
Change-Id: I80f394e76d8c57f367f0049ee52df02d943ad105
2021-02-20 18:07:37 +01:00
Harald Welte
13385443a3 rest_api.c: Add missing \n in log line after error message
Change-Id: If2e9134d827891468df7ae35b89d6dfb798eb0dc
2021-02-20 17:34:30 +01:00
Harald Welte
493845d8e4 Bump version: 0.2.0.3-d6a3 → 0.2.1
Change-Id: I305be54bf1abadeabfa77b7c3a2879e824075afe
2021-02-16 22:39:23 +01:00
Harald Welte
d6a3728bce cbc-apitool: compatibility with python < 3.7
The "required" parameter to argparse.add_subparsers() was only
added in python 3.7.  However, given that it defaults to 'required'
and was always unconditionally required even in python 2.x,
we can safely remove it.

Change-Id: Ia0ffca055f47016fb29ef009acecac2a139e4077
2021-02-16 22:12:10 +01:00
Oliver Smith
e8ab2f3148 configure.ac: set -std=gnu11
Change-Id: I8fe45ab98a2a000a428a17d586f4dd4f1ba5f2d6
2021-01-28 10:48:47 +00:00
Harald Welte
e74594b247 VTY: don't save dynamically-allocated "unknown" peers
The VTY code should write/save only those peers that were configured
using the VTY.

Closes: OS#4929
Change-Id: If02694be4e4cb9cb27e7d9d07e533bfed4a999a9
2021-01-24 23:29:03 +01:00
Harald Welte
fa4826bfa6 Bump version: 0.1.0.25-287a → 0.2.0
Change-Id: I01298571913ea29cb98b58cdc0b1f92352622585
2021-01-24 16:15:50 +01:00
Harald Welte
287a6aaeb0 osmo-cbc.spec: License is AGPLv3-or-later + MIT
Change-Id: Id193997a2883189a2f3451203523a901f9f64fd4
2021-01-24 16:06:54 +01:00
Harald Welte
557fcbc110 contrib/osmo-cbc.spec: Add sub-package osmo-cbc-utils
This sub-package contains cbc-apitool.py

Change-Id: Id1ba3a26f3b40a42c69c61e844f00f2ddc70941b
2021-01-24 16:05:02 +01:00
Harald Welte
bc80894f0e debian: Package cbc-apitool.py as a sub-package
We don't want osmo-cbc to depend on python3 at runtime, so let's use
a sub-package for osmo-cbc-apitool.py

Change-Id: Id16613811993a2baa06ebc2da6c6591ace70a3f9
2021-01-24 15:54:43 +01:00
Harald Welte
2b158c3b2d manual: Document cbc-apitool.py
Change-Id: I2a65e7a582c8bb72d80731fb6e77a796ae4f9b4c
2021-01-24 15:54:43 +01:00
Harald Welte
071a60e465 manual: Add dotty graph on position of CBC in network
Change-Id: I0216ebb34b2efc218628341495d026bf4ec0f026
2021-01-24 15:54:43 +01:00
Harald Welte
24507ffd0d manual: Document ECBE; include JSON schema; cross-references
Change-Id: I358f72331aa9832cc56c67396eb41b62307a3258
2021-01-24 15:54:43 +01:00
Harald Welte
6467dfdb9c Makefile.am: add *.json to EXTRA_DIST
Otherwise the source tarballs would not contain the json schema

Change-Id: I1a3685bcff0e50a644e904c221d7d285f6215da1
2021-01-24 15:54:40 +01:00
Harald Welte
f80d53068a Makefile.am: cosmetic changes
Change-Id: Ib667fcf37413d15cd9b1cf53931e3360214b049e
2021-01-24 15:02:29 +01:00
Harald Welte
367cdb3697 cbc-apitool: Fix parsing if no argument is goven
Change-Id: I3abd7a22dc5df2bf7c926fb0e1ba09e60628f55d
2021-01-24 14:05:47 +01:00
Harald Welte
8e1093e244 terminate if CBSP or ECBE ports cannot be bound
Change-Id: I748648a0bd5a06da26cddc34ff0d9b6000e71370
2021-01-24 14:05:47 +01:00
Harald Welte
78fd4efa81 Make ECBE (REST interface) local bind IP + port VTY-configurable
Change-Id: I656d0d1c7b21db90b62e71109d9844476a2e3215
2021-01-24 14:05:47 +01:00
Harald Welte
5180d5ffae Make CBSP local bind IP+port VTY-configurable
Change-Id: I9ba3f4cf129d6df4468defc92697f1df62348719
2021-01-24 12:11:22 +01:00
Harald Welte
51977c72f3 vty: Allow IPv6 address for peer remote-ip
Change-Id: Iafb2da2357b09c6e2c9a5199c947358650cced18
2021-01-24 11:21:16 +01:00
Harald Welte
b8b77e77e4 manual: Chapters on configuration + vty introspection
Change-Id: I9af54ffc6f967702e8f66265dc15b35bbc173c4b
2021-01-24 11:16:43 +01:00
Harald Welte
51657edefd osmo-cbc.spec: No AUTHORS file; correct name of README.md
Change-Id: Ia53e6d1fe785e6bfc92f305963cf06b760f30edd
2021-01-24 00:10:15 +01:00
Harald Welte
7e00b941b8 osmo-cbc.spec: Don't depend on libosmo-mgcp-client
The CBC has nothing to do with MGCP

Change-Id: Ie2f1f67d8141b2437e723fb27e1d1c3225156a91
2021-01-24 00:09:20 +01:00
Harald Welte
8b596fecb1 cbc-apitool.py: Generalize, make parameters configurable
Do away with most of the hard-coded defaults and allow user to specify
a variety of parameters via the command line.  Also, start to use
argparse subparsers for better usability

Change-Id: Ib7b8121676bef9310f219affc6f3cc76b6986b2a
2021-01-23 23:48:04 +01:00
Harald Welte
f1afe95754 spec file: Add missing libulfius dependency
Change-Id: I2ebef5f5e2d749af094d31cac493dcb5ac2d7866
2021-01-23 21:54:18 +01:00
Harald Welte
f97cd9672d charset: Fix padding of USSD messages in 7bit GSM alphabet
USSD messages are sent in pages of 82 bytes, and there is no way to
indicate a shorter payload length inside the page.  Hence, we always
must pad up to the end of the page, using <CR> characters.

Change-Id: I9950431e920579e6c3a0d12348573f51d21739ec
2021-01-23 21:54:17 +01:00
Harald Welte
1d78b2e73d debian/osmo-cbc.install: Fix typo (extra apostrophe at EOL)
Change-Id: Iebd5e3ca1e3c1f998c112f9c5f5fdcf5e0d24f35
2021-01-23 14:56:53 +01:00
Harald Welte
e88eceb790 Add README.md file
Change-Id: Ib2a019290a80d67e26875d972f6a8ee700f73bb6
2021-01-22 20:15:30 +01:00
Harald Welte
d1c50f54cd Add RPM spec file
Change-Id: I79e04228e8034e0d50a44f54c36363074fc01995
2021-01-22 20:15:30 +01:00
Harald Welte
5bf735efc9 Add simplistic cbc-apitool.py as example on how to use the REST API
Change-Id: I6cbc30a3f8bf833fea785437488aed8b8af2fcbc
2021-01-22 20:15:30 +01:00
Harald Welte
eaee3e30b1 add link to upstream bug related to custom malloc/free
Change-Id: If58d307bbdade5d4d7c5e39ada8c14c052d215a9
2021-01-14 18:11:00 +00:00
Oliver Smith
55956f4512 contrib/jenkins: don't build osmo-gsm-manuals
Related: OS#4912
Change-Id: Ide27f522e0979f9f7b41cd073d5451fa60ab125f
2021-01-13 13:12:58 +01:00
444 changed files with 56293 additions and 1525 deletions

2
.checkpatch.conf Normal file
View File

@@ -0,0 +1,2 @@
--exclude ^src/sbcap/(skel|gen)/.*\.(c|h)$
--exclude ^src/sbcap/.*\.asn$

4
.gitignore vendored
View File

@@ -20,6 +20,7 @@ depcomp
install-sh
missing
stamp-h1
configure~
# libtool
ltmain.sh
@@ -58,3 +59,6 @@ doc/manuals/osmobsc-usermanual.xml
doc/manuals/common
doc/manuals/build
doc/manuals/vty/cbc_vty_reference.xml
contrib/osmo-cbc.spec
libosmo-sbcap.pc

4
.gitreview Normal file
View File

@@ -0,0 +1,4 @@
[gerrit]
host=gerrit.osmocom.org
project=osmo-cbc

View File

@@ -1,9 +1,20 @@
AUTOMAKE_OPTIONS = foreign dist-bzip2 1.6
AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include
SUBDIRS = src doc contrib tests
SUBDIRS = include src doc contrib tests
EXTRA_DIST = .version git-version-gen
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = \
libosmo-sbcap.pc \
$(NULL)
EXTRA_DIST = .version \
README.md \
git-version-gen \
contrib/osmo-cbc.spec.in \
cbc.schema.json \
smscb.schema.json \
$(NULL)
AM_DISTCHECK_CONFIGURE_FLAGS = \
--with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir)

69
README.md Normal file
View File

@@ -0,0 +1,69 @@
osmo-cbc - Osmocom Cell Broadcast Centre
========================================
This repository contains a C-language implementation of a minimal
3GPP Cell Broadcast Centre (CBC). It is part of the
[Osmocom](https://osmocom.org/) Open Source Mobile Communications
project.
A Cell Broadcast Centre is the central network element of a cellular network
for distribution of Cell Broadcast and Emergency messages.
This code implements
* the CBSP protocol on the CBC-BSC interface
* a custom HTTP/REST based interface for external users to create/delete CBS messages
We plan to add support for the following features in the future:
* the SABP protocol on the CBC-RNC (or CBC-HNBGW) interface for UMTS support
* the SBcAP protocol on the CBC-MME interface for LTE support
Homepage
--------
The official homepage of the project is
https://osmocom.org/projects/osmo-cbc/wiki
GIT Repository
--------------
You can clone from the official osmo-cbc.git repository using
git clone https://gitea.osmocom.org/cellular-infrastructure/osmo-cbc
There is a web interface at <https://gitea.osmocom.org/cellular-infrastructure/osmo-cbc>
Documentation
-------------
User Manuals and VTY reference manuals are [optionally] built in PDF form
as part of the build process.
Pre-rendered PDF version of the current "master" can be found at
[User Manual](https://ftp.osmocom.org/docs/latest/osmocbc-usermanual.pdf)
as well as the [VTY Reference Manual for osmo-cbc](https://ftp.osmocom.org/docs/latest/osmocbc-vty-reference.pdf)
Mailing List
------------
Discussions related to osmo-cbc are happening on the
openbsc@lists.osmocom.org mailing list, please see
https://lists.osmocom.org/mailman/listinfo/openbsc for subscription
options and the list archive.
Please observe the [Osmocom Mailing List
Rules](https://osmocom.org/projects/cellular-infrastructure/wiki/Mailing_List_Rules)
when posting.
Contributing
------------
Our coding standards are described at
https://osmocom.org/projects/cellular-infrastructure/wiki/Coding_standards
We us a gerrit based patch submission/review process for managing
contributions. Please see
https://osmocom.org/projects/cellular-infrastructure/wiki/Gerrit for
more details
The current patch queue for osmo-cbc can be seen at
https://gerrit.osmocom.org/#/q/project:osmo-cbc+status:open

View File

@@ -42,7 +42,7 @@
"num_of_bcast": { "$ref": "#/definitions/number_of_broadcasts" },
"scope": { "$ref": "#/definitions/scope" },
"warning_period_sec": { "$ref": "#/definitions/warning_period_sec" },
"smscb": { "$ref": "smscb.schema.json#definitions/smscb_message" }
"smscb_message": { "$ref": "smscb.schema.json#definitions/smscb_message" }
},
"required": [ "scope", "smscb" }
}

View File

@@ -6,9 +6,11 @@ AC_INIT([osmo-cbc],
dnl *This* is the root dir, even if an install-sh exists in ../ or ../../
AC_CONFIG_AUX_DIR([.])
AM_INIT_AUTOMAKE([dist-bzip2])
AM_INIT_AUTOMAKE([dist-bzip2 subdir-objects])
AC_CONFIG_TESTDIR(tests)
CFLAGS="$CFLAGS -std=gnu11"
dnl kernel style compile messages
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
@@ -29,14 +31,35 @@ if test "x$PKG_CONFIG_INSTALLED" = "xno"; then
fi
PKG_PROG_PKG_CONFIG([0.20])
PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 1.0.0)
PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 1.0.0)
PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm >= 1.0.0)
PKG_CHECK_MODULES(LIBOSMONETIF, libosmo-netif >= 0.4.0)
PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 1.7.0)
PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 1.7.0)
PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm >= 1.7.0)
PKG_CHECK_MODULES(LIBOSMONETIF, libosmo-netif >= 1.2.0)
PKG_CHECK_MODULES(ULFIUS, libulfius)
PKG_CHECK_MODULES(JANSSON, jansson)
PKG_CHECK_MODULES(ORCANIA, liborcania)
# Define asn1c skeleton files directory (See "asn1c -S <dir>").
# Used during "make -C src/ regen" to copy header files from there
ASN1C_SKELETON_PATH="/usr/share/asn1c"
ASN1C_BIN_PATH="/usr/bin/asn1c"
ASN_MODULE_CFLAGS="-DASN_DISABLE_BER_SUPPORT -DASN_DISABLE_XER_SUPPORT -DASN_DISABLE_JER_SUPPORT -DASN_DISABLE_OER_SUPPORT -DASN_DISABLE_UPER_SUPPORT"
AC_SUBST([ASN1C_SKELETON_PATH])
AC_SUBST([ASN1C_BIN_PATH])
AC_SUBST([ASN_MODULE_CFLAGS])
AC_CHECK_HEADERS(netinet/sctp.h,,AC_MSG_ERROR(netinet/sctp.h not found))
old_LIBS=$LIBS
AC_SEARCH_LIBS([sctp_recvmsg], [sctp], [
AC_DEFINE(HAVE_LIBSCTP, 1, [Define 1 to enable SCTP support])
AC_SUBST(HAVE_LIBSCTP, [1])
if test -n "$ac_lib"; then
AC_SUBST(LIBSCTP_LIBS, [-l$ac_lib])
fi
], [
AC_MSG_ERROR([sctp_recvmsg not found in searched libs])])
LIBS=$old_LIBS
AC_ARG_ENABLE(sanitize,
[AS_HELP_STRING(
[--enable-sanitize],
@@ -155,7 +178,7 @@ if test "x$enable_ext_tests" = "xyes" ; then
AM_PATH_PYTHON
AC_CHECK_PROG(OSMOTESTEXT_CHECK,osmo_verify_transcript_vty.py,yes)
if test "x$OSMOTESTEXT_CHECK" != "xyes" ; then
AC_MSG_ERROR([Please install git://osmocom.org/python/osmo-python-tests to run the VTY/CTRL tests.])
AC_MSG_ERROR([Please install https://gitea.osmocom.org/cellular-infrastructure/osmo-python-tests to run the VTY/CTRL tests.])
fi
fi
AC_MSG_CHECKING([whether to enable VTY/CTRL tests])
@@ -167,10 +190,18 @@ AC_MSG_RESULT([CPPFLAGS="$CPPFLAGS"])
AC_OUTPUT(
src/Makefile
src/sbcap/Makefile
include/Makefile
include/osmocom/Makefile
include/osmocom/cbc/Makefile
include/osmocom/sbcap/Makefile
contrib/Makefile
contrib/osmo-cbc.spec
tests/Makefile
tests/sbcap/Makefile
doc/Makefile
doc/examples/Makefile
doc/manuals/Makefile
contrib/systemd/Makefile
libosmo-sbcap.pc
Makefile)

View File

@@ -1 +1,4 @@
SUBDIRS = systemd
EXTRA_DIST = cbc-apitool.py \
$(NULL)

157
contrib/cbc-apitool.py Executable file
View File

@@ -0,0 +1,157 @@
#!/usr/bin/env python3
#
# (C) 2020-2021 by Harald Welte <laforge@osmocom.org>
#
# SPDX-License-Identifier: MIT
#
# This is a simplistic program to show how the REST API of osmo-cbc can be used to
# create and delete Cell Broadcast Messages
#
# A lot of the parameters are currently hard-coded, see the 'js' variable definitions
# below.
import sys
import argparse
import requests
def build_url(suffix):
BASE_PATH= "/api/ecbe/v1"
return "http://%s:%u%s%s" % (server_host, server_port, BASE_PATH, suffix)
def rest_post(suffix, js = None):
url = build_url(suffix)
if verbose:
print("POST %s (%s)" % (url, str(js)))
resp = requests.post(url, json=js)
if verbose:
print("-> %s" % (resp))
if not resp.ok:
print("POST failed")
return resp
def rest_delete(suffix, js = None):
url = build_url(suffix)
if verbose:
print("DELETE %s (%s)" % (url, str(js)))
resp = requests.delete(url, json=js)
if verbose:
print("-> %s" % (resp))
if not resp.ok:
print("DELETE failed " + str(resp))
return resp
def do_create_cbs(args):
js = {
'cbe_name': "cbc_apitool",
'category': "normal",
'repetition_period': args.repetition_period,
'num_of_bcast': args.num_of_bcast,
'scope': {
'scope_plmn': { }
},
'smscb_message': {
'message_id': args.msg_id,
'serial_nr': {
'serial_nr_decoded': {
'geo_scope': "plmn_wide",
'msg_code': args.msg_code,
'update_nr': args.update_nr
}
},
'payload': {
'payload_decoded': {
'character_set': "gsm",
#'language': 'en',
'data_utf8': args.payload_data_utf8,
#'data_utf8': "Mahlzeit1 Mahlzeit2 Mahlzeit3 Mahlzeit4 Mahlzeit5 Mahlzeit6 Mahlzeit7 Mahlzeit8"
#'data_utf8': "Mahlzeit1 Mahlzeit2 Mahlzeit3 Mahlzeit4 Mahlzeit5 Mahlzeit6 Mahlzeit7 Mahlzeit8 Mahlzeit9 Mahlzeit10 Mahlzeti11 Mahlzeit12 Mahlzeit13 Mahlzeit14 Mahlzeit15 Mahlzeit16 Mahlzeit17 Mahlzeit18 Mahlzeit19 Mahlzeit20 Mahlzeit21 Mahlzeit22 Mahlzeit23 Mahlzeit24 Mahlzeit25 Mahlzeit26 Mahlzeit27 Mahlzeit28"
}
}
}
}
rest_post("/message", js);
def do_create_etws(args):
js = {
'cbe_name': "cbc_apitool",
'category': "normal",
'repetition_period': args.repetition_period,
'num_of_bcast': args.num_of_bcast,
'scope': {
'scope_plmn': { }
},
'smscb_message': {
'message_id': args.msg_id,
'serial_nr': {
'serial_nr_decoded': {
'geo_scope': "plmn_wide",
'msg_code': args.msg_code,
'update_nr': args.update_nr
}
},
'payload': {
'payload_etws': {
'warning_type': {
'warning_type_decoded': 'earthquake'
},
'emergency_user_alert': True,
'popup_on_display': True
}
}
}
}
rest_post("/message", js);
def do_delete(args):
rest_delete("/message/%u" % (args.msg_id))
def main(argv):
global server_port, server_host, verbose
parser = argparse.ArgumentParser()
parser.add_argument("-H", "--host", help="Host to connect to", default="localhost")
parser.add_argument("-p", "--port", help="TCP port to connect to", type=int, default=12345)
parser.add_argument("-v", "--verbose", help="increase output verbosity", action='count', default=0)
subparsers = parser.add_subparsers(required=True)
parser_c_cbs = subparsers.add_parser('create-cbs', help='Create a new CBS message')
parser_c_cbs.add_argument("--msg-id", type=int, help='Message Identifier', required=True)
parser_c_cbs.add_argument("--msg-code", type=int, help='Message Code', default=768)
parser_c_cbs.add_argument("--update-nr", type=int, help='Update Number', default=0)
parser_c_cbs.add_argument("--repetition-period", type=int, help='Repetition Period', default=5)
parser_c_cbs.add_argument("--num-of-bcast", type=int, help='Number of Broadcasts', default=999)
parser_c_cbs.add_argument("--payload-data-utf8", type=str, help='Payload Data in UTF8', required=True)
parser_c_cbs.set_defaults(func=do_create_cbs)
parser_c_etws = subparsers.add_parser('create-etws', help='Create a new ETWS message')
parser_c_etws.add_argument("--msg-id", type=int, help='Message Identifier', required=True)
parser_c_etws.add_argument("--msg-code", type=int, help='Message Code', default=768)
parser_c_etws.add_argument("--update-nr", type=int, help='Update Number', default=0)
parser_c_etws.add_argument("--repetition-period", type=int, help='Repetition Period', default=5)
parser_c_etws.add_argument("--num-of-bcast", type=int, help='Number of Broadcasts', default=999)
parser_c_etws.set_defaults(func=do_create_etws)
parser_delete = subparsers.add_parser('delete', help='Delete a message')
parser_delete.add_argument("--msg-id", type=int, help='Message Identifier', required=True)
parser_delete.set_defaults(func=do_delete)
argv = sys.argv
if len(sys.argv) == 1:
args = parser.parse_args(['-h'])
else:
args = parser.parse_args()
server_host = args.host
server_port = args.port
verbose = args.verbose
args.func(args)
if __name__ == "__main__":
main(sys.argv)

View File

@@ -36,7 +36,6 @@ osmo-build-dep.sh libosmo-netif "" --disable-doxygen
# Additional configure options and depends
CONFIG=""
if [ "$WITH_MANUALS" = "1" ]; then
osmo-build-dep.sh osmo-gsm-manuals
CONFIG="--enable-manuals"
fi

128
contrib/osmo-cbc.spec.in Normal file
View File

@@ -0,0 +1,128 @@
#
# spec file for package osmo-cbc
#
# Copyright (c) 2021, Harald Welte <laforge@gnumonks.org>
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
## Disable LTO for now since it breaks compilation of the tests
## https://osmocom.org/issues/4113
%define _lto_cflags %{nil}
Name: osmo-cbc
Version: @VERSION@
Release: 0
Summary: OsmoCBC: Osmocom's Cell Broadcast Centre for 3GPP mobile networks
License: AGPL-3.0-or-later
Group: Hardware/Mobile
URL: https://osmocom.org/projects/osmo-cbc
Source: %{name}-%{version}.tar.xz
BuildRequires: automake >= 1.9
BuildRequires: libtool >= 2
BuildRequires: pkgconfig >= 0.20
%if 0%{?suse_version}
BuildRequires: systemd-rpm-macros
%endif
BuildRequires: pkgconfig(libsctp)
BuildRequires: pkgconfig(libosmocore) >= 1.7.0
BuildRequires: pkgconfig(libosmogsm) >= 1.7.0
BuildRequires: pkgconfig(libosmovty) >= 1.7.0
BuildRequires: pkgconfig(libosmo-netif) >= 1.2.0
BuildRequires: pkgconfig(talloc)
BuildRequires: pkgconfig(libulfius)
%{?systemd_requires}
%description
OsmoCBC: Osmocom's Cell Broadcast Centre for 3GPP mobile networks.
%package utils
Summary: CLI utility to interface osmo-cbc REST interface
License: MIT
Group: Productivity/Telephony/Utilities
%description utils
CLI utility to interface with the osmo-cbc REST interface (ECBE).
%package -n libosmo-sbcap0
Summary: Osmocom's library to encode/decode SBc-AP messages
Group: System/Libraries
%description -n libosmo-sbcap0
Osmocom's library to encode/decode SBc-AP messages.
%package -n libosmo-sbcap-devel
Summary: Development files for libosmo-sbcap
Group: Development/Libraries/C and C++
Requires: libosmo-sbcap0 = %{version}
%description -n libosmo-sbcap-devel
Osmocom's library to encode/decode SBc-AP messages.
This subpackage contains libraries and header files for developing
applications that want to make use of libosmo-sbcap.
%prep
%setup -q
%build
echo "%{version}" >.tarball-version
autoreconf -fi
%configure \
--docdir=%{_docdir}/%{name} \
--with-systemdsystemunitdir=%{_unitdir}
make %{?_smp_mflags}
%install
%make_install
install -m 755 contrib/cbc-apitool.py %{buildroot}/usr/bin/cbc-apitool.py
find %{buildroot} \( -name '*.la' -o -name '*.a' \) -delete -print
%if 0%{?suse_version}
%preun
%service_del_preun %{name}.service
%postun
%service_del_postun %{name}.service
%pre
%service_add_pre %{name}.service
%post
%service_add_post %{name}.service
%endif
%check
make %{?_smp_mflags} check || (find . -name testsuite.log -exec cat {} +)
%files
%license COPYING
%doc README.md
%{_bindir}/osmo-cbc
%dir %{_docdir}/%{name}/examples
%dir %{_docdir}/%{name}/examples/osmo-cbc
%{_docdir}/%{name}/examples/osmo-cbc/osmo-cbc*.cfg
%dir %{_sysconfdir}/osmocom
%config(noreplace) %{_sysconfdir}/osmocom/osmo-cbc.cfg
%{_unitdir}/%{name}.service
%files utils
%{_bindir}/cbc-apitool.py
%files -n libosmo-sbcap0
%{_libdir}/libosmo-sbcap.so.0*
%files -n libosmo-sbcap-devel
%{_libdir}/libosmo-sbcap.so
%{_libdir}/pkgconfig/libosmo-sbcap.pc
%dir %{_includedir}/osmocom
%dir %{_includedir}/osmocom/sbcap
%{_includedir}/osmocom/sbcap/*.h
%changelog

185
debian/changelog vendored
View File

@@ -1,5 +1,186 @@
osmo-cbc (0.1) UNRELEASED; urgency=medium
osmo-cbc (0.4.0) unstable; urgency=medium
[ Pau Espin Pedrol ]
* Configure libosmocore logging system as multithread
* Move peer to DELETED state before signalling parent FSM with DELETE_(N)ACK
* Fix typos in error messages
* main: remove newline char in perror() call
* cbsp_server: Exit process gracefully if binding socket fails
* Move header files to include/osmocom/cbc/ dir
* Improve error handling when forwarding ECBE msg to CBSP
* cbsp: Clean up conn closed paths
* rest_api: Fix cbs.data_user_len not set in 'payload_encoded'
* Add sbcap library
* Add unit tests for sbcap
* sbcap: Update asn1c skeleton files
* Add initial SBc-AP support to osmo-cbc
* doc: user manual: fix typo
* doc: Document SBc-AP support and config
* Fix printf format in 32bit arch
* vty: Fix call to OSMO_STRBUF_PRINTF
* sbcap: Update asn1c skeleton files
* Improve example osmo-cbc.cfg file
* sbcap_server.c: Remove unneeded goto
* sbcap_server: Log all sctp notif
* sbcap_server: Fix double-free of rx msg if conn is destroyed
* Split cbc_peer to its own .c and .h files
* cbc_peer: Close SBcAP conn when removing active peer
* Move function defined in rest_it_op.c to rest_it_op.h
* Move vty stuff to its own header cbc_vty.h
* Split cbc_message related code to its own .c and .h file
* Get rid of internal.h
* sbcap_server.h: Remove unused fields
* cbsp_server.c: Drop unused code
* Rename CBSP,SABP,SBcAP structs and APIs
* Rename {cbsp,sbcap}_server(_fsm).h s/server/link/
* Rename fields in cbc_{cbsp,sbcap}_mgr
* Use cbc_{cbsp,sbcap}_link_close when possible
* cbc_vty: Use value_string to define proto names used in vty
* cbc_vty: print correct protocol when writing config
* Refactor {cbsp,sbcap}_cbc_accept_cb
* cbc_vty: write peer config nodes at the end
* Make cbsp,sbcap mgr available in data model
* Fix cbc_vty_go_parent() not being called
* cbc_main: Fix setting default SBc-AP local address
* vty: Define peer proto during 'peer' node cmd
* Move struct cbc bring up code to its own file and functions
* Split cbsp/sbcap server socket creation from struct allocation
* cbc-apitool: Fix port stored in var as a string
* cbc-apitool: print usage instead of crashing if no subcmd passed
* sbcap: Fix encoding of Warning-Type
* cosmetic: smscb_message_fsm.c: Fix typo in comment
* Support CBSP/TCP and SBc-AP/SCTP client mode
* cbc_vty: Fix missing indent char in dump_one_etws_msg
* vty: Fix 'show message' not finding expired messages
* vty: Add command to delete expired messages
* vty: Print created and expired times for each message
* sbcap_msg: Improve spec references for used IEs
* vty: Fix typo in vty output
* Rearrange cbc_message and cbsp message code
* Rename functions generating CBSP/SBc-AP Write-Replace request
* sbcap: Fix typo in sbcap_cause_vals
* sbcap: Send Error Indication if decoding rx msg fails
* sbcap: Drop unused events
* sbcap: Improve logging of rx Error Indication
* sbcap: Improve logging on non-implemented PWS Restart/Failure Ind
* sbcap: Tx Error ind if Rx ProcedureCode is unknown
* Move sbcap_as_find_ie() to libsbcap
* sbcap: Fix typo in comment
* sbcap: Log info about messages received and trasmitted
* Move cbc_cell_id2str() and make it public
* Move ASN1C enc/dec logging to its own category
* sbcap: Request and handle Write Replace Warning Indication
* sbcap: Store reported failed TAIs from WriteReplaceResponse in cbc_message_peer
* sbcap: Improve handling of WriteReplaceWarnResponse
* Introduce logging category smscb
* Split event list for smscb_message_fsm and smscb_peer_fsm
* Split smscb_peer_fsm into CBSP and SBcAP specific FSMs
* cbc_main: Enable logging of fsm timeouts
* Propagate error to caller when tx cbsp/sbcap Write-Replace-Req fails
* sbcap: Fix NULL pointer dereference
* cbsp/sbcap: Fix memleak in error condition (tx without link)
* *_smscb_peer_fsm: Immediately NACK if Tx of msg failed
* cbsp: Fix heap-use-after-free closing cli conn in connecting state
* cbsp/sbcap: Set link fsm id with peer's name
* cbsp/sbcap: Fail if trying to Tx on non-connected (connecting) link
* sbcap: Add Concurrent-Warning-Message-Indicator IE to Write-Replace-Req
* cbsp: Log storing of CellId info received from peers
* cbsp: Store content of received Cell Id from Failed List
[ Oliver Smith ]
* gitreview: add new file
* checkpatch.conf: ignore sbcap generated files
* contrib/osmo-cbc.spec: add libosmo-sbcap0/-dev
* debian: add subpackages libosmo-sbcap0/-dev
* libosmo-sbcap.pc.in: new file
[ Vadim Yanitskiy ]
* tests/sbcap: fix wrong operator used in OSMO_ASSERT statement
* cbc_vty: use install_element[_ve](), not install_lib_element[_ve]()
* libosmo-sbcap: add -no-undefined to libosmo_sbcap_la_LDFLAGS
-- Pau Espin Pedrol <pespin@sysmocom.de> Mon, 08 Aug 2022 11:42:56 +0200
osmo-cbc (0.3.0) unstable; urgency=medium
[ Vadim Yanitskiy ]
* doc/examples: make osmo-cbc.cfg file more informative
* VTY: cosmetic: use VTY_IPV46_CMD in the command string
* VTY: fix incomplete 'remote-ip' command description
[ Harald Welte ]
* CBSP: Set Channel Indication IE in KILL for CBS
* CBSP: Append/store results in KILL COMPLETE + KILL FAIL
* cbc: Don't crash if peer->remote_host is NULL
* update git URLs (git -> https; gitea)
[ Pau Espin Pedrol ]
* vty. Fix several typos and missing param descriptions
* src/Makefile: Reformat files one per line
* cbsp_server.h: Move function to the proper section
* Rework cbsp_cbc_create() params
* cbsp_server: Reorder logged message
* .gitignore: add configure~
-- Pau Espin Pedrol <pespin@sysmocom.de> Wed, 29 Jun 2022 12:00:03 +0200
osmo-cbc (0.2.3) unstable; urgency=medium
[ Harald Welte ]
* varaible for atoi() result shouild be signed integer
-- Pau Espin Pedrol <pespin@sysmocom.de> Tue, 16 Nov 2021 18:05:21 +0100
osmo-cbc (0.2.2) unstable; urgency=medium
* rest_api.c: Add missing \n in log line after error message
* bring JSON schema in sync with reality
* fix encoding of CBSP cell identifiers
* Update dependencies to current libosmocore & co
-- Harald Welte <laforge@osmocom.org> Tue, 23 Feb 2021 20:40:44 +0100
osmo-cbc (0.2.1) unstable; urgency=medium
[ Harald Welte ]
* VTY: don't save dynamically-allocated "unknown" peers
* cbc-apitool: compatibility with python < 3.7
[ Oliver Smith ]
* configure.ac: set -std=gnu11
-- Harald Welte <laforge@osmocom.org> Tue, 16 Feb 2021 22:39:23 +0100
osmo-cbc (0.2.0) unstable; urgency=medium
[ Harald Welte ]
* Initial release.
* add link to upstream bug related to custom malloc/free
* Add simplistic cbc-apitool.py as example on how to use the REST API
* Add RPM spec file
* Add README.md file
* debian/osmo-cbc.install: Fix typo (extra apostrophe at EOL)
* charset: Fix padding of USSD messages in 7bit GSM alphabet
* spec file: Add missing libulfius dependency
* cbc-apitool.py: Generalize, make parameters configurable
* osmo-cbc.spec: Don't depend on libosmo-mgcp-client
* osmo-cbc.spec: No AUTHORS file; correct name of README.md
* manual: Chapters on configuration + vty introspection
* vty: Allow IPv6 address for peer remote-ip
* Make CBSP local bind IP+port VTY-configurable
* Make ECBE (REST interface) local bind IP + port VTY-configurable
* terminate if CBSP or ECBE ports cannot be bound
* cbc-apitool: Fix parsing if no argument is goven
* Makefile.am: cosmetic changes
* Makefile.am: add *.json to EXTRA_DIST
* manual: Document ECBE; include JSON schema; cross-references
* manual: Add dotty graph on position of CBC in network
* manual: Document cbc-apitool.py
* debian: Package cbc-apitool.py as a sub-package
* contrib/osmo-cbc.spec: Add sub-package osmo-cbc-utils
* osmo-cbc.spec: License is AGPLv3-or-later + MIT
-- Harald Welte <lafore@gnumonks.org> Wed, 06 Jan 2021 12:13:12 +0100
[ Oliver Smith ]
* contrib/jenkins: don't build osmo-gsm-manuals
-- Harald Welte <laforge@osmocom.org> Sun, 24 Jan 2021 16:15:49 +0100

30
debian/control vendored
View File

@@ -11,14 +11,15 @@ Build-Depends: debhelper (>=9),
pkg-config,
python3-minimal,
libtalloc-dev,
libosmocore-dev,
libosmo-netif-dev,
libosmocore-dev (>= 1.7.0),
libosmo-netif-dev (>= 1.2.0),
libulfius-dev,
libjansson-dev,
libsctp-dev,
osmo-gsm-manuals-dev
Standards-Version: 3.9.8
Vcs-Git: git://git.osmocom.org/osmo-cbc.git
Vcs-Browser: https://git.osmocom.org/osmo-cbc/
Vcs-Git: https://gitea.osmocom.org/cellular-infrastructure/osmo-cbc
Vcs-Browser: https://gitea.osmocom.org/cellular-infrastructure/osmo-cbc
Homepage: https://projects.osmocom.org/projects/osmo-cbc
Package: osmo-cbc
@@ -27,6 +28,12 @@ Multi-Arch: foreign
Depends: ${misc:Depends}, ${shlibs:Depends}
Description: OsmoCBC: Osmocom's Cell Broadcast Center
Package: osmo-cbc-utils
Architecture: any
Multi-Arch: foreign
Depends: ${misc:Depends}, ${shlibs:Depends}, python3
Description: Utilities for OsmoCBC: Osmocom's Cell Broadcast Center
Package: osmo-cbc-dbg
Section: debug
Architecture: any
@@ -42,3 +49,18 @@ Depends: ${misc:Depends}
Description: ${misc:Package} PDF documentation
Various manuals: user manual, VTY reference manual and/or
protocol/interface manuals.
Package: libosmo-sbcap0
Section: libs
Architecture: any
Multi-Arch: same
Pre-Depends: ${misc:Pre-Depends}
Depends: ${misc:Depends}, ${shlibs:Depends}
Description: libosmo-sbcap: Osmocom's library to encode/decode SBc-AP messages
Package: libosmo-sbcap-dev
Section: libdevel
Architecture: any
Multi-Arch: same
Depends: libosmo-sbcap0 (= ${binary:Version}), ${misc:Depends}
Description: libosmo-sbcap: Osmocom's library to encode/decode SBc-AP messages

4
debian/libosmo-sbcap-dev.install vendored Normal file
View File

@@ -0,0 +1,4 @@
usr/include/osmocom/sbcap
usr/lib/*/libosmo-sbcap.so
usr/lib/*/libosmo-sbcap.a
usr/lib/*/pkgconfig/libosmo-sbcap.pc

1
debian/libosmo-sbcap0.install vendored Normal file
View File

@@ -0,0 +1 @@
usr/lib/*/libosmo-sbcap.so.*

1
debian/osmo-cbc-utils.install vendored Normal file
View File

@@ -0,0 +1 @@
usr/bin/cbc-apitool.py

View File

@@ -1,4 +1,4 @@
/etc/osmocom/osmo-cbc.cfg
lib/systemd/system/osmo-cbc.service
usr/bin/osmo-cbc
usr/share/doc/osmo-cbc/examples/osmo-cbc/*.cfg usr/share/doc/osmo-bsc/examples`
usr/share/doc/osmo-cbc/examples/osmo-cbc/*.cfg usr/share/doc/osmo-bsc/examples

5
debian/rules vendored
View File

@@ -50,8 +50,9 @@ override_dh_auto_configure:
dh_auto_configure -- $(CONFIGURE_FLAGS)
#
# Do not install libtool archive, python .pyc .pyo
#override_dh_install:
# dh_install --list-missing -X.la -X.pyc -X.pyo
override_dh_install:
install -m 755 contrib/cbc-apitool.py debian/tmp/usr/bin/cbc-apitool.py
dh_install
# See https://www.debian.org/doc/manuals/developers-reference/best-pkging-practices.html#bpp-dbg
override_dh_strip:

View File

@@ -1,3 +1,28 @@
log stderr
logging level cbsp debug
logging level main notice
logging level smscb notice
logging level cbsp notice
logging level sbcap notice
logging level asn1c notice
logging level rest notice
cbc
unknown-peers reject
ecbe
local-ip 127.0.0.1
local-port 12345
cbsp
local-ip 127.0.0.1
local-port 48049
sbcap
local-ip 127.0.0.1
local-ip ::1
local-port 29168
peer cbsp example-bsc
mode server
remote-ip 127.0.0.2
remote-port 48049
peer sbcap example-mme
mode client
remote-ip 127.0.0.2
remote-ip ::2
remote-port 29168

View File

@@ -3,6 +3,7 @@ EXTRA_DIST = osmocbc-usermanual.adoc \
osmocbc-vty-reference.xml \
regen_doc.sh \
chapters \
images \
vty
if BUILD_MANUALS

View File

@@ -0,0 +1,79 @@
[[apitool]]
== `cbc-apitool.py`
`cbc-apitool.py` is a very simple/basic python3 script that can be used
to demonstrate the use of the ECBE REST interface (<<ecbe>>) from the
command line.
It uses the python3 standard librariy `requests` in order to issue ECBE
API request over HTTP towards osmo-cbc.
`cbc-apitool.py` has a couple of sub-commands, each of which offer
=== Common options
*-h, --help*::
Print a short help message about the supported common options.
*-H, --host HOST*::
Remote host name/IP to which to connect (typically your ECBE
bind address of osmo-cbc). Default: 127.0.0.1.
*-p, --port PORT*::
Remote TCP port number to which to connect (typically your ECBE
bind address of osmo-cbc). Default: 12345
*-v, --verbose*::
Print some more verbose information like the HTTP requests
and responses during execution.
=== `create-cbs`: Creating a new CBS message
You can create a new CBS message using `cbc-apitool create-cbs`.
==== `create-cbs` Options
*-h, --help*::
Print a short help message about the supported create-cbs options.
*--msg-id MSG_ID*::
Specify the message ID of the to-be-created CBS
message. Range: 0..65535
*--msg-code MSG_CODE*::
Specify the message code (part of the serial number). Range:
0..1023. Default: 768
*--update-nr UPDATE_NR*::
Specify the update number (part of the serial number). Range:
0..15. Default: 0
*--repetition-period REPETITION_PERIOD*::
How frequently this message shall be repeated (in number of CBCH
slots). Default: 5
*--num-of-bcast NUM_OF_BCAST*::
Number of times this message shall be broadcast (Default: 999).
*--payload-data-utf8 PAYLOAD_DATA_UTF8*::
Payload data (typically text message) in UTF8 encoding. Will be
transcoded to 7bit GSM alphabet internally.
==== `create-etws` Options
*-h, --help*::
Print a short help message about the supported create-cbs options.
*--msg-id MSG_ID*::
Specify the message ID of the to-be-created CBS
message. Range: 0..65535
*--msg-code MSG_CODE*::
Specify the message code (part of the serial number). Range:
0..1023. Default: 768
*--update-nr UPDATE_NR*::
Specify the update number (part of the serial number). Range:
0..15. Default: 0
*--repetition-period REPETITION_PERIOD*::
How frequently this message shall be repeated (in number of CBCH
slots). Default: 5
*--num-of-bcast NUM_OF_BCAST*::
Number of times this message shall be broadcast (Default: 999).
==== `delete` Options
*--msg-id MSG_ID*::
Specify the message ID of the to-be-created CBS
message. Range: 0..65535

View File

@@ -0,0 +1,148 @@
[[configuration]]
== Configuration
=== CBSP Peer Configuration
CBSP is the BSC-CBC interface within the 3GPP architecture. It serves
to communicate CSB and ETWS messages from the CBC to the BSC, who then
subsequently distributes it among the (matching) cells within the BSC
coverage area.
[[config-cbsp]]
==== Configuring the CBSP connections
According to 3GPP TS 48.049, a BSC typically operates as a TCP server,
and the CBC connects as TCP client. This would require the CBC to have
out-of-band knowledge of all the BSCs in the network (and their IP
addresses).
In order to comply with the specifications, OsmoCBC supports this mode
of operation as CBSP TCP client. However, to make network operation and
configuration more simple, it also can operate in TCP server mode,
accepting incoming connections from the BSCs. This way the BSCs need to
know the CBC IP address, but not vice-versa.
The CBC related configuration of OsmoBSC can be found in the `cbc` configuration
node of the VTY interface.
The default port number for the CBSP server is 48049, according to the CBSP
specification.
.Example: Configure TCP server mode and allow arbitrary BSCs to connect
----
cbc
unknown-peers accept
----
.Example: Configure TCP client mode and define each BSC
----
cbc
peer my-bsc-1
protocol cbsp
remote-port 46133
remote-ip 1.2.3.4
peer my-bsc-2
remote-port 46134
remote-ip 1.2.3.5
----
For more details on the available configuration commands, please check the OsmoCBC VTY Reference.
==== Configuring the IP/Port for CBSP to bind to
It can be configured to which IP and TCP port the CBSP protocol binds to.
The default is to bind to the 3GPP standard port number 48049 for CBSP at the
loopback IP address 127.0.0.1.
.Example: Configure CBSP to bind to 127.0.0.1:48049
----
cbc
cbsp
local-ip 127.0.0.1
local-port 48049
----
=== SBc-AP Peer Configuration
SBc-AP is the MME-CBC interface within the 3GPP architecture. It serves
to communicate CSB and ETWS messages from the CBC to the MME, who then
subsequently distributes it among the (matching) cells (eNodeBs) within the MME.
[[config-sbcap]]
==== Configuring the SBc-AP connections
An MME typically operates as an SCTP server, and the CBC connects as SCTP
client. This would require the CBC to have out-of-band knowledge of all the
MMEs in the network (and their IP addresses).
In order to comply with the specifications, OsmoCBC supports this mode
of operation as SBc-AP SCTP client. However, to make network operation and
configuration more simple, it also can operate in SCTP server mode,
accepting incoming connections from the MMEs. This way the MMEs need to
know the CBC IP address, but not vice-versa.
The default port number for the SBc-AP server is 29168, according to the SBc-AP
specification. It uses SCTP payload protocol identifier 24.
In order to make use of SCTP muti-homing capabilitites, simply configure several
IP addresses when configuring SBc-AP.
.Example: Configure SCTP server mode and allow arbitrary MMEs to connect
----
cbc
unknown-peers accept
----
.Example: Configure SCTP client mode and define each BSC
----
cbc
peer my-mme-1
protocol sbcap
remote-port 334455
remote-ip 1.2.3.4
remote-ip 1.2.3.5
peer my-mme-2
protocol sbcap
remote-port 334456
remote-ip 1.2.3.10
----
For more details on the available configuration commands, please check the OsmoCBC VTY Reference.
==== Configuring the IP/Port for SBc-AP to bind to
It can be configured to which IP and SCTP port the SBc-AP protocol binds to.
The default is to bind to the 3GPP standard port number 29168 for SBc-AP at the
loopback IP address 127.0.0.1 and ::1.
.Example: Configure SBc-AP to bind to (127.0.0.1,::1):48049
----
cbc
sbcap
local-ip 127.0.0.1
local-ip ::1
local-port 48049
----
[[config-ecbe]]
=== ECBE (REST Interface) Configuration
==== Configuring the IP/Port for ECBE to bind to
It can be configure to which IP and TCP port the ECBE REST Interface binds to.
The default is to bind to is the non-standard port number 12349 at the
loopback IP address 127.0.0.1.
.Example: Configure ECBE REST interface to bind to 127.0.0.1:8080
----
cbc
ecbe
local-ip 127.0.0.1
local-port 8080
----

View File

@@ -0,0 +1,49 @@
[[ecbe]]
== ECBE REST interface
The ECBE (External Cell Broadcast Entity) REST interface is specified in
the JSON schema files `cbc.schema.json` and `smscb.schema.json`, which
are part of the OsmoCBC distribution.
The REST interface binds to the IP and TCP port as configured and
can be reached at `http://IP:PORT/api/ecbe/v1`
NOTE:: It is your responsibility to properly secure access to the REST
interface endpoint to ensure only legitimate users can access it. This
may be achieved via packet filtering and a reverse HTTP proxy.
=== API endpoints
==== `POST /api/ecbe/v1/message`
This command is used to create a new SMSCB or ETWS message inside the CBC.
The `cbc_messsage` type as specified in the JSON schema (<<ecbe-json>>).
==== `DELETE /api/ecbe/v1/message/:message_id`
This command is used to delete an existing SMSCB or ETWS message from the CBC.
The `:message_id` parameter is the decimal integer representation of the
cbc_message.smscb.message_id that was specified when creating the
message via the POST command stated above.
[[ecbe-json]]
=== JSON Schema
==== `cbc.schema.json`
This is the main JSOM schema for osmo-cbc. In many places, it
references `smscb.schema.json` described further below.
----
include::{srcdir}/../../cbc.schema.json[]
----
==== `smscb.schema.json`
This JSON schema describes a lot of the basic data types relevant for
SMSCB. It is used heavily by `cbc.schema.json` described above.
----
include::{srcdir}/../../smscb.schema.json[]
----

View File

@@ -0,0 +1,91 @@
== Introspection using the VTY
OsmoCBC offers a VTY interface on TCP port 4264. Like all Osmocom VTY interfaces,
it is normally bound only to the loopback address 127.0.0.1. You can change this
via the configuration.
The actual IP/Port is printed to the log at startup time:
----
20210124110559489 DLGLOBAL NOTICE Available via telnet 127.0.0.1 4264 (telnet_interface.c:104)
----
=== Peer State
Using the `show peers` command, you can check on the state of all configured and/or connected
peers:
.Example: Showing a list of all peers
----
OsmoCBC> show peers
|Name | IP | Port | Proto | State |
|--------------------|----------------|------|-------|---------------------|
|ttcn3 | 127.0.0.1 | 9999 | CBSP | <disconnected> |
|local-bsc | 127.0.0.1 | 46133| CBSP | IDLE |
----
=== CBS Messages
Using `show messages cbs`, a list of all current CBS messages can be obtained.
.Example: Showing a list of all CBS messages
----
OsmoCBC> show messages cbs
|MsgId|SerNo| CBE Name | Category |Period|E|DCS|
|-----|-----|--------------------|-------------|------|-|---|
| 04D2| 7000|cbc_apitool |Normal | 5 |N| 0f|
----
Using `show message 1234`, details about a specific CBS message can be obtained:
.Example: Showing details about a single CBS message
----
OsmoCBC> show message id 1234
Message ID 04D2, Serial Number 7000, State: ACTIVE
Created by CBE 'cbc_apitool' at Sun Jan 24 11:10:31 2021
Repetition Period: 5 ( 9.41s), Number of broadcasts: 999
Warning Period: 4294967295s
DCS: 0x0f, Number of pages: 1, User Data Bytes: 7
Page 0: cd309aad2fa7e98d46a3d168341a8d46a3d168341a8d46a3d168341a8d46a3d168341a8d46a3d168341a8d46a3d168341a8d46a3d168341a8d46a3d168341a8d46a3d168341a8d46a3d168341a8d46a3d168
Peer: 'ttcn3', State: ACTIVE
Cells Installed:
Cells Failed:
Number of Broadcasts Completed:
Peer: 'local-bsc', State: ACTIVE
Cells Installed:
CGI 901-70-1-1234
Cells Failed:
Number of Broadcasts Completed:
----
=== ETWS Messages
Using `show messages etws` a list of all current ETWS messages can be obtained.
.Example: Showing a list of all ETWS messages
----
OsmoCBC> show messages etws
|MsgId|SerNo| CBE Name | Category |Period|E|Warning Type|
|-----|-----|--------------------|-------------|------|-|------------|
| 03E8| 7000|cbc_apitool |Normal | 5 |N| 0000|
----
.Example: Showing details of one single ETWS message
----
OsmoCBC> show message id 1000
Message ID 03E8, Serial Number 7000, State: ACTIVE
Created by CBE 'cbc_apitool' at Sun Jan 24 11:14:42 2021
Repetition Period: 5 ( 9.41s), Number of broadcasts: 999
ETWS Warning Type Value: 0x00, User Alert: On, Popup: On
Security: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Peer: 'ttcn3', State: ACTIVE
Cells Installed:
Cells Failed:
Number of Broadcasts Completed:
Peer: 'local-bsc', State: ACTIVE
Cells Installed:
CGI 901-70-1-1234
Cells Failed:
Number of Broadcasts Completed:
----

View File

@@ -10,6 +10,12 @@ It acts as a gateway between external applications / users, such as government
authorities for civil protection, and the various components within the 3GPP
network to actually deliver those broadcast and/or emergency messages.
.Role of the CBC inside the 3GPP network architecture (3GPP TS 23.041 §3)
[graphviz]
----
include::../images/cbc-in-network.dot[]
----
[[about]]
=== About OsmoCBC
@@ -17,6 +23,7 @@ OsmoCBC is the Osmocom implementation of a Cellular Broadcast Centre (CBC). It
implements:
- the BSC-CBC interface using the CBSP protocol
- The MME-CBC interface using the SBc-AP protocol
- a HTTP/JSON/RESTful interface for external applications
- a telnet-based command line interface for configuration and introspection called VTY
@@ -24,12 +31,10 @@ OsmoCBC provides mainly the following functionality:
- establishing communication with the various Radio Access Network elements such as BSCs within the network
- receiving requests to start or remove CBS and ETWS messages from external applications
- distributing the CBS and/or ETWS messages
has connection with the various RANs of the 3GPP cellular network
- distributing the CBS and/or ETWS messages to the various RANs of the 3GPP cellular network
Future versions of OsmoCBC are expected to contain the RNC-CBC interface
with the SABP protocol, as well as the MME-CBC interface using the SBcAP
protocol. Should you be interested in contributing to this effort,
Future versions of OsmoCBC are expected to contain the RNC-CBC interface with
the SABP protocol. Should you be interested in contributing to this effort,
please contact the author of this document.
=== CBSP implementation
@@ -49,29 +54,30 @@ that all BSCs need to know the IP address of the CBC. In this situation,
the CBC doesn't need to know each and every BSC in the network. It
simply only accepts incoming CBSP connections.
For more information, see <<config-cbsp>> on how CBSP is configured.
=== REST interface
=== SBc-AP implementation
The REST interface is specified in the JSON schema files
`cbc.schema.json` and `smscb.schema.json`, which are part of the OsmoCBC
distribution.
SBc-AP (SBc Application Part) is the interface between the Mobility Management
Entity (MME) and the Cell Broadcast Centre (CBC) in 4G networks. It is also the
interface between the Public Warning System Inter Working Function (PWS-IWF)
and the CBC in 5G networks. It is specified in 3GPP TS 29.168.
The REST interface currently binds to TCP port 12345 (on INADRR_ANY) and
can be reached at http://localhost:1234/api/ecbe/v1"
Similarly to what's done with CBSP, OsmoCBC also supports operating SBc-AP as an
SCTP client or an SCTP server. In the first case, OsmoCBC must be passed a list
of MMEs to connect to, while in the second one it will only accept incoming SCTP
connections.
NOTE:: It is your responsibility to properly secure access to the REST
interface endpoint to ensure only legitimate users can access it. This
may be achieved via packet filtering and a reverse HTTP proxy.
For more information, see <<config-sbcap>> on how SBc-AP is configured.
==== POST /api/ecbe/v1/message
=== ECBE REST interface
This command is used to create a new SMSCB or ETWS message inside the CBC.
The `cbc_messsage` type as specified in the JSON schema.
3GPP does not specify the external interface by which competent
authorities can submit SMSCB and/or ETWS messages to a CBC.
==== DELETE /api/ecbe/v1/message/:message_id
Hence, a non-standard, Osmocom specific HTTP/REST/JSON based interface
is offered for external entities to create and delete SMSCB and ETWS
messages within the CBC. This interface is called ECBE.
This command is used to delete an existing SMSCB or ETWS message from the CBC.
The `:message_id` parameter is the decimal integer representation of the
cbc_message.smscb.message_id that was specified when creating the
message via the POST command stated above.
For more information, see <<ecbe>> on the ECBE API definition and <<config-ecbe>>
on how it is configured.

View File

@@ -0,0 +1,21 @@
digraph G {
rankdir = RL;
CBC [color=red];
CBE -> CBC [label="REST/JSON"];
CBC -> BSC [label="CBSP"];
CBC -> RNC [label="SABP"];
CBC -> MME [label="SBc-AP"];
CBC -> PWSIWF [label="SBc-AP"];
PWSIWF -> AMF [label="N50"];
BSC -> BTS [label="A-bis RSL"];
RNC -> NodeB [label="Iub"];
MME -> eNodeB [label="S1-AP"];
AMF -> gNodeB [label="N2"];
BTS -> UE [label="CBCH"];
NodeB -> UE [label="BMC/CTCH"];
eNodeB -> UE [label="SIB10/11/12"];
gNodeB -> UE [label="Uu"];
}

View File

@@ -12,6 +12,14 @@ include::{srcdir}/chapters/overview.adoc[]
include::{srcdir}/chapters/running.adoc[]
include::{srcdir}/chapters/configuration.adoc[]
include::{srcdir}/chapters/introspection.adoc[]
include::{srcdir}/chapters/ecbe-rest-interface.adoc[]
include::{srcdir}/chapters/cbc-apitool.adoc[]
include::./common/chapters/counters-overview.adoc[]
include::{srcdir}/chapters/counters.adoc[]

1
include/Makefile.am Normal file
View File

@@ -0,0 +1 @@
SUBDIRS = osmocom

View File

@@ -0,0 +1 @@
SUBDIRS = cbc sbcap

View File

@@ -0,0 +1,17 @@
noinst_HEADERS = \
cbc_data.h \
cbc_peer.h \
cbc_message.h \
cbc_vty.h \
cbsp_link.h \
cbsp_link_fsm.h \
cbsp_msg.h \
charset.h \
debug.h \
sbcap_msg.h \
sbcap_link.h \
sbcap_link_fsm.h \
rest_it_op.h \
smscb_message_fsm.h \
smscb_peer_fsm.h \
$(NULL)

View File

@@ -0,0 +1,93 @@
#pragma once
#include <stdint.h>
#include <stdbool.h>
#include <osmocom/core/linuxlist.h>
#include <osmocom/core/it_q.h>
#include <osmocom/gsm/protocol/gsm_48_049.h>
#include <osmocom/gsm/gsm23003.h>
#define CBC_MAX_LOC_ADDRS 8
enum cbc_cell_id_type {
CBC_CELL_ID_NONE,
CBC_CELL_ID_BSS,
CBC_CELL_ID_CGI,
CBC_CELL_ID_LAC_CI,
CBC_CELL_ID_LAI,
CBC_CELL_ID_LAC,
CBC_CELL_ID_CI,
CBC_CELL_ID_ECGI,
CBC_CELL_ID_TAI,
};
struct cbc_cell_id {
struct llist_head list;
enum cbc_cell_id_type id_discr;
union {
struct osmo_cell_global_id cgi;
struct osmo_lac_and_ci_id lac_and_ci;
struct osmo_location_area_id lai;
uint16_t lac;
uint16_t ci;
struct osmo_eutran_cell_global_id ecgi;
struct osmo_tracking_area_id tai;
} u;
/* only in failure list */
struct {
int cause;
} fail;
/* only in num_compl list */
struct {
uint32_t num_compl;
uint32_t num_bcast_info;
} num_compl;
};
const char *cbc_cell_id2str(const struct cbc_cell_id *cid);
/*********************************************************************************
* CBC itself
*********************************************************************************/
struct cbc_cbsp_mgr;
struct cbc_sbcap_mgr;
struct cbc {
struct {
bool permit_unknown_peers;
struct {
char *local_host;
int local_port;
} cbsp;
struct {
char *local_host[CBC_MAX_LOC_ADDRS];
unsigned int num_local_host;
int local_port;
} sbcap;
struct {
char *local_host;
int local_port;
} ecbe;
} config;
struct {
struct cbc_cbsp_mgr *mgr;
} cbsp;
struct {
struct cbc_sbcap_mgr *mgr;
} sbcap;
struct llist_head messages; /* cbc_message.list */
struct llist_head expired_messages; /* cbc_message.list */
struct llist_head peers; /* cbc_peer.list */
struct {
struct osmo_it_q *rest2main;
} it_q;
};
extern struct cbc *g_cbc;
struct cbc *cbc_alloc(void *ctx);
int cbc_start(struct cbc *cbc);
/* rest_api.c */
int rest_api_init(void *ctx, const char *bind_addr, uint16_t port);
void rest_api_fin(void);

View File

@@ -7,66 +7,6 @@
#include <osmocom/gsm/protocol/gsm_48_049.h>
#include <osmocom/gsm/gsm23003.h>
struct osmo_cbsp_cbc_client;
struct osmo_sabp_cbc_client;
struct rest_it_op;
/*********************************************************************************
* CBC Peer
*********************************************************************************/
enum cbc_peer_protocol {
CBC_PEER_PROTO_CBSP,
CBC_PEER_PROTO_SABP,
};
struct cbc_peer {
struct llist_head list; /* linked to cbc.peers */
const char *name;
char *remote_host; /* remote IP address in string format */
int remote_port; /* remote port number or -1 for random */
enum cbc_peer_protocol proto;
union {
struct osmo_cbsp_cbc_client *cbsp;
struct osmo_sabp_cbc_client *sabp;
} client;
};
extern const struct value_string cbc_peer_proto_name[];
enum cbc_cell_id_type {
CBC_CELL_ID_NONE,
CBC_CELL_ID_BSS,
CBC_CELL_ID_CGI,
CBC_CELL_ID_LAC_CI,
CBC_CELL_ID_LAI,
CBC_CELL_ID_LAC,
CBC_CELL_ID_CI,
};
struct cbc_cell_id {
struct llist_head list;
enum cbc_cell_id_type id_discr;
union {
struct osmo_cell_global_id cgi;
struct osmo_lac_and_ci_id lac_and_ci;
struct osmo_location_area_id lai;
uint16_t lac;
uint16_t ci;
} u;
/* only in failure list */
struct {
int cause;
} fail;
/* only in num_compl list */
struct {
uint32_t num_compl;
uint32_t num_bcast_info;
} num_compl;
};
/*********************************************************************************
* CBC Message
@@ -158,34 +98,15 @@ struct cbc_message {
} time;
};
/*********************************************************************************
* CBC itself
*********************************************************************************/
struct cbc {
struct {
bool permit_unknown_peers;
} config;
struct llist_head messages; /* cbc_message.list */
struct llist_head expired_messages; /* cbc_message.list */
struct llist_head peers; /* cbc_peer.list */
struct {
struct osmo_it_q *rest2main;
} it_q;
};
extern struct cbc *g_cbc;
struct cbc_message *cbc_message_alloc(void *ctx, const struct cbc_message *cbcmsg);
void cbc_message_free(struct cbc_message *cbcmsg);
int cbc_message_new(const struct cbc_message *cbcmsg, struct rest_it_op *op);
void cbc_message_delete(struct cbc_message *cbcmsg, struct rest_it_op *op);
struct cbc_message *cbc_message_by_id(uint16_t message_id);
struct cbc_message *cbc_message_expired_by_id(uint16_t message_id);
int peer_new_cbc_message(struct cbc_peer *peer, struct cbc_message *cbcmsg);
int cbc_message_del_peer(struct cbc_message *cbcmsg, struct cbc_peer *peer);
int cbc_message_add_peer(struct cbc_message *cbcmsg, struct cbc_peer *peer);
struct cbc_message_peer *smscb_peer_fsm_alloc(struct cbc_peer *peer, struct cbc_message *cbcmsg);
struct cbc_message_peer *cbc_message_peer_get(struct cbc_message *cbcmsg, struct cbc_peer *peer);
struct cbc_peer *cbc_peer_by_name(const char *name);
struct cbc_peer *cbc_peer_by_addr_proto(const char *remote_host, uint16_t remote_port,
enum cbc_peer_protocol proto);
struct cbc_peer *cbc_peer_create(const char *name, enum cbc_peer_protocol proto);
void cbc_peer_remove(struct cbc_peer *peer);

View File

@@ -0,0 +1,58 @@
#pragma once
#include <stdint.h>
#include <stdbool.h>
#include <osmocom/core/linuxlist.h>
struct cbc_cbsp_link;
struct cbc_sabp_link;
struct cbc_sbcap_link;
#define CBC_MAX_REM_ADDRS 8
/*********************************************************************************
* CBC Peer
*********************************************************************************/
enum cbc_peer_protocol {
CBC_PEER_PROTO_CBSP,
CBC_PEER_PROTO_SABP,
CBC_PEER_PROTO_SBcAP
};
enum cbc_peer_link_mode {
CBC_PEER_LINK_MODE_DISABLED = 0,
CBC_PEER_LINK_MODE_SERVER,
CBC_PEER_LINK_MODE_CLIENT,
};
extern const struct value_string cbc_peer_link_mode_names[];
static inline const char *cbc_peer_link_mode_name(enum cbc_peer_link_mode val)
{ return get_value_string(cbc_peer_link_mode_names, val); }
struct cbc_peer {
struct llist_head list; /* linked to cbc.peers */
const char *name;
char *remote_host[CBC_MAX_REM_ADDRS]; /* remote IP address in string format */
unsigned int num_remote_host; /* number of addresses present in remote_host */
int remote_port; /* remote port number or -1 for random */
bool unknown_dynamic_peer; /* dynamic/unknown peer; not saved in VTY */
enum cbc_peer_protocol proto;
union {
struct cbc_cbsp_link *cbsp;
struct cbc_sabp_link *sabp;
struct cbc_sbcap_link *sbcap;
} link;
enum cbc_peer_link_mode link_mode;
};
extern const struct value_string cbc_peer_proto_name[];
struct cbc_peer *cbc_peer_create(const char *name, enum cbc_peer_protocol proto);
void cbc_peer_remove(struct cbc_peer *peer);
struct cbc_peer *cbc_peer_by_name(const char *name);
struct cbc_peer *cbc_peer_by_addr_proto(const char *remote_host, uint16_t remote_port,
enum cbc_peer_protocol proto);
int cbc_peer_apply_cfg_chg(struct cbc_peer *peer);

View File

@@ -0,0 +1,10 @@
#pragma once
enum cbc_vty_node {
CBC_NODE = _LAST_OSMOVTY_NODE + 1,
PEER_NODE,
CBSP_NODE,
SBcAP_NODE,
ECBE_NODE,
};
void cbc_vty_init(void);

View File

@@ -0,0 +1,52 @@
#pragma once
#include <osmocom/core/linuxlist.h>
#include <osmocom/gsm/cbsp.h>
#include <osmocom/netif/stream.h>
#include <osmocom/cbc/cbc_data.h>
#define LOGPCC(link, level, fmt, args...) \
LOGP(DCBSP, level, "%s: " fmt, cbc_cbsp_link_name(link), ## args)
struct cbc_cbsp_link;
struct osmo_fsm_inst;
struct cbc_peer;
/* Holder of all CBSP conn related information: */
struct cbc_cbsp_mgr {
/* libosmo-netif stream server */
struct osmo_stream_srv_link *srv_link;
/* BSCs / links connected to this CBC */
struct llist_head links;
/* receive call-back; called for every received message */
int (*rx_cb)(struct cbc_cbsp_link *link, struct osmo_cbsp_decoded *dec);
};
struct cbc_cbsp_mgr *cbc_cbsp_mgr_alloc(void *ctx);
int cbc_cbsp_mgr_open_srv(struct cbc_cbsp_mgr *mgr);
/* a CBSP link with a single (remote) peer connected to us */
struct cbc_cbsp_link {
/* entry in osmo_cbsp_cbc.links */
struct llist_head list;
/* partially received CBSP message (rx completion pending) */
struct msgb *rx_msg;
struct osmo_fsm_inst *fi;
struct cbc_peer *peer;
bool is_client;
union {
struct osmo_stream_srv *srv_conn;
struct osmo_stream_cli *cli_conn;
void *conn; /* used when we just care about the pointer */
};
};
struct cbc_cbsp_link *cbc_cbsp_link_alloc(struct cbc_cbsp_mgr *cbc, struct cbc_peer *peer);
void cbc_cbsp_link_free(struct cbc_cbsp_link *link);
const char *cbc_cbsp_link_name(const struct cbc_cbsp_link *link);
int cbc_cbsp_link_open_cli(struct cbc_cbsp_link *link);
int cbc_cbsp_link_tx(struct cbc_cbsp_link *link, struct osmo_cbsp_decoded *cbsp);
void cbc_cbsp_link_close(struct cbc_cbsp_link *link);
int cbc_cbsp_link_rx_cb(struct cbc_cbsp_link *link, struct osmo_cbsp_decoded *dec);

View File

@@ -0,0 +1,15 @@
#pragma once
#include <stdint.h>
#include <osmocom/core/fsm.h>
extern struct osmo_fsm cbsp_link_fsm;
enum cbsp_link_event {
CBSP_LINK_E_RX_RST_COMPL, /* reset complete received */
CBSP_LINK_E_RX_RST_FAIL, /* reset failure received */
CBSP_LINK_E_RX_KA_COMPL, /* keep-alive complete received */
CBSP_LINK_E_RX_RESTART, /* restart received */
CBSP_LINK_E_CMD_RESET, /* RESET command from CBC */
CBSP_LINK_E_CMD_CLOSE, /* CLOSE command from CBC */
};

View File

@@ -0,0 +1,5 @@
#pragma once
#include <osmocom/gsm/cbsp.h>
struct cbc_message;
struct osmo_cbsp_decoded *cbsp_gen_write_replace_req(void *ctx, const struct cbc_message *cbcmsg);

View File

@@ -0,0 +1,10 @@
#pragma once
enum {
DMAIN,
DSMSCB,
DCBSP,
DSBcAP,
DASN1C,
DREST,
};

View File

@@ -7,7 +7,7 @@
#include <osmocom/core/linuxlist.h>
#include <osmocom/core/it_q.h>
#include "cbc_data.h"
#include <osmocom/cbc/cbc_message.h>
enum rest_it_operation {
REST_IT_OP_NONE,
@@ -50,3 +50,4 @@ struct rest_it_op {
int rest_it_op_send_and_wait(struct rest_it_op *op);
void rest_it_op_set_http_result(struct rest_it_op *op, uint32_t code, const char *body);
void rest_it_op_complete(struct rest_it_op *op);
void rest2main_read_cb(struct osmo_it_q *q, struct llist_head *item);

View File

@@ -0,0 +1,52 @@
#pragma once
#include <osmocom/core/linuxlist.h>
#include <osmocom/netif/stream.h>
#include <osmocom/sbcap/sbcap_common.h>
#include "cbc_data.h"
#define SBcAP_SCTP_PORT 29168
typedef struct SBcAP_SBC_AP_PDU SBcAP_SBC_AP_PDU_t;
#define LOGPSBCAPC(link, level, fmt, args...) \
LOGP(DSBcAP, level, "%s: " fmt, cbc_sbcap_link_name(link), ## args)
struct cbc_sbcap_link;
struct osmo_fsm_inst;
struct cbc_peer;
/* Holder of all SBc-AP conn related information: */
struct cbc_sbcap_mgr {
/* libosmo-netif stream server */
struct osmo_stream_srv_link *srv_link;
/* MMEs / links connected to this CBC */
struct llist_head links;
/* receive call-back; called for every received message */
int (*rx_cb)(struct cbc_sbcap_link *link, SBcAP_SBC_AP_PDU_t *pdu);
};
struct cbc_sbcap_mgr *cbc_sbcap_mgr_alloc(void *ctx);
int cbc_sbcap_mgr_open_srv(struct cbc_sbcap_mgr *mgr);
/* an SBc-AP link with a single (remote) peer connected to us */
struct cbc_sbcap_link {
/* entry in osmo_sbcap_cbc.links */
struct llist_head list;
struct osmo_fsm_inst *fi;
struct cbc_peer *peer;
bool is_client;
union {
struct osmo_stream_srv *srv_conn;
struct osmo_stream_cli *cli_conn;
void *conn; /* used when we just care about the pointer */
};
};
struct cbc_sbcap_link *cbc_sbcap_link_alloc(struct cbc_sbcap_mgr *cbc, struct cbc_peer *peer);
void cbc_sbcap_link_free(struct cbc_sbcap_link *link);
const char *cbc_sbcap_link_name(const struct cbc_sbcap_link *link);
int cbc_sbcap_link_open_cli(struct cbc_sbcap_link *link);
int cbc_sbcap_link_tx(struct cbc_sbcap_link *link, SBcAP_SBC_AP_PDU_t *pdu);
void cbc_sbcap_link_close(struct cbc_sbcap_link *link);
int cbc_sbcap_link_rx_cb(struct cbc_sbcap_link *link, SBcAP_SBC_AP_PDU_t *pdu);

View File

@@ -0,0 +1,12 @@
#pragma once
#include <stdint.h>
#include <osmocom/core/fsm.h>
extern struct osmo_fsm sbcap_link_fsm;
enum sbcap_link_event {
SBcAP_LINK_E_RX_RESTART, /* SBc-AP PWS Restart Ind received */
SBcAP_LINK_E_CMD_RESET, /* RESET command from CBC */
SBcAP_LINK_E_CMD_CLOSE, /* CLOSE command from CBC */
};

View File

@@ -0,0 +1,17 @@
#pragma once
#include <osmocom/core/linuxlist.h>
#include <osmocom/netif/stream.h>
#include <osmocom/sbcap/sbcap_common.h>
#include "cbc_data.h"
struct cbc_message;
typedef struct SBcAP_SBC_AP_PDU SBcAP_SBC_AP_PDU_t;
SBcAP_SBC_AP_PDU_t *sbcap_gen_write_replace_warning_req(void *ctx, const struct cbc_message *cbcmsg);
SBcAP_SBC_AP_PDU_t *sbcap_gen_stop_warning_req(void *ctx, const struct cbc_message *cbcmsg);
SBcAP_SBC_AP_PDU_t *sbcap_gen_error_ind(void *ctx, SBcAP_Cause_t cause, SBcAP_SBC_AP_PDU_t *rx_pdu);
void cci_from_sbcap_bcast_cell_id(struct cbc_cell_id *cci, const SBcAP_CellId_Broadcast_List_Item_t *it);
void cci_from_sbcap_tai(struct cbc_cell_id *cci, const SBcAP_TAI_t *tai);

View File

@@ -0,0 +1,53 @@
#pragma once
#include <stdint.h>
#include <osmocom/core/fsm.h>
enum smscb_message_fsm_event {
SMSCB_MSG_E_CHILD_DIED,
/* create a message (from REST) */
SMSCB_MSG_E_CREATE,
/* replace a message (from REST) */
SMSCB_MSG_E_REPLACE,
/* get status of a message (from REST) */
SMSCB_MSG_E_STATUS,
/* delete a message (from REST) */
SMSCB_MSG_E_DELETE,
/* peer confirms write */
SMSCB_MSG_E_WRITE_ACK,
SMSCB_MSG_E_WRITE_NACK,
/* peer confirms replace */
SMSCB_MSG_E_REPLACE_ACK,
SMSCB_MSG_E_REPLACE_NACK,
/* peer confirms delete */
SMSCB_MSG_E_DELETE_ACK,
SMSCB_MSG_E_DELETE_NACK,
/* peer confirms status query */
SMSCB_MSG_E_STATUS_ACK,
SMSCB_MSG_E_STATUS_NACK
};
enum smscb_fsm_state {
/* initial state after creation */
SMSCB_S_INIT,
/* peer (BSC) have been notified of this SMSCB; we're waiting for ACK */
SMSCB_S_WAIT_WRITE_ACK,
/* peer (BSC) have confirmed it, message is active */
SMSCB_S_ACTIVE,
/* we have modified the message and sent REPLACE to peer; we're waiting for ACK */
SMSCB_S_WAIT_REPLACE_ACK,
/* we have modified the message and sent REPLACE to peer; we're waiting for ACK */
SMSCB_S_WAIT_STATUS_ACK,
/* we have deleted the message and sent KILL to peer; wait for ACK */
SMSCB_S_WAIT_DELETE_ACK,
SMSCB_S_DELETED,
};
enum smscb_p_fsm_timer {
T_WAIT_WRITE_ACK,
T_WAIT_REPLACE_ACK,
T_WAIT_STATUS_ACK,
T_WAIT_DELETE_ACK,
};
extern const struct value_string smscb_message_fsm_event_names[];

View File

@@ -0,0 +1,40 @@
#pragma once
#include <stdint.h>
#include <osmocom/core/fsm.h>
enum smscb_peer_fsm_event {
/* create a message (from REST) */
SMSCB_PEER_E_CREATE,
/* replace a message (from REST) */
SMSCB_PEER_E_REPLACE,
/* get status of a message (from REST) */
SMSCB_PEER_E_STATUS,
/* delete a message (from REST) */
SMSCB_PEER_E_DELETE,
/* CBSP peer confirms write */
SMSCB_PEER_E_CBSP_WRITE_ACK,
SMSCB_PEER_E_CBSP_WRITE_NACK,
/* CBSP peer confirms replace */
SMSCB_PEER_E_CBSP_REPLACE_ACK,
SMSCB_PEER_E_CBSP_REPLACE_NACK,
/* CBSP peer confirms delete */
SMSCB_PEER_E_CBSP_DELETE_ACK,
SMSCB_PEER_E_CBSP_DELETE_NACK,
/* CBSP peer confirms status query */
SMSCB_PEER_E_CBSP_STATUS_ACK,
SMSCB_PEER_E_CBSP_STATUS_NACK,
/* SBc-AP peer confirms write */
SMSCB_PEER_E_SBCAP_WRITE_ACK,
SMSCB_PEER_E_SBCAP_WRITE_NACK,
/* SBc-AP peer confirms delete */
SMSCB_PEER_E_SBCAP_DELETE_ACK,
SMSCB_PEER_E_SBCAP_DELETE_NACK,
/* SBc-AP peer sends Write Replace Warning Indication to us */
SMSCB_PEER_E_SBCAP_WRITE_IND,
};
extern const struct value_string smscb_peer_fsm_event_names[];
extern struct osmo_fsm cbsp_smscb_peer_fsm;
extern struct osmo_fsm sbcap_smscb_peer_fsm;

View File

@@ -0,0 +1,120 @@
sbcap_HEADERS = \
sbcap_common.h \
sbcap_internal.h \
SBcAP_Broadcast-Cancelled-Area-List-5GS.h \
SBcAP_Broadcast-Cancelled-Area-List.h \
SBcAP_Broadcast-Empty-Area-List-5GS.h \
SBcAP_Broadcast-Empty-Area-List.h \
SBcAP_Broadcast-Scheduled-Area-List-5GS.h \
SBcAP_Broadcast-Scheduled-Area-List.h \
SBcAP_CancelledCellinEAI.h \
SBcAP_CancelledCellinEAI-Item.h \
SBcAP_CancelledCellinTAI-5GS.h \
SBcAP_CancelledCellinTAI.h \
SBcAP_CancelledCellinTAI-Item.h \
SBcAP_Cause.h \
SBcAP_CellId-Broadcast-List-5GS.h \
SBcAP_CellId-Broadcast-List.h \
SBcAP_CellId-Broadcast-List-Item.h \
SBcAP_CellID-Cancelled-Item.h \
SBcAP_CellID-Cancelled-List-5GS.h \
SBcAP_CellID-Cancelled-List.h \
SBcAP_CellIdentity.h \
SBcAP_Concurrent-Warning-Message-Indicator.h \
SBcAP_Criticality-Diagnostics.h \
SBcAP_CriticalityDiagnostics-IE-List.h \
SBcAP_Criticality.h \
SBcAP_Data-Coding-Scheme.h \
SBcAP_ECGIList.h \
SBcAP_EmergencyAreaID-Broadcast-List.h \
SBcAP_EmergencyAreaID-Broadcast-List-Item.h \
SBcAP_EmergencyAreaID-Cancelled-Item.h \
SBcAP_EmergencyAreaID-Cancelled-List.h \
SBcAP_Emergency-Area-ID.h \
SBcAP_Emergency-Area-ID-List.h \
SBcAP_ENB-ID.h \
SBcAP_Error-Indication.h \
SBcAP_EUTRAN-CGI.h \
SBcAP_Extended-Repetition-Period.h \
SBcAP_EXTERNAL.h \
SBcAP_Failed-Cell-List.h \
SBcAP_Failed-Cell-List-NR.h \
SBcAP_Global-ENB-ID.h \
SBcAP_Global-GNB-ID.h \
SBcAP_Global-NgENB-ID.h \
SBcAP_Global-RAN-Node-ID.h \
SBcAP_GNB-ID.h \
SBcAP_InitiatingMessage.h \
SBcAP_List-of-5GS-Cells-for-Failure.h \
SBcAP_List-of-5GS-TAI-for-Restart.h \
SBcAP_List-of-5GS-TAIs.h \
SBcAP_List-of-EAIs-Restart.h \
SBcAP_List-of-TAIs.h \
SBcAP_List-of-TAIs-Restart.h \
SBcAP_Message-Identifier.h \
SBcAP_NgENB-ID.h \
SBcAP_NRCellIdentity.h \
SBcAP_NR-CGI.h \
SBcAP_NR-CGIList.h \
SBcAP_NumberOfBroadcasts.h \
SBcAP_Number-of-Broadcasts-Requested.h \
SBcAP_Omc-Id.h \
SBcAP_PLMNidentity.h \
SBcAP_Presence.h \
SBcAP_ProcedureCode.h \
SBcAP_ProtocolExtensionContainer.h \
SBcAP_ProtocolExtensionField.h \
SBcAP_ProtocolExtensionID.h \
SBcAP_ProtocolIE-Container.h \
SBcAP_ProtocolIE-ContainerList.h \
SBcAP_ProtocolIE-Field.h \
SBcAP_ProtocolIE-ID.h \
SBcAP_PWS-Failure-Indication.h \
SBcAP_PWS-Restart-Indication.h \
SBcAP_RAT-Selector-5GS.h \
SBcAP_Repetition-Period.h \
SBcAP_Restarted-Cell-List.h \
SBcAP_Restarted-Cell-List-NR.h \
SBcAP_SBC-AP-PDU.h \
SBcAP_ScheduledCellinEAI.h \
SBcAP_ScheduledCellinEAI-Item.h \
SBcAP_ScheduledCellinTAI-5GS.h \
SBcAP_ScheduledCellinTAI.h \
SBcAP_ScheduledCellinTAI-Item.h \
SBcAP_Send-Stop-Warning-Indication.h \
SBcAP_Send-Write-Replace-Warning-Indication.h \
SBcAP_Serial-Number.h \
SBcAP_Stop-All-Indicator.h \
SBcAP_Stop-Warning-Indication.h \
SBcAP_Stop-Warning-Request.h \
SBcAP_Stop-Warning-Response.h \
SBcAP_SuccessfulOutcome.h \
SBcAP_TAC-5GS.h \
SBcAP_TAC.h \
SBcAP_TAI-5GS.h \
SBcAP_TAI-Broadcast-List-5GS.h \
SBcAP_TAI-Broadcast-List.h \
SBcAP_TAI-Broadcast-List-Item.h \
SBcAP_TAI-Cancelled-List-5GS.h \
SBcAP_TAI-Cancelled-List.h \
SBcAP_TAI-Cancelled-List-Item.h \
SBcAP_TAI.h \
SBcAP_TAI-List-for-Warning.h \
SBcAP_TBCD-STRING.h \
SBcAP_TriggeringMessage.h \
SBcAP_TypeOfError.h \
SBcAP_Unknown-5GS-Tracking-Area-List.h \
SBcAP_Unknown-Tracking-Area-List.h \
SBcAP_UnsuccessfulOutcome.h \
SBcAP_Warning-Area-Coordinates.h \
SBcAP_Warning-Area-List-5GS.h \
SBcAP_Warning-Area-List.h \
SBcAP_Warning-Message-Content.h \
SBcAP_Warning-Security-Information.h \
SBcAP_Warning-Type.h \
SBcAP_Write-Replace-Warning-Indication.h \
SBcAP_Write-Replace-Warning-Request.h \
SBcAP_Write-Replace-Warning-Response.h \
$(NULL)
sbcapdir = $(includedir)/osmocom/sbcap

View File

@@ -0,0 +1,57 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_Broadcast_Cancelled_Area_List_5GS_H_
#define _SBcAP_Broadcast_Cancelled_Area_List_5GS_H_
#include <asn_application.h>
/* Including external dependencies */
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_CellID_Cancelled_List_5GS;
struct SBcAP_TAI_Cancelled_List_5GS;
struct SBcAP_EmergencyAreaID_Cancelled_List;
struct SBcAP_ProtocolExtensionContainer;
/* SBcAP_Broadcast-Cancelled-Area-List-5GS */
typedef struct SBcAP_Broadcast_Cancelled_Area_List_5GS {
struct SBcAP_CellID_Cancelled_List_5GS *cellID_Cancelled_List_5GS; /* OPTIONAL */
struct SBcAP_TAI_Cancelled_List_5GS *tAI_Cancelled_List_5GS; /* OPTIONAL */
struct SBcAP_EmergencyAreaID_Cancelled_List *emergencyAreaID_Cancelled_List; /* OPTIONAL */
struct SBcAP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
*/
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_Broadcast_Cancelled_Area_List_5GS_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_Broadcast_Cancelled_Area_List_5GS;
extern asn_SEQUENCE_specifics_t asn_SPC_SBcAP_Broadcast_Cancelled_Area_List_5GS_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_Broadcast_Cancelled_Area_List_5GS_1[4];
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_CellID-Cancelled-List-5GS.h>
#include <osmocom/sbcap/SBcAP_TAI-Cancelled-List-5GS.h>
#include <osmocom/sbcap/SBcAP_EmergencyAreaID-Cancelled-List.h>
#endif /* _SBcAP_Broadcast_Cancelled_Area_List_5GS_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,58 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_Broadcast_Cancelled_Area_List_H_
#define _SBcAP_Broadcast_Cancelled_Area_List_H_
#include <asn_application.h>
/* Including external dependencies */
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_CellID_Cancelled_List;
struct SBcAP_TAI_Cancelled_List;
struct SBcAP_EmergencyAreaID_Cancelled_List;
struct SBcAP_ProtocolExtensionContainer;
/* SBcAP_Broadcast-Cancelled-Area-List */
typedef struct SBcAP_Broadcast_Cancelled_Area_List {
struct SBcAP_CellID_Cancelled_List *cellID_Cancelled_List; /* OPTIONAL */
struct SBcAP_TAI_Cancelled_List *tAI_Cancelled_List; /* OPTIONAL */
struct SBcAP_EmergencyAreaID_Cancelled_List *emergencyAreaID_Cancelled_List; /* OPTIONAL */
struct SBcAP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
*/
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_Broadcast_Cancelled_Area_List_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_Broadcast_Cancelled_Area_List;
extern asn_SEQUENCE_specifics_t asn_SPC_SBcAP_Broadcast_Cancelled_Area_List_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_Broadcast_Cancelled_Area_List_1[4];
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_CellID-Cancelled-List.h>
#include <osmocom/sbcap/SBcAP_TAI-Cancelled-List.h>
#include <osmocom/sbcap/SBcAP_EmergencyAreaID-Cancelled-List.h>
#include <osmocom/sbcap/SBcAP_ProtocolExtensionContainer.h>
#endif /* _SBcAP_Broadcast_Cancelled_Area_List_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,47 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_Broadcast_Empty_Area_List_5GS_H_
#define _SBcAP_Broadcast_Empty_Area_List_5GS_H_
#include <asn_application.h>
/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_Global_RAN_Node_ID;
/* SBcAP_Broadcast-Empty-Area-List-5GS */
typedef struct SBcAP_Broadcast_Empty_Area_List_5GS {
A_SEQUENCE_OF(struct SBcAP_Global_RAN_Node_ID) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_Broadcast_Empty_Area_List_5GS_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_Broadcast_Empty_Area_List_5GS;
extern asn_SET_OF_specifics_t asn_SPC_SBcAP_Broadcast_Empty_Area_List_5GS_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_Broadcast_Empty_Area_List_5GS_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_Broadcast_Empty_Area_List_5GS_constr_1;
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_Global-RAN-Node-ID.h>
#endif /* _SBcAP_Broadcast_Empty_Area_List_5GS_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,47 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_Broadcast_Empty_Area_List_H_
#define _SBcAP_Broadcast_Empty_Area_List_H_
#include <asn_application.h>
/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_Global_ENB_ID;
/* SBcAP_Broadcast-Empty-Area-List */
typedef struct SBcAP_Broadcast_Empty_Area_List {
A_SEQUENCE_OF(struct SBcAP_Global_ENB_ID) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_Broadcast_Empty_Area_List_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_Broadcast_Empty_Area_List;
extern asn_SET_OF_specifics_t asn_SPC_SBcAP_Broadcast_Empty_Area_List_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_Broadcast_Empty_Area_List_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_Broadcast_Empty_Area_List_constr_1;
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_Global-ENB-ID.h>
#endif /* _SBcAP_Broadcast_Empty_Area_List_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,57 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_Broadcast_Scheduled_Area_List_5GS_H_
#define _SBcAP_Broadcast_Scheduled_Area_List_5GS_H_
#include <asn_application.h>
/* Including external dependencies */
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_CellId_Broadcast_List_5GS;
struct SBcAP_TAI_Broadcast_List_5GS;
struct SBcAP_EmergencyAreaID_Broadcast_List;
struct SBcAP_ProtocolExtensionContainer;
/* SBcAP_Broadcast-Scheduled-Area-List-5GS */
typedef struct SBcAP_Broadcast_Scheduled_Area_List_5GS {
struct SBcAP_CellId_Broadcast_List_5GS *cellId_Broadcast_List_5GS; /* OPTIONAL */
struct SBcAP_TAI_Broadcast_List_5GS *tAI_Broadcast_List_5GS; /* OPTIONAL */
struct SBcAP_EmergencyAreaID_Broadcast_List *emergencyAreaID_Broadcast_List; /* OPTIONAL */
struct SBcAP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
*/
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_Broadcast_Scheduled_Area_List_5GS_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_Broadcast_Scheduled_Area_List_5GS;
extern asn_SEQUENCE_specifics_t asn_SPC_SBcAP_Broadcast_Scheduled_Area_List_5GS_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_Broadcast_Scheduled_Area_List_5GS_1[4];
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_CellId-Broadcast-List-5GS.h>
#include <osmocom/sbcap/SBcAP_TAI-Broadcast-List-5GS.h>
#include <osmocom/sbcap/SBcAP_EmergencyAreaID-Broadcast-List.h>
#endif /* _SBcAP_Broadcast_Scheduled_Area_List_5GS_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,58 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_Broadcast_Scheduled_Area_List_H_
#define _SBcAP_Broadcast_Scheduled_Area_List_H_
#include <asn_application.h>
/* Including external dependencies */
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_CellId_Broadcast_List;
struct SBcAP_TAI_Broadcast_List;
struct SBcAP_EmergencyAreaID_Broadcast_List;
struct SBcAP_ProtocolExtensionContainer;
/* SBcAP_Broadcast-Scheduled-Area-List */
typedef struct SBcAP_Broadcast_Scheduled_Area_List {
struct SBcAP_CellId_Broadcast_List *cellId_Broadcast_List; /* OPTIONAL */
struct SBcAP_TAI_Broadcast_List *tAI_Broadcast_List; /* OPTIONAL */
struct SBcAP_EmergencyAreaID_Broadcast_List *emergencyAreaID_Broadcast_List; /* OPTIONAL */
struct SBcAP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
*/
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_Broadcast_Scheduled_Area_List_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_Broadcast_Scheduled_Area_List;
extern asn_SEQUENCE_specifics_t asn_SPC_SBcAP_Broadcast_Scheduled_Area_List_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_Broadcast_Scheduled_Area_List_1[4];
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_CellId-Broadcast-List.h>
#include <osmocom/sbcap/SBcAP_TAI-Broadcast-List.h>
#include <osmocom/sbcap/SBcAP_EmergencyAreaID-Broadcast-List.h>
#include <osmocom/sbcap/SBcAP_ProtocolExtensionContainer.h>
#endif /* _SBcAP_Broadcast_Scheduled_Area_List_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,53 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_CancelledCellinEAI_Item_H_
#define _SBcAP_CancelledCellinEAI_Item_H_
#include <asn_application.h>
/* Including external dependencies */
#include <osmocom/sbcap/SBcAP_EUTRAN-CGI.h>
#include <osmocom/sbcap/SBcAP_NumberOfBroadcasts.h>
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_ProtocolExtensionContainer;
/* SBcAP_CancelledCellinEAI-Item */
typedef struct SBcAP_CancelledCellinEAI_Item {
SBcAP_EUTRAN_CGI_t eCGI;
SBcAP_NumberOfBroadcasts_t numberOfBroadcasts;
struct SBcAP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
*/
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_CancelledCellinEAI_Item_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_CancelledCellinEAI_Item;
extern asn_SEQUENCE_specifics_t asn_SPC_SBcAP_CancelledCellinEAI_Item_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_CancelledCellinEAI_Item_1[3];
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_ProtocolExtensionContainer.h>
#endif /* _SBcAP_CancelledCellinEAI_Item_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,47 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_CancelledCellinEAI_H_
#define _SBcAP_CancelledCellinEAI_H_
#include <asn_application.h>
/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_CancelledCellinEAI_Item;
/* SBcAP_CancelledCellinEAI */
typedef struct SBcAP_CancelledCellinEAI {
A_SEQUENCE_OF(struct SBcAP_CancelledCellinEAI_Item) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_CancelledCellinEAI_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_CancelledCellinEAI;
extern asn_SET_OF_specifics_t asn_SPC_SBcAP_CancelledCellinEAI_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_CancelledCellinEAI_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_CancelledCellinEAI_constr_1;
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_CancelledCellinEAI-Item.h>
#endif /* _SBcAP_CancelledCellinEAI_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,64 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_CancelledCellinTAI_5GS_H_
#define _SBcAP_CancelledCellinTAI_5GS_H_
#include <asn_application.h>
/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <osmocom/sbcap/SBcAP_NR-CGI.h>
#include <osmocom/sbcap/SBcAP_NumberOfBroadcasts.h>
#include <constr_SEQUENCE.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_ProtocolExtensionContainer;
/* Forward definitions */
typedef struct SBcAP_CancelledCellinTAI_5GS__Member {
SBcAP_NR_CGI_t nR_CGI;
SBcAP_NumberOfBroadcasts_t numberOfBroadcasts;
struct SBcAP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
*/
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} CancelledCellinTAI_5GS__Member;
/* SBcAP_CancelledCellinTAI-5GS */
typedef struct SBcAP_CancelledCellinTAI_5GS {
A_SEQUENCE_OF(CancelledCellinTAI_5GS__Member) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_CancelledCellinTAI_5GS_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_CancelledCellinTAI_5GS;
extern asn_SET_OF_specifics_t asn_SPC_SBcAP_CancelledCellinTAI_5GS_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_CancelledCellinTAI_5GS_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_CancelledCellinTAI_5GS_constr_1;
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_ProtocolExtensionContainer.h>
#endif /* _SBcAP_CancelledCellinTAI_5GS_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,53 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_CancelledCellinTAI_Item_H_
#define _SBcAP_CancelledCellinTAI_Item_H_
#include <asn_application.h>
/* Including external dependencies */
#include <osmocom/sbcap/SBcAP_EUTRAN-CGI.h>
#include <osmocom/sbcap/SBcAP_NumberOfBroadcasts.h>
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_ProtocolExtensionContainer;
/* SBcAP_CancelledCellinTAI-Item */
typedef struct SBcAP_CancelledCellinTAI_Item {
SBcAP_EUTRAN_CGI_t eCGI;
SBcAP_NumberOfBroadcasts_t numberOfBroadcasts;
struct SBcAP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
*/
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_CancelledCellinTAI_Item_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_CancelledCellinTAI_Item;
extern asn_SEQUENCE_specifics_t asn_SPC_SBcAP_CancelledCellinTAI_Item_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_CancelledCellinTAI_Item_1[3];
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_ProtocolExtensionContainer.h>
#endif /* _SBcAP_CancelledCellinTAI_Item_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,47 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_CancelledCellinTAI_H_
#define _SBcAP_CancelledCellinTAI_H_
#include <asn_application.h>
/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_CancelledCellinTAI_Item;
/* SBcAP_CancelledCellinTAI */
typedef struct SBcAP_CancelledCellinTAI {
A_SEQUENCE_OF(struct SBcAP_CancelledCellinTAI_Item) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_CancelledCellinTAI_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_CancelledCellinTAI;
extern asn_SET_OF_specifics_t asn_SPC_SBcAP_CancelledCellinTAI_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_CancelledCellinTAI_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_CancelledCellinTAI_constr_1;
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_CancelledCellinTAI-Item.h>
#endif /* _SBcAP_CancelledCellinTAI_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,61 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_Cause_H_
#define _SBcAP_Cause_H_
#include <asn_application.h>
/* Including external dependencies */
#include <NativeInteger.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Dependencies */
typedef enum SBcAP_Cause {
SBcAP_Cause_message_accepted = 0,
SBcAP_Cause_parameter_not_recognised = 1,
SBcAP_Cause_parameter_value_invalid = 2,
SBcAP_Cause_valid_message_not_identified = 3,
SBcAP_Cause_tracking_area_not_valid = 4,
SBcAP_Cause_unrecognised_message = 5,
SBcAP_Cause_missing_mandatory_element = 6,
SBcAP_Cause_mME_capacity_exceeded = 7,
SBcAP_Cause_mME_memory_exceeded = 8,
SBcAP_Cause_warning_broadcast_not_supported = 9,
SBcAP_Cause_warning_broadcast_not_operational = 10,
SBcAP_Cause_message_reference_already_used = 11,
SBcAP_Cause_unspecifed_error = 12,
SBcAP_Cause_transfer_syntax_error = 13,
SBcAP_Cause_semantic_error = 14,
SBcAP_Cause_message_not_compatible_with_receiver_state = 15,
SBcAP_Cause_abstract_syntax_error_reject = 16,
SBcAP_Cause_abstract_syntax_error_ignore_and_notify = 17,
SBcAP_Cause_abstract_syntax_error_falsely_constructed_message = 18
} e_SBcAP_Cause;
/* SBcAP_Cause */
typedef long SBcAP_Cause_t;
/* Implementation */
extern asn_per_constraints_t asn_PER_type_SBcAP_Cause_constr_1;
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_Cause;
asn_struct_free_f SBcAP_Cause_free;
asn_struct_print_f SBcAP_Cause_print;
asn_constr_check_f SBcAP_Cause_constraint;
per_type_decoder_f SBcAP_Cause_decode_aper;
per_type_encoder_f SBcAP_Cause_encode_aper;
#ifdef __cplusplus
}
#endif
#endif /* _SBcAP_Cause_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,53 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_CellID_Cancelled_Item_H_
#define _SBcAP_CellID_Cancelled_Item_H_
#include <asn_application.h>
/* Including external dependencies */
#include <osmocom/sbcap/SBcAP_EUTRAN-CGI.h>
#include <osmocom/sbcap/SBcAP_NumberOfBroadcasts.h>
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_ProtocolExtensionContainer;
/* SBcAP_CellID-Cancelled-Item */
typedef struct SBcAP_CellID_Cancelled_Item {
SBcAP_EUTRAN_CGI_t eCGI;
SBcAP_NumberOfBroadcasts_t numberOfBroadcasts;
struct SBcAP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
*/
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_CellID_Cancelled_Item_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_CellID_Cancelled_Item;
extern asn_SEQUENCE_specifics_t asn_SPC_SBcAP_CellID_Cancelled_Item_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_CellID_Cancelled_Item_1[3];
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_ProtocolExtensionContainer.h>
#endif /* _SBcAP_CellID_Cancelled_Item_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,64 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_CellID_Cancelled_List_5GS_H_
#define _SBcAP_CellID_Cancelled_List_5GS_H_
#include <asn_application.h>
/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <osmocom/sbcap/SBcAP_NR-CGI.h>
#include <osmocom/sbcap/SBcAP_NumberOfBroadcasts.h>
#include <constr_SEQUENCE.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_ProtocolExtensionContainer;
/* Forward definitions */
typedef struct SBcAP_CellID_Cancelled_List_5GS__Member {
SBcAP_NR_CGI_t nR_CGI;
SBcAP_NumberOfBroadcasts_t numberOfBroadcasts;
struct SBcAP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
*/
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} CellID_Cancelled_List_5GS__Member;
/* SBcAP_CellID-Cancelled-List-5GS */
typedef struct SBcAP_CellID_Cancelled_List_5GS {
A_SEQUENCE_OF(CellID_Cancelled_List_5GS__Member) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_CellID_Cancelled_List_5GS_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_CellID_Cancelled_List_5GS;
extern asn_SET_OF_specifics_t asn_SPC_SBcAP_CellID_Cancelled_List_5GS_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_CellID_Cancelled_List_5GS_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_CellID_Cancelled_List_5GS_constr_1;
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_ProtocolExtensionContainer.h>
#endif /* _SBcAP_CellID_Cancelled_List_5GS_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,47 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_CellID_Cancelled_List_H_
#define _SBcAP_CellID_Cancelled_List_H_
#include <asn_application.h>
/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_CellID_Cancelled_Item;
/* SBcAP_CellID-Cancelled-List */
typedef struct SBcAP_CellID_Cancelled_List {
A_SEQUENCE_OF(struct SBcAP_CellID_Cancelled_Item) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_CellID_Cancelled_List_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_CellID_Cancelled_List;
extern asn_SET_OF_specifics_t asn_SPC_SBcAP_CellID_Cancelled_List_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_CellID_Cancelled_List_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_CellID_Cancelled_List_constr_1;
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_CellID-Cancelled-Item.h>
#endif /* _SBcAP_CellID_Cancelled_List_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,62 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_CellId_Broadcast_List_5GS_H_
#define _SBcAP_CellId_Broadcast_List_5GS_H_
#include <asn_application.h>
/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <osmocom/sbcap/SBcAP_NR-CGI.h>
#include <constr_SEQUENCE.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_ProtocolExtensionContainer;
/* Forward definitions */
typedef struct SBcAP_CellId_Broadcast_List_5GS__Member {
SBcAP_NR_CGI_t nR_CGI;
struct SBcAP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
*/
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} CellId_Broadcast_List_5GS__Member;
/* SBcAP_CellId-Broadcast-List-5GS */
typedef struct SBcAP_CellId_Broadcast_List_5GS {
A_SEQUENCE_OF(CellId_Broadcast_List_5GS__Member) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_CellId_Broadcast_List_5GS_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_CellId_Broadcast_List_5GS;
extern asn_SET_OF_specifics_t asn_SPC_SBcAP_CellId_Broadcast_List_5GS_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_CellId_Broadcast_List_5GS_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_CellId_Broadcast_List_5GS_constr_1;
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_ProtocolExtensionContainer.h>
#endif /* _SBcAP_CellId_Broadcast_List_5GS_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,51 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_CellId_Broadcast_List_Item_H_
#define _SBcAP_CellId_Broadcast_List_Item_H_
#include <asn_application.h>
/* Including external dependencies */
#include <osmocom/sbcap/SBcAP_EUTRAN-CGI.h>
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_ProtocolExtensionContainer;
/* SBcAP_CellId-Broadcast-List-Item */
typedef struct SBcAP_CellId_Broadcast_List_Item {
SBcAP_EUTRAN_CGI_t eCGI;
struct SBcAP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
*/
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_CellId_Broadcast_List_Item_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_CellId_Broadcast_List_Item;
extern asn_SEQUENCE_specifics_t asn_SPC_SBcAP_CellId_Broadcast_List_Item_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_CellId_Broadcast_List_Item_1[2];
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_ProtocolExtensionContainer.h>
#endif /* _SBcAP_CellId_Broadcast_List_Item_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,47 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_CellId_Broadcast_List_H_
#define _SBcAP_CellId_Broadcast_List_H_
#include <asn_application.h>
/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_CellId_Broadcast_List_Item;
/* SBcAP_CellId-Broadcast-List */
typedef struct SBcAP_CellId_Broadcast_List {
A_SEQUENCE_OF(struct SBcAP_CellId_Broadcast_List_Item) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_CellId_Broadcast_List_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_CellId_Broadcast_List;
extern asn_SET_OF_specifics_t asn_SPC_SBcAP_CellId_Broadcast_List_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_CellId_Broadcast_List_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_CellId_Broadcast_List_constr_1;
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_CellId-Broadcast-List-Item.h>
#endif /* _SBcAP_CellId_Broadcast_List_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,38 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_CellIdentity_H_
#define _SBcAP_CellIdentity_H_
#include <asn_application.h>
/* Including external dependencies */
#include <BIT_STRING.h>
#ifdef __cplusplus
extern "C" {
#endif
/* SBcAP_CellIdentity */
typedef BIT_STRING_t SBcAP_CellIdentity_t;
/* Implementation */
extern asn_per_constraints_t asn_PER_type_SBcAP_CellIdentity_constr_1;
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_CellIdentity;
asn_struct_free_f SBcAP_CellIdentity_free;
asn_struct_print_f SBcAP_CellIdentity_print;
asn_constr_check_f SBcAP_CellIdentity_constraint;
per_type_decoder_f SBcAP_CellIdentity_decode_aper;
per_type_encoder_f SBcAP_CellIdentity_encode_aper;
#ifdef __cplusplus
}
#endif
#endif /* _SBcAP_CellIdentity_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,44 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_Concurrent_Warning_Message_Indicator_H_
#define _SBcAP_Concurrent_Warning_Message_Indicator_H_
#include <asn_application.h>
/* Including external dependencies */
#include <NativeEnumerated.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Dependencies */
typedef enum SBcAP_Concurrent_Warning_Message_Indicator {
SBcAP_Concurrent_Warning_Message_Indicator_true = 0
} e_SBcAP_Concurrent_Warning_Message_Indicator;
/* SBcAP_Concurrent-Warning-Message-Indicator */
typedef long SBcAP_Concurrent_Warning_Message_Indicator_t;
/* Implementation */
extern asn_per_constraints_t asn_PER_type_SBcAP_Concurrent_Warning_Message_Indicator_constr_1;
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_Concurrent_Warning_Message_Indicator;
extern const asn_INTEGER_specifics_t asn_SPC_Concurrent_Warning_Message_Indicator_specs_1;
asn_struct_free_f Concurrent_Warning_Message_Indicator_free;
asn_struct_print_f Concurrent_Warning_Message_Indicator_print;
asn_constr_check_f Concurrent_Warning_Message_Indicator_constraint;
per_type_decoder_f Concurrent_Warning_Message_Indicator_decode_aper;
per_type_encoder_f Concurrent_Warning_Message_Indicator_encode_aper;
#ifdef __cplusplus
}
#endif
#endif /* _SBcAP_Concurrent_Warning_Message_Indicator_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,58 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_Criticality_Diagnostics_H_
#define _SBcAP_Criticality_Diagnostics_H_
#include <asn_application.h>
/* Including external dependencies */
#include <osmocom/sbcap/SBcAP_ProcedureCode.h>
#include <osmocom/sbcap/SBcAP_TriggeringMessage.h>
#include <osmocom/sbcap/SBcAP_Criticality.h>
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_CriticalityDiagnostics_IE_List;
struct SBcAP_ProtocolExtensionContainer;
/* SBcAP_Criticality-Diagnostics */
typedef struct SBcAP_Criticality_Diagnostics {
SBcAP_ProcedureCode_t *procedureCode; /* OPTIONAL */
SBcAP_TriggeringMessage_t *triggeringMessage; /* OPTIONAL */
SBcAP_Criticality_t *procedureCriticality; /* OPTIONAL */
struct SBcAP_CriticalityDiagnostics_IE_List *iE_CriticalityDiagnostics; /* OPTIONAL */
struct SBcAP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
*/
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_Criticality_Diagnostics_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_Criticality_Diagnostics;
extern asn_SEQUENCE_specifics_t asn_SPC_SBcAP_Criticality_Diagnostics_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_Criticality_Diagnostics_1[5];
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_CriticalityDiagnostics-IE-List.h>
#include <osmocom/sbcap/SBcAP_ProtocolExtensionContainer.h>
#endif /* _SBcAP_Criticality_Diagnostics_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,46 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-CommonDataTypes"
* found in "../../src/sbcap/asn1/SBC_AP_CommonDataTypes.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_Criticality_H_
#define _SBcAP_Criticality_H_
#include <asn_application.h>
/* Including external dependencies */
#include <NativeEnumerated.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Dependencies */
typedef enum SBcAP_Criticality {
SBcAP_Criticality_reject = 0,
SBcAP_Criticality_ignore = 1,
SBcAP_Criticality_notify = 2
} e_SBcAP_Criticality;
/* SBcAP_Criticality */
typedef long SBcAP_Criticality_t;
/* Implementation */
extern asn_per_constraints_t asn_PER_type_SBcAP_Criticality_constr_1;
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_Criticality;
extern const asn_INTEGER_specifics_t asn_SPC_Criticality_specs_1;
asn_struct_free_f Criticality_free;
asn_struct_print_f Criticality_print;
asn_constr_check_f Criticality_constraint;
per_type_decoder_f Criticality_decode_aper;
per_type_encoder_f Criticality_encode_aper;
#ifdef __cplusplus
}
#endif
#endif /* _SBcAP_Criticality_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,66 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_CriticalityDiagnostics_IE_List_H_
#define _SBcAP_CriticalityDiagnostics_IE_List_H_
#include <asn_application.h>
/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <osmocom/sbcap/SBcAP_Criticality.h>
#include <osmocom/sbcap/SBcAP_ProtocolIE-ID.h>
#include <osmocom/sbcap/SBcAP_TypeOfError.h>
#include <constr_SEQUENCE.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_ProtocolExtensionContainer;
/* Forward definitions */
typedef struct SBcAP_CriticalityDiagnostics_IE_List__Member {
SBcAP_Criticality_t iECriticality;
SBcAP_ProtocolIE_ID_t iE_ID;
SBcAP_TypeOfError_t typeOfError;
struct SBcAP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
*/
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} CriticalityDiagnostics_IE_List__Member;
/* SBcAP_CriticalityDiagnostics-IE-List */
typedef struct SBcAP_CriticalityDiagnostics_IE_List {
A_SEQUENCE_OF(CriticalityDiagnostics_IE_List__Member) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_CriticalityDiagnostics_IE_List_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_CriticalityDiagnostics_IE_List;
extern asn_SET_OF_specifics_t asn_SPC_SBcAP_CriticalityDiagnostics_IE_List_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_CriticalityDiagnostics_IE_List_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_CriticalityDiagnostics_IE_List_constr_1;
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_ProtocolExtensionContainer.h>
#endif /* _SBcAP_CriticalityDiagnostics_IE_List_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,38 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_Data_Coding_Scheme_H_
#define _SBcAP_Data_Coding_Scheme_H_
#include <asn_application.h>
/* Including external dependencies */
#include <BIT_STRING.h>
#ifdef __cplusplus
extern "C" {
#endif
/* SBcAP_Data-Coding-Scheme */
typedef BIT_STRING_t SBcAP_Data_Coding_Scheme_t;
/* Implementation */
extern asn_per_constraints_t asn_PER_type_SBcAP_Data_Coding_Scheme_constr_1;
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_Data_Coding_Scheme;
asn_struct_free_f SBcAP_Data_Coding_Scheme_free;
asn_struct_print_f SBcAP_Data_Coding_Scheme_print;
asn_constr_check_f SBcAP_Data_Coding_Scheme_constraint;
per_type_decoder_f SBcAP_Data_Coding_Scheme_decode_aper;
per_type_encoder_f SBcAP_Data_Coding_Scheme_encode_aper;
#ifdef __cplusplus
}
#endif
#endif /* _SBcAP_Data_Coding_Scheme_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,47 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_ECGIList_H_
#define _SBcAP_ECGIList_H_
#include <asn_application.h>
/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_EUTRAN_CGI;
/* SBcAP_ECGIList */
typedef struct SBcAP_ECGIList {
A_SEQUENCE_OF(struct SBcAP_EUTRAN_CGI) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_ECGIList_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_ECGIList;
extern asn_SET_OF_specifics_t asn_SPC_SBcAP_ECGIList_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_ECGIList_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_ECGIList_constr_1;
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_EUTRAN-CGI.h>
#endif /* _SBcAP_ECGIList_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,61 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_ENB_ID_H_
#define _SBcAP_ENB_ID_H_
#include <asn_application.h>
/* Including external dependencies */
#include <BIT_STRING.h>
#include <constr_CHOICE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Dependencies */
typedef enum SBcAP_ENB_ID_PR {
SBcAP_ENB_ID_PR_NOTHING, /* No components present */
SBcAP_ENB_ID_PR_macroENB_ID,
SBcAP_ENB_ID_PR_homeENB_ID,
/* Extensions may appear below */
SBcAP_ENB_ID_PR_short_macroENB_ID,
SBcAP_ENB_ID_PR_long_macroENB_ID
} SBcAP_ENB_ID_PR;
/* SBcAP_ENB-ID */
typedef struct SBcAP_ENB_ID {
SBcAP_ENB_ID_PR present;
union SBcAP_ENB_ID_u {
BIT_STRING_t macroENB_ID;
BIT_STRING_t homeENB_ID;
/*
* This type is extensible,
* possible extensions are below.
*/
BIT_STRING_t short_macroENB_ID;
BIT_STRING_t long_macroENB_ID;
} choice;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_ENB_ID_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_ENB_ID;
extern asn_CHOICE_specifics_t asn_SPC_SBcAP_ENB_ID_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_ENB_ID_1[4];
extern asn_per_constraints_t asn_PER_type_SBcAP_ENB_ID_constr_1;
#ifdef __cplusplus
}
#endif
#endif /* _SBcAP_ENB_ID_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,52 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_EUTRAN_CGI_H_
#define _SBcAP_EUTRAN_CGI_H_
#include <asn_application.h>
/* Including external dependencies */
#include <osmocom/sbcap/SBcAP_PLMNidentity.h>
#include <osmocom/sbcap/SBcAP_CellIdentity.h>
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_ProtocolExtensionContainer;
/* SBcAP_EUTRAN-CGI */
typedef struct SBcAP_EUTRAN_CGI {
SBcAP_PLMNidentity_t pLMNidentity;
SBcAP_CellIdentity_t cell_ID;
struct SBcAP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
*/
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_EUTRAN_CGI_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_EUTRAN_CGI;
extern asn_SEQUENCE_specifics_t asn_SPC_SBcAP_EUTRAN_CGI_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_EUTRAN_CGI_1[3];
#ifdef __cplusplus
}
#endif
/* Referred external types */
#endif /* _SBcAP_EUTRAN_CGI_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,65 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "ASN1C-UsefulInformationObjectClasses"
* found in "/home/pespin/dev/sysmocom/build/new/out/share/asn1c/standard-modules/ASN1C-UsefulInformationObjectClasses.asn1"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_EXTERNAL_H_
#define _SBcAP_EXTERNAL_H_
#include <asn_application.h>
/* Including external dependencies */
#include <OBJECT_IDENTIFIER.h>
#include <NativeInteger.h>
#include <ObjectDescriptor.h>
#include <ANY.h>
#include <OCTET_STRING.h>
#include <BIT_STRING.h>
#include <constr_CHOICE.h>
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Dependencies */
typedef enum SBcAP_EXTERNAL__encoding_PR {
SBcAP_EXTERNAL__encoding_PR_NOTHING, /* No components present */
SBcAP_EXTERNAL__encoding_PR_single_ASN1_type,
SBcAP_EXTERNAL__encoding_PR_octet_aligned,
SBcAP_EXTERNAL__encoding_PR_arbitrary
} SBcAP_EXTERNAL__encoding_PR;
/* SBcAP_EXTERNAL */
typedef struct SBcAP_EXTERNAL {
OBJECT_IDENTIFIER_t *direct_reference; /* OPTIONAL */
long *indirect_reference; /* OPTIONAL */
ObjectDescriptor_t *data_value_descriptor; /* OPTIONAL */
struct SBcAP_EXTERNAL__encoding {
SBcAP_EXTERNAL__encoding_PR present;
union SBcAP_EXTERNAL__SBcAP_encoding_u {
ANY_t single_ASN1_type;
OCTET_STRING_t octet_aligned;
BIT_STRING_t arbitrary;
} choice;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} encoding;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_EXTERNAL_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_EXTERNAL;
#ifdef __cplusplus
}
#endif
#endif /* _SBcAP_EXTERNAL_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,42 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_Emergency_Area_ID_List_H_
#define _SBcAP_Emergency_Area_ID_List_H_
#include <asn_application.h>
/* Including external dependencies */
#include <osmocom/sbcap/SBcAP_Emergency-Area-ID.h>
#include <asn_SEQUENCE_OF.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* SBcAP_Emergency-Area-ID-List */
typedef struct SBcAP_Emergency_Area_ID_List {
A_SEQUENCE_OF(SBcAP_Emergency_Area_ID_t) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_Emergency_Area_ID_List_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_Emergency_Area_ID_List;
extern asn_SET_OF_specifics_t asn_SPC_SBcAP_Emergency_Area_ID_List_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_Emergency_Area_ID_List_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_Emergency_Area_ID_List_constr_1;
#ifdef __cplusplus
}
#endif
#endif /* _SBcAP_Emergency_Area_ID_List_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,38 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_Emergency_Area_ID_H_
#define _SBcAP_Emergency_Area_ID_H_
#include <asn_application.h>
/* Including external dependencies */
#include <OCTET_STRING.h>
#ifdef __cplusplus
extern "C" {
#endif
/* SBcAP_Emergency-Area-ID */
typedef OCTET_STRING_t SBcAP_Emergency_Area_ID_t;
/* Implementation */
extern asn_per_constraints_t asn_PER_type_SBcAP_Emergency_Area_ID_constr_1;
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_Emergency_Area_ID;
asn_struct_free_f SBcAP_Emergency_Area_ID_free;
asn_struct_print_f SBcAP_Emergency_Area_ID_print;
asn_constr_check_f SBcAP_Emergency_Area_ID_constraint;
per_type_decoder_f SBcAP_Emergency_Area_ID_decode_aper;
per_type_encoder_f SBcAP_Emergency_Area_ID_encode_aper;
#ifdef __cplusplus
}
#endif
#endif /* _SBcAP_Emergency_Area_ID_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,53 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_EmergencyAreaID_Broadcast_List_Item_H_
#define _SBcAP_EmergencyAreaID_Broadcast_List_Item_H_
#include <asn_application.h>
/* Including external dependencies */
#include <osmocom/sbcap/SBcAP_Emergency-Area-ID.h>
#include <osmocom/sbcap/SBcAP_ScheduledCellinEAI.h>
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_ProtocolExtensionContainer;
/* SBcAP_EmergencyAreaID-Broadcast-List-Item */
typedef struct SBcAP_EmergencyAreaID_Broadcast_List_Item {
SBcAP_Emergency_Area_ID_t emergencyAreaID;
SBcAP_ScheduledCellinEAI_t scheduledCellinEAI;
struct SBcAP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
*/
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_EmergencyAreaID_Broadcast_List_Item_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_EmergencyAreaID_Broadcast_List_Item;
extern asn_SEQUENCE_specifics_t asn_SPC_SBcAP_EmergencyAreaID_Broadcast_List_Item_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_EmergencyAreaID_Broadcast_List_Item_1[3];
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_ProtocolExtensionContainer.h>
#endif /* _SBcAP_EmergencyAreaID_Broadcast_List_Item_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,47 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_EmergencyAreaID_Broadcast_List_H_
#define _SBcAP_EmergencyAreaID_Broadcast_List_H_
#include <asn_application.h>
/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_EmergencyAreaID_Broadcast_List_Item;
/* SBcAP_EmergencyAreaID-Broadcast-List */
typedef struct SBcAP_EmergencyAreaID_Broadcast_List {
A_SEQUENCE_OF(struct SBcAP_EmergencyAreaID_Broadcast_List_Item) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_EmergencyAreaID_Broadcast_List_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_EmergencyAreaID_Broadcast_List;
extern asn_SET_OF_specifics_t asn_SPC_SBcAP_EmergencyAreaID_Broadcast_List_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_EmergencyAreaID_Broadcast_List_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_EmergencyAreaID_Broadcast_List_constr_1;
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_EmergencyAreaID-Broadcast-List-Item.h>
#endif /* _SBcAP_EmergencyAreaID_Broadcast_List_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,53 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_EmergencyAreaID_Cancelled_Item_H_
#define _SBcAP_EmergencyAreaID_Cancelled_Item_H_
#include <asn_application.h>
/* Including external dependencies */
#include <osmocom/sbcap/SBcAP_Emergency-Area-ID.h>
#include <osmocom/sbcap/SBcAP_CancelledCellinEAI.h>
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_ProtocolExtensionContainer;
/* SBcAP_EmergencyAreaID-Cancelled-Item */
typedef struct SBcAP_EmergencyAreaID_Cancelled_Item {
SBcAP_Emergency_Area_ID_t emergencyAreaID;
SBcAP_CancelledCellinEAI_t cancelledCellinEAI;
struct SBcAP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
*/
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_EmergencyAreaID_Cancelled_Item_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_EmergencyAreaID_Cancelled_Item;
extern asn_SEQUENCE_specifics_t asn_SPC_SBcAP_EmergencyAreaID_Cancelled_Item_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_EmergencyAreaID_Cancelled_Item_1[3];
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_ProtocolExtensionContainer.h>
#endif /* _SBcAP_EmergencyAreaID_Cancelled_Item_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,47 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_EmergencyAreaID_Cancelled_List_H_
#define _SBcAP_EmergencyAreaID_Cancelled_List_H_
#include <asn_application.h>
/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_EmergencyAreaID_Cancelled_Item;
/* SBcAP_EmergencyAreaID-Cancelled-List */
typedef struct SBcAP_EmergencyAreaID_Cancelled_List {
A_SEQUENCE_OF(struct SBcAP_EmergencyAreaID_Cancelled_Item) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_EmergencyAreaID_Cancelled_List_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_EmergencyAreaID_Cancelled_List;
extern asn_SET_OF_specifics_t asn_SPC_SBcAP_EmergencyAreaID_Cancelled_List_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_EmergencyAreaID_Cancelled_List_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_EmergencyAreaID_Cancelled_List_constr_1;
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_EmergencyAreaID-Cancelled-Item.h>
#endif /* _SBcAP_EmergencyAreaID_Cancelled_List_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,42 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-PDU-Contents"
* found in "../../src/sbcap/asn1/SBC_AP_PDU_Contents.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_Error_Indication_H_
#define _SBcAP_Error_Indication_H_
#include <asn_application.h>
/* Including external dependencies */
#include <osmocom/sbcap/SBcAP_ProtocolIE-Container.h>
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* SBcAP_Error-Indication */
typedef struct SBcAP_Error_Indication {
SBcAP_ProtocolIE_Container_86P8_t protocolIEs;
/*
* This type is extensible,
* possible extensions are below.
*/
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_Error_Indication_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_Error_Indication;
#ifdef __cplusplus
}
#endif
#endif /* _SBcAP_Error_Indication_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,38 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_Extended_Repetition_Period_H_
#define _SBcAP_Extended_Repetition_Period_H_
#include <asn_application.h>
/* Including external dependencies */
#include <NativeInteger.h>
#ifdef __cplusplus
extern "C" {
#endif
/* SBcAP_Extended-Repetition-Period */
typedef long SBcAP_Extended_Repetition_Period_t;
/* Implementation */
extern asn_per_constraints_t asn_PER_type_SBcAP_Extended_Repetition_Period_constr_1;
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_Extended_Repetition_Period;
asn_struct_free_f SBcAP_Extended_Repetition_Period_free;
asn_struct_print_f SBcAP_Extended_Repetition_Period_print;
asn_constr_check_f SBcAP_Extended_Repetition_Period_constraint;
per_type_decoder_f SBcAP_Extended_Repetition_Period_decode_aper;
per_type_encoder_f SBcAP_Extended_Repetition_Period_encode_aper;
#ifdef __cplusplus
}
#endif
#endif /* _SBcAP_Extended_Repetition_Period_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,47 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_Failed_Cell_List_NR_H_
#define _SBcAP_Failed_Cell_List_NR_H_
#include <asn_application.h>
/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_NR_CGI;
/* SBcAP_Failed-Cell-List-NR */
typedef struct SBcAP_Failed_Cell_List_NR {
A_SEQUENCE_OF(struct SBcAP_NR_CGI) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_Failed_Cell_List_NR_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_Failed_Cell_List_NR;
extern asn_SET_OF_specifics_t asn_SPC_SBcAP_Failed_Cell_List_NR_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_Failed_Cell_List_NR_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_Failed_Cell_List_NR_constr_1;
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_NR-CGI.h>
#endif /* _SBcAP_Failed_Cell_List_NR_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,47 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_Failed_Cell_List_H_
#define _SBcAP_Failed_Cell_List_H_
#include <asn_application.h>
/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_EUTRAN_CGI;
/* SBcAP_Failed-Cell-List */
typedef struct SBcAP_Failed_Cell_List {
A_SEQUENCE_OF(struct SBcAP_EUTRAN_CGI) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_Failed_Cell_List_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_Failed_Cell_List;
extern asn_SET_OF_specifics_t asn_SPC_SBcAP_Failed_Cell_List_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_Failed_Cell_List_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_Failed_Cell_List_constr_1;
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_EUTRAN-CGI.h>
#endif /* _SBcAP_Failed_Cell_List_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,56 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_GNB_ID_H_
#define _SBcAP_GNB_ID_H_
#include <asn_application.h>
/* Including external dependencies */
#include <BIT_STRING.h>
#include <constr_CHOICE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Dependencies */
typedef enum SBcAP_GNB_ID_PR {
SBcAP_GNB_ID_PR_NOTHING, /* No components present */
SBcAP_GNB_ID_PR_gNB_ID
/* Extensions may appear below */
} SBcAP_GNB_ID_PR;
/* SBcAP_GNB-ID */
typedef struct SBcAP_GNB_ID {
SBcAP_GNB_ID_PR present;
union SBcAP_GNB_ID_u {
BIT_STRING_t gNB_ID;
/*
* This type is extensible,
* possible extensions are below.
*/
} choice;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_GNB_ID_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_GNB_ID;
extern asn_CHOICE_specifics_t asn_SPC_SBcAP_GNB_ID_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_GNB_ID_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_GNB_ID_constr_1;
#ifdef __cplusplus
}
#endif
#endif /* _SBcAP_GNB_ID_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,53 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_Global_ENB_ID_H_
#define _SBcAP_Global_ENB_ID_H_
#include <asn_application.h>
/* Including external dependencies */
#include <osmocom/sbcap/SBcAP_PLMNidentity.h>
#include <osmocom/sbcap/SBcAP_ENB-ID.h>
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_ProtocolExtensionContainer;
/* SBcAP_Global-ENB-ID */
typedef struct SBcAP_Global_ENB_ID {
SBcAP_PLMNidentity_t pLMNidentity;
SBcAP_ENB_ID_t eNB_ID;
struct SBcAP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
*/
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_Global_ENB_ID_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_Global_ENB_ID;
extern asn_SEQUENCE_specifics_t asn_SPC_SBcAP_Global_ENB_ID_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_Global_ENB_ID_1[3];
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_ProtocolExtensionContainer.h>
#endif /* _SBcAP_Global_ENB_ID_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,52 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_Global_GNB_ID_H_
#define _SBcAP_Global_GNB_ID_H_
#include <asn_application.h>
/* Including external dependencies */
#include <osmocom/sbcap/SBcAP_PLMNidentity.h>
#include <osmocom/sbcap/SBcAP_GNB-ID.h>
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_ProtocolExtensionContainer;
/* SBcAP_Global-GNB-ID */
typedef struct SBcAP_Global_GNB_ID {
SBcAP_PLMNidentity_t pLMNidentity;
SBcAP_GNB_ID_t gNB_ID;
struct SBcAP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
*/
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_Global_GNB_ID_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_Global_GNB_ID;
extern asn_SEQUENCE_specifics_t asn_SPC_SBcAP_Global_GNB_ID_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_Global_GNB_ID_1[3];
#ifdef __cplusplus
}
#endif
/* Referred external types */
#endif /* _SBcAP_Global_GNB_ID_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,52 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_Global_NgENB_ID_H_
#define _SBcAP_Global_NgENB_ID_H_
#include <asn_application.h>
/* Including external dependencies */
#include <osmocom/sbcap/SBcAP_PLMNidentity.h>
#include <osmocom/sbcap/SBcAP_ENB-ID.h>
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_ProtocolExtensionContainer;
/* SBcAP_Global-NgENB-ID */
typedef struct SBcAP_Global_NgENB_ID {
SBcAP_PLMNidentity_t pLMNidentity;
SBcAP_ENB_ID_t ngENB_ID;
struct SBcAP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
*/
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_Global_NgENB_ID_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_Global_NgENB_ID;
extern asn_SEQUENCE_specifics_t asn_SPC_SBcAP_Global_NgENB_ID_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_Global_NgENB_ID_1[3];
#ifdef __cplusplus
}
#endif
/* Referred external types */
#endif /* _SBcAP_Global_NgENB_ID_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,59 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_Global_RAN_Node_ID_H_
#define _SBcAP_Global_RAN_Node_ID_H_
#include <asn_application.h>
/* Including external dependencies */
#include <osmocom/sbcap/SBcAP_Global-GNB-ID.h>
#include <osmocom/sbcap/SBcAP_Global-NgENB-ID.h>
#include <constr_CHOICE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Dependencies */
typedef enum SBcAP_Global_RAN_Node_ID_PR {
SBcAP_Global_RAN_Node_ID_PR_NOTHING, /* No components present */
SBcAP_Global_RAN_Node_ID_PR_global_GNB_ID,
SBcAP_Global_RAN_Node_ID_PR_global_NgENB_ID
/* Extensions may appear below */
} SBcAP_Global_RAN_Node_ID_PR;
/* SBcAP_Global-RAN-Node-ID */
typedef struct SBcAP_Global_RAN_Node_ID {
SBcAP_Global_RAN_Node_ID_PR present;
union SBcAP_Global_RAN_Node_ID_u {
SBcAP_Global_GNB_ID_t global_GNB_ID;
SBcAP_Global_NgENB_ID_t global_NgENB_ID;
/*
* This type is extensible,
* possible extensions are below.
*/
} choice;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_Global_RAN_Node_ID_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_Global_RAN_Node_ID;
extern asn_CHOICE_specifics_t asn_SPC_SBcAP_Global_RAN_Node_ID_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_Global_RAN_Node_ID_1[2];
extern asn_per_constraints_t asn_PER_type_SBcAP_Global_RAN_Node_ID_constr_1;
#ifdef __cplusplus
}
#endif
#endif /* _SBcAP_Global_RAN_Node_ID_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,82 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-PDU-Descriptions"
* found in "../../src/sbcap/asn1/SBC_AP_PDU_Descriptions.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_InitiatingMessage_H_
#define _SBcAP_InitiatingMessage_H_
#include <asn_application.h>
/* Including external dependencies */
#include <osmocom/sbcap/SBcAP_ProcedureCode.h>
#include <osmocom/sbcap/SBcAP_Criticality.h>
#include <ANY.h>
#include <asn_ioc.h>
#include <osmocom/sbcap/SBcAP_Write-Replace-Warning-Request.h>
#include <osmocom/sbcap/SBcAP_Write-Replace-Warning-Response.h>
#include <osmocom/sbcap/SBcAP_Stop-Warning-Request.h>
#include <osmocom/sbcap/SBcAP_Stop-Warning-Response.h>
#include <osmocom/sbcap/SBcAP_Error-Indication.h>
#include <osmocom/sbcap/SBcAP_Write-Replace-Warning-Indication.h>
#include <osmocom/sbcap/SBcAP_Stop-Warning-Indication.h>
#include <osmocom/sbcap/SBcAP_PWS-Restart-Indication.h>
#include <osmocom/sbcap/SBcAP_PWS-Failure-Indication.h>
#include <OPEN_TYPE.h>
#include <constr_CHOICE.h>
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Dependencies */
typedef enum SBcAP_InitiatingMessage__value_PR {
SBcAP_InitiatingMessage__value_PR_NOTHING, /* No components present */
SBcAP_InitiatingMessage__value_PR_Write_Replace_Warning_Request,
SBcAP_InitiatingMessage__value_PR_Stop_Warning_Request,
SBcAP_InitiatingMessage__value_PR_Error_Indication,
SBcAP_InitiatingMessage__value_PR_Write_Replace_Warning_Indication,
SBcAP_InitiatingMessage__value_PR_Stop_Warning_Indication,
SBcAP_InitiatingMessage__value_PR_PWS_Restart_Indication,
SBcAP_InitiatingMessage__value_PR_PWS_Failure_Indication
} SBcAP_InitiatingMessage__value_PR;
/* SBcAP_InitiatingMessage */
typedef struct SBcAP_InitiatingMessage {
SBcAP_ProcedureCode_t procedureCode;
SBcAP_Criticality_t criticality;
struct SBcAP_InitiatingMessage__value {
SBcAP_InitiatingMessage__value_PR present;
union SBcAP_InitiatingMessage__SBcAP_value_u {
SBcAP_Write_Replace_Warning_Request_t Write_Replace_Warning_Request;
SBcAP_Stop_Warning_Request_t Stop_Warning_Request;
SBcAP_Error_Indication_t Error_Indication;
SBcAP_Write_Replace_Warning_Indication_t Write_Replace_Warning_Indication;
SBcAP_Stop_Warning_Indication_t Stop_Warning_Indication;
SBcAP_PWS_Restart_Indication_t PWS_Restart_Indication;
SBcAP_PWS_Failure_Indication_t PWS_Failure_Indication;
} choice;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} value;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_InitiatingMessage_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_InitiatingMessage;
extern asn_SEQUENCE_specifics_t asn_SPC_SBcAP_InitiatingMessage_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_InitiatingMessage_1[3];
#ifdef __cplusplus
}
#endif
#endif /* _SBcAP_InitiatingMessage_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,44 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_List_of_5GS_Cells_for_Failure_H_
#define _SBcAP_List_of_5GS_Cells_for_Failure_H_
#include <asn_application.h>
/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_NR_CGI;
/* SBcAP_List-of-5GS-Cells-for-Failure */
typedef struct SBcAP_List_of_5GS_Cells_for_Failure {
A_SEQUENCE_OF(struct SBcAP_NR_CGI) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_List_of_5GS_Cells_for_Failure_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_List_of_5GS_Cells_for_Failure;
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_NR-CGI.h>
#endif /* _SBcAP_List_of_5GS_Cells_for_Failure_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,47 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_List_of_5GS_TAI_for_Restart_H_
#define _SBcAP_List_of_5GS_TAI_for_Restart_H_
#include <asn_application.h>
/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_TAI_5GS;
/* SBcAP_List-of-5GS-TAI-for-Restart */
typedef struct SBcAP_List_of_5GS_TAI_for_Restart {
A_SEQUENCE_OF(struct SBcAP_TAI_5GS) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_List_of_5GS_TAI_for_Restart_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_List_of_5GS_TAI_for_Restart;
extern asn_SET_OF_specifics_t asn_SPC_SBcAP_List_of_5GS_TAI_for_Restart_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_List_of_5GS_TAI_for_Restart_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_List_of_5GS_TAI_for_Restart_constr_1;
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_TAI-5GS.h>
#endif /* _SBcAP_List_of_5GS_TAI_for_Restart_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,47 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_List_of_5GS_TAIs_H_
#define _SBcAP_List_of_5GS_TAIs_H_
#include <asn_application.h>
/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_TAI_5GS;
/* SBcAP_List-of-5GS-TAIs */
typedef struct SBcAP_List_of_5GS_TAIs {
A_SEQUENCE_OF(struct SBcAP_TAI_5GS) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_List_of_5GS_TAIs_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_List_of_5GS_TAIs;
extern asn_SET_OF_specifics_t asn_SPC_SBcAP_List_of_5GS_TAIs_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_List_of_5GS_TAIs_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_List_of_5GS_TAIs_constr_1;
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_TAI-5GS.h>
#endif /* _SBcAP_List_of_5GS_TAIs_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,42 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_List_of_EAIs_Restart_H_
#define _SBcAP_List_of_EAIs_Restart_H_
#include <asn_application.h>
/* Including external dependencies */
#include <osmocom/sbcap/SBcAP_Emergency-Area-ID.h>
#include <asn_SEQUENCE_OF.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* SBcAP_List-of-EAIs-Restart */
typedef struct SBcAP_List_of_EAIs_Restart {
A_SEQUENCE_OF(SBcAP_Emergency_Area_ID_t) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_List_of_EAIs_Restart_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_List_of_EAIs_Restart;
extern asn_SET_OF_specifics_t asn_SPC_SBcAP_List_of_EAIs_Restart_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_List_of_EAIs_Restart_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_List_of_EAIs_Restart_constr_1;
#ifdef __cplusplus
}
#endif
#endif /* _SBcAP_List_of_EAIs_Restart_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,51 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_List_of_TAIs_Restart_H_
#define _SBcAP_List_of_TAIs_Restart_H_
#include <asn_application.h>
/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <osmocom/sbcap/SBcAP_TAI.h>
#include <constr_SEQUENCE.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward definitions */
typedef struct SBcAP_List_of_TAIs_Restart__Member {
SBcAP_TAI_t tai;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} List_of_TAIs_Restart__Member;
/* SBcAP_List-of-TAIs-Restart */
typedef struct SBcAP_List_of_TAIs_Restart {
A_SEQUENCE_OF(List_of_TAIs_Restart__Member) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_List_of_TAIs_Restart_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_List_of_TAIs_Restart;
extern asn_SET_OF_specifics_t asn_SPC_SBcAP_List_of_TAIs_Restart_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_List_of_TAIs_Restart_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_List_of_TAIs_Restart_constr_1;
#ifdef __cplusplus
}
#endif
#endif /* _SBcAP_List_of_TAIs_Restart_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,51 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_List_of_TAIs_H_
#define _SBcAP_List_of_TAIs_H_
#include <asn_application.h>
/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <osmocom/sbcap/SBcAP_TAI.h>
#include <constr_SEQUENCE.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward definitions */
typedef struct SBcAP_List_of_TAIs__Member {
SBcAP_TAI_t tai;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} List_of_TAIs__Member;
/* SBcAP_List-of-TAIs */
typedef struct SBcAP_List_of_TAIs {
A_SEQUENCE_OF(List_of_TAIs__Member) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_List_of_TAIs_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_List_of_TAIs;
extern asn_SET_OF_specifics_t asn_SPC_SBcAP_List_of_TAIs_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_List_of_TAIs_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_List_of_TAIs_constr_1;
#ifdef __cplusplus
}
#endif
#endif /* _SBcAP_List_of_TAIs_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,38 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_Message_Identifier_H_
#define _SBcAP_Message_Identifier_H_
#include <asn_application.h>
/* Including external dependencies */
#include <BIT_STRING.h>
#ifdef __cplusplus
extern "C" {
#endif
/* SBcAP_Message-Identifier */
typedef BIT_STRING_t SBcAP_Message_Identifier_t;
/* Implementation */
extern asn_per_constraints_t asn_PER_type_SBcAP_Message_Identifier_constr_1;
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_Message_Identifier;
asn_struct_free_f SBcAP_Message_Identifier_free;
asn_struct_print_f SBcAP_Message_Identifier_print;
asn_constr_check_f SBcAP_Message_Identifier_constraint;
per_type_decoder_f SBcAP_Message_Identifier_decode_aper;
per_type_encoder_f SBcAP_Message_Identifier_encode_aper;
#ifdef __cplusplus
}
#endif
#endif /* _SBcAP_Message_Identifier_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,52 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_NR_CGI_H_
#define _SBcAP_NR_CGI_H_
#include <asn_application.h>
/* Including external dependencies */
#include <osmocom/sbcap/SBcAP_PLMNidentity.h>
#include <osmocom/sbcap/SBcAP_NRCellIdentity.h>
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_ProtocolExtensionContainer;
/* SBcAP_NR-CGI */
typedef struct SBcAP_NR_CGI {
SBcAP_PLMNidentity_t pLMNidentity;
SBcAP_NRCellIdentity_t nRCellIdentity;
struct SBcAP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
*/
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_NR_CGI_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_NR_CGI;
extern asn_SEQUENCE_specifics_t asn_SPC_SBcAP_NR_CGI_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_NR_CGI_1[3];
#ifdef __cplusplus
}
#endif
/* Referred external types */
#endif /* _SBcAP_NR_CGI_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,47 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_NR_CGIList_H_
#define _SBcAP_NR_CGIList_H_
#include <asn_application.h>
/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <constr_SEQUENCE_OF.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct SBcAP_NR_CGI;
/* SBcAP_NR-CGIList */
typedef struct SBcAP_NR_CGIList {
A_SEQUENCE_OF(struct SBcAP_NR_CGI) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SBcAP_NR_CGIList_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_NR_CGIList;
extern asn_SET_OF_specifics_t asn_SPC_SBcAP_NR_CGIList_specs_1;
extern asn_TYPE_member_t asn_MBR_SBcAP_NR_CGIList_1[1];
extern asn_per_constraints_t asn_PER_type_SBcAP_NR_CGIList_constr_1;
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/sbcap/SBcAP_NR-CGI.h>
#endif /* _SBcAP_NR_CGIList_H_ */
#include <asn_internal.h>

View File

@@ -0,0 +1,38 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "SBC-AP-IEs"
* found in "../../src/sbcap/asn1/SBC_AP_IEs.asn"
* `asn1c -S /home/pespin/dev/sysmocom/build/new/out/share/asn1c -fcompound-names -gen-APER -no-gen-BER -no-gen-XER -no-gen-JER -no-gen-OER -no-gen-UPER -no-gen-example`
*/
#ifndef _SBcAP_NRCellIdentity_H_
#define _SBcAP_NRCellIdentity_H_
#include <asn_application.h>
/* Including external dependencies */
#include <BIT_STRING.h>
#ifdef __cplusplus
extern "C" {
#endif
/* SBcAP_NRCellIdentity */
typedef BIT_STRING_t SBcAP_NRCellIdentity_t;
/* Implementation */
extern asn_per_constraints_t asn_PER_type_SBcAP_NRCellIdentity_constr_1;
extern asn_TYPE_descriptor_t asn_DEF_SBcAP_NRCellIdentity;
asn_struct_free_f SBcAP_NRCellIdentity_free;
asn_struct_print_f SBcAP_NRCellIdentity_print;
asn_constr_check_f SBcAP_NRCellIdentity_constraint;
per_type_decoder_f SBcAP_NRCellIdentity_decode_aper;
per_type_encoder_f SBcAP_NRCellIdentity_encode_aper;
#ifdef __cplusplus
}
#endif
#endif /* _SBcAP_NRCellIdentity_H_ */
#include <asn_internal.h>

Some files were not shown because too many files have changed in this diff Show More