libosmoisdn 1.9.3
Osmocom ISDN library
lapd_core.h
Go to the documentation of this file.
1
4#pragma once
5
6#include <stdint.h>
7
9#include <osmocom/core/msgb.h>
10#include <osmocom/gsm/prim.h>
11
17#define LOGDL(dl, level, fmt, args...) \
18 LOGP(DLLAPD, level, "(%s) " fmt, (dl)->name, ## args)
19
30};
31
32/* Uses the same values as RLL, so no conversion for GSM is required. */
33#define MDL_CAUSE_T200_EXPIRED 0x01
34#define MDL_CAUSE_REEST_REQ 0x02
35#define MDL_CAUSE_UNSOL_UA_RESP 0x03
36#define MDL_CAUSE_UNSOL_DM_RESP 0x04
37#define MDL_CAUSE_UNSOL_DM_RESP_MF 0x05
38#define MDL_CAUSE_UNSOL_SPRV_RESP 0x06
39#define MDL_CAUSE_SEQ_ERR 0x07
40#define MDL_CAUSE_UFRM_INC_PARAM 0x08
41#define MDL_CAUSE_SFRM_INC_PARAM 0x09
42#define MDL_CAUSE_IFRM_INC_MBITS 0x0a
43#define MDL_CAUSE_IFRM_INC_LEN 0x0b
44#define MDL_CAUSE_FRM_UNIMPL 0x0c
45#define MDL_CAUSE_SABM_MF 0x0d
46#define MDL_CAUSE_SABM_INFO_NOTALL 0x0e
47#define MDL_CAUSE_FRMR 0x0f
48
51 uint8_t cause;
52};
53
56 uint8_t mode;
57};
58
62 union {
65 } u;
66};
67
72};
73
85};
86
93};
94
98 int n201;
99 /* address */
100 uint8_t cr;
101 uint8_t sapi;
102 uint8_t tei;
103 uint8_t lpd;
104 /* control */
105 uint8_t format;
106 uint8_t p_f; /* poll / final bit */
107 uint8_t n_send;
108 uint8_t n_recv;
109 uint8_t s_u; /* S or repectivly U function bits */
110 /* length */
112 uint8_t more;
113};
114
116 uint8_t cmd;
117 uint8_t resp;
118};
119
121 struct msgb *msg; /* message to be sent / NULL, if histoy is empty */
122 int more; /* if message is fragmented */
123};
124
127 int (*send_dlsap)(struct osmo_dlsap_prim *dp, struct lapd_msg_ctx *lctx);
128 int (*send_ph_data_req)(struct lapd_msg_ctx *lctx, struct msgb *msg);
130 struct {
134 } cr;
140 int maxf;
141 uint8_t k;
142 uint8_t v_range;
143 uint8_t v_send;
144 uint8_t v_ack;
145 uint8_t v_recv;
146 uint32_t state;
148 uint8_t own_busy;
149 uint8_t peer_busy;
154 uint8_t retrans_ctr;
160 uint8_t range_hist;
161 struct msgb *rcv_buffer;
162 struct msgb *cont_res;
163 char *name;
164};
165
166void lapd_dl_init(struct lapd_datalink *dl, uint8_t k, uint8_t v_range, int maxf)
167 OSMO_DEPRECATED("Use lapd_dl_init2() instead");
168void lapd_dl_init2(struct lapd_datalink *dl, uint8_t k, uint8_t v_range, int maxf, const char *name);
169void lapd_dl_set_name(struct lapd_datalink *dl, const char *name);
170void lapd_dl_exit(struct lapd_datalink *dl);
171void lapd_dl_reset(struct lapd_datalink *dl);
172int lapd_set_mode(struct lapd_datalink *dl, enum lapd_mode mode);
173int lapd_ph_data_ind(struct msgb *msg, struct lapd_msg_ctx *lctx);
174int lapd_recv_dlsap(struct osmo_dlsap_prim *dp, struct lapd_msg_ctx *lctx);
175
void lapd_dl_init2(struct lapd_datalink *dl, uint8_t k, uint8_t v_range, int maxf, const char *name)
Initialize LAPD datalink instance and allocate history.
Definition: lapd_core.c:262
int lapd_set_mode(struct lapd_datalink *dl, enum lapd_mode mode)
Set the lapdm_mode of a LAPDm entity.
Definition: lapd_core.c:374
int lapd_ph_data_ind(struct msgb *msg, struct lapd_msg_ctx *lctx)
Definition: lapd_core.c:1696
void lapd_dl_reset(struct lapd_datalink *dl)
Definition: lapd_core.c:337
int lapd_recv_dlsap(struct osmo_dlsap_prim *dp, struct lapd_msg_ctx *lctx)
Definition: lapd_core.c:2200
lapd_mode
LAPD mode/role.
Definition: lapd_core.h:69
void lapd_dl_exit(struct lapd_datalink *dl)
Definition: lapd_core.c:358
void lapd_dl_set_name(struct lapd_datalink *dl, const char *name)
Definition: lapd_core.c:329
void lapd_dl_init(struct lapd_datalink *dl, uint8_t k, uint8_t v_range, int maxf) OSMO_DEPRECATED("Use lapd_dl_init2() instead")
Initialize LAPD datalink instance and allocate history.
Definition: lapd_core.c:324
lapd_format
LAPD message format (I / S / U)
Definition: lapd_core.h:88
osmo_dl_prim
LAPD related primitives (L2<->L3 SAP)
Definition: lapd_core.h:21
lapd_state
LAPD state (Figure B.2/Q.921)
Definition: lapd_core.h:75
@ LAPD_MODE_USER
behave like user
Definition: lapd_core.h:70
@ LAPD_MODE_NETWORK
behave like network
Definition: lapd_core.h:71
@ LAPD_FORM_U
Definition: lapd_core.h:92
@ LAPD_FORM_I
Definition: lapd_core.h:90
@ LAPD_FORM_S
Definition: lapd_core.h:91
@ LAPD_FORM_UKN
Definition: lapd_core.h:89
@ PRIM_DL_REL
DL-RLEEASE.
Definition: lapd_core.h:25
@ PRIM_DL_RES
DL-RESUME.
Definition: lapd_core.h:27
@ PRIM_DL_SUSP
DL-SUSPEND.
Definition: lapd_core.h:26
@ PRIM_DL_EST
DL-ESTABLISH.
Definition: lapd_core.h:24
@ PRIM_DL_DATA
DL-DATA.
Definition: lapd_core.h:23
@ PRIM_DL_UNIT_DATA
DL-UNIT-DATA.
Definition: lapd_core.h:22
@ PRIM_MDL_ERROR
MDL-ERROR.
Definition: lapd_core.h:29
@ PRIM_DL_RECON
DL-RECONNECT.
Definition: lapd_core.h:28
@ LAPD_STATE_SABM_SENT
Definition: lapd_core.h:81
@ LAPD_STATE_TEI_UNASS
Definition: lapd_core.h:77
@ LAPD_STATE_MF_EST
Definition: lapd_core.h:83
@ LAPD_STATE_EST_TEI_WAIT
Definition: lapd_core.h:79
@ LAPD_STATE_DISC_SENT
Definition: lapd_core.h:82
@ LAPD_STATE_ASS_TEI_WAIT
Definition: lapd_core.h:78
@ LAPD_STATE_NULL
Definition: lapd_core.h:76
@ LAPD_STATE_TIMER_RECOV
Definition: lapd_core.h:84
@ LAPD_STATE_IDLE
Definition: lapd_core.h:80
const char * name
#define OSMO_DEPRECATED(text)
for DL-REL.req
Definition: lapd_core.h:55
uint8_t mode
release mode
Definition: lapd_core.h:56
Definition: lapd_core.h:115
uint8_t resp
Definition: lapd_core.h:117
uint8_t cmd
Definition: lapd_core.h:116
Definition: lapd_core.h:120
struct msgb * msg
Definition: lapd_core.h:121
int more
Definition: lapd_core.h:122
LAPD message context.
Definition: lapd_core.h:96
uint8_t more
Definition: lapd_core.h:112
uint8_t n_send
Definition: lapd_core.h:107
struct lapd_datalink * dl
Definition: lapd_core.h:97
uint8_t n_recv
Definition: lapd_core.h:108
uint8_t p_f
Definition: lapd_core.h:106
int n201
Definition: lapd_core.h:98
uint8_t lpd
Definition: lapd_core.h:103
uint8_t sapi
Definition: lapd_core.h:101
uint8_t cr
Definition: lapd_core.h:100
uint8_t format
Definition: lapd_core.h:105
int length
Definition: lapd_core.h:111
uint8_t tei
Definition: lapd_core.h:102
uint8_t s_u
Definition: lapd_core.h:109
for MDL-ERROR.ind
Definition: lapd_core.h:50
uint8_t cause
generic cause value
Definition: lapd_core.h:51
primitive header for LAPD DL-SAP primitives
Definition: lapd_core.h:60
union osmo_dlsap_prim::@2 u
request-specific data
struct osmo_prim_hdr oph
generic primitive header
Definition: lapd_core.h:61
struct dl_rel_req_param rel_req
Definition: lapd_core.h:64
struct mdl_error_ind_param error_ind
Definition: lapd_core.h:63