aboutsummaryrefslogtreecommitdiffstats
path: root/include/osmocom/hlr/hlr_sms.h
blob: dc72d323e6f1942e33affd0c12eb90380aaa851f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#pragma once

#include <osmocom/core/linuxlist.h>
#include <osmocom/gsm/gsup.h>

#include "gsup_server.h"

enum hlr_sms_route_type {
	HLR_SMS_RT_SMSC_ADDR,
	HLR_SMS_RT_SENDER_MSISDN,
	HLR_SMS_RT_SENDER_IMSI,
};

struct hlr_sms_route {
	struct llist_head list;
	enum hlr_sms_route_type type;
	char *match_pattern;
	const struct hlr_euse *euse;
};

struct hlr_sms_route *sms_route_find(struct hlr *hlr,
				     enum hlr_sms_route_type type,
				     const char *pattern);
struct hlr_sms_route *sms_route_alloc(struct hlr *hlr,
				      enum hlr_sms_route_type type,
				      const char *pattern,
				      const struct hlr_euse *euse);
void sms_route_del(struct hlr_sms_route *rt);

int forward_mo_sms(struct osmo_gsup_conn *conn,
		   const struct osmo_gsup_message *gsup,
		   struct msgb *msg);
int forward_sm_res_or_err(struct osmo_gsup_conn *conn,
			  const struct osmo_gsup_message *gsup,
			  struct msgb *msg);
int forward_mt_sms(struct osmo_gsup_conn *conn,
		   const struct osmo_gsup_message *gsup,
		   struct msgb *msg);