blob: d0ae76bc9d6f8869d3c2e39253af63fded4cf07c [file] [log] [blame]
Neels Hofmeyre9920f22017-07-10 15:07:22 +02001#pragma once
2
Neels Hofmeyrd95ab1e2017-09-22 00:52:54 +02003#include <osmocom/core/write_queue.h>
Pau Espin Pedrol563386e2023-06-14 12:20:49 +02004#include <osmocom/core/timer.h>
Neels Hofmeyrd95ab1e2017-09-22 00:52:54 +02005
Neels Hofmeyre9920f22017-07-10 15:07:22 +02006#define MSGB_CB_MGCP_TRANS_ID 0
7
Philipp Maier3f2c15f2021-07-22 11:53:07 +02008/* Struct that holds one endpoint name */
9struct reset_ep {
10 struct llist_head list;
11 char name[MGCP_ENDPOINT_MAXLEN];
12};
13
Neels Hofmeyr3a8e7232017-09-04 01:02:56 +020014struct mgcp_client {
15 struct mgcp_client_conf actual;
Neels Hofmeyre9920f22017-07-10 15:07:22 +020016 struct osmo_wqueue wq;
17 mgcp_trans_id_t next_trans_id;
18 struct llist_head responses_pending;
Pau Espin Pedrol35bd2522022-10-13 17:26:33 +020019 struct mgcp_client_pool_member *pool_member;
Pau Espin Pedrol563386e2023-06-14 12:20:49 +020020 struct osmo_timer_list keepalive_tx_timer;
21 struct osmo_timer_list keepalive_rx_timer;
22 bool conn_up;
Neels Hofmeyre9920f22017-07-10 15:07:22 +020023};
24
Neels Hofmeyre9920f22017-07-10 15:07:22 +020025struct mgcp_response_pending {
26 struct llist_head entry;
27
28 mgcp_trans_id_t trans_id;
29 mgcp_response_cb_t response_cb;
30 void *priv;
31};
32
Neels Hofmeyr3a8e7232017-09-04 01:02:56 +020033int mgcp_client_rx(struct mgcp_client *mgcp, struct msgb *msg);
Neels Hofmeyre9920f22017-07-10 15:07:22 +020034
Neels Hofmeyr3a8e7232017-09-04 01:02:56 +020035struct mgcp_response_pending * mgcp_client_pending_add(
36 struct mgcp_client *mgcp,
Neels Hofmeyre9920f22017-07-10 15:07:22 +020037 mgcp_trans_id_t trans_id,
38 mgcp_response_cb_t response_cb,
39 void *priv);