blob: 09a4b022401fd39d7bc8083a10e76577ac16f2e5 [file] [log] [blame]
Neels Hofmeyrc69ee852016-05-10 12:50:31 +02001#pragma once
Neels Hofmeyr402006d2016-05-11 14:28:25 +02002
Neels Hofmeyre78ae212016-05-14 00:46:29 +02003#include <stdint.h>
Neels Hofmeyr7b656882017-07-09 22:09:18 +02004#include <osmocom/gsm/protocol/gsm_04_08.h>
Neels Hofmeyre78ae212016-05-14 00:46:29 +02005
Neels Hofmeyr402006d2016-05-11 14:28:25 +02006struct msgb;
7struct gsm_network;
8
9typedef int (*mncc_recv_cb_t)(struct gsm_network *, struct msgb *);
Neels Hofmeyre78ae212016-05-14 00:46:29 +020010
Neels Hofmeyrb90eabf2016-05-11 18:48:39 +020011struct vty;
12
Neels Hofmeyrac1f1432016-05-10 13:30:17 +020013#define MAX_A5_KEY_LEN (128/8)
14
15struct gsm_encr {
16 uint8_t alg_id;
17 uint8_t key_len;
18 uint8_t key[MAX_A5_KEY_LEN];
19};
20
Neels Hofmeyre78ae212016-05-14 00:46:29 +020021struct gsm_network *gsm_network_init(void *ctx,
22 uint16_t country_code,
23 uint16_t network_code,
24 mncc_recv_cb_t mncc_recv);
Neels Hofmeyrb90eabf2016-05-11 18:48:39 +020025
Neels Hofmeyr06d39fd2016-05-12 01:16:58 +020026int common_cs_vty_init(struct gsm_network *network,
27 int (* config_write_net )(struct vty *));
Neels Hofmeyrb90eabf2016-05-11 18:48:39 +020028struct gsm_network *gsmnet_from_vty(struct vty *v);
Neels Hofmeyr7b656882017-07-09 22:09:18 +020029
30struct msgb *gsm48_create_mm_serv_rej(enum gsm48_reject_value value);
31int gsm48_extract_mi(uint8_t *classmark2_lv, int length, char *mi_string, uint8_t *mi_type);
32int gsm48_paging_extract_mi(struct gsm48_pag_resp *resp, int length,
33 char *mi_string, uint8_t *mi_type);
34struct msgb *gsm48_create_loc_upd_rej(uint8_t cause);