blob: d3c9d1dca9a276cbc46ed8a1bf28754d59f815cb [file] [log] [blame]
Harald Welte4f361fc2009-02-15 15:32:53 +00001#ifndef _IPACCESS_H
2#define _IPACCESS_H
3
Pablo Neira Ayusoed5cacb2011-08-17 22:44:07 +02004#include <osmocom/abis/e1_input.h>
Holger Hans Peter Freytherec8a4e22010-10-14 22:56:06 +02005#include "gsm_subscriber.h"
Pablo Neira Ayuso136f4532011-03-22 16:47:59 +01006#include <osmocom/core/linuxlist.h>
Harald Weltea85515b2011-05-22 21:57:36 +02007#include <osmocom/gsm/protocol/ipaccess.h>
Harald Welte4f361fc2009-02-15 15:32:53 +00008
Holger Hans Peter Freytherec8a4e22010-10-14 22:56:06 +02009struct ipac_msgt_sccp_state {
10 uint8_t src_ref[3];
11 uint8_t dst_ref[3];
12 uint8_t trans_id;
13 uint8_t invoke_id;
14 char imsi[GSM_IMSI_LENGTH];
15} __attribute__((packed));
16
Holger Hans Peter Freytherc3f28322011-04-23 15:08:44 +020017/*
Holger Hans Peter Freyther2a9eeaa2011-04-23 16:37:58 +020018 * @add_remove 0 for remove, 1 for add, 3 to asK
Holger Hans Peter Freytherc3f28322011-04-23 15:08:44 +020019 * @nr_lacs Number of extra lacs inside this package
20 * @lac One lac entry
21 */
22struct ipac_ext_lac_cmd {
23 uint8_t add_remove;
24 uint8_t nr_extra_lacs;
25 uint16_t lac;
26 uint8_t data[0];
27} __attribute__((packed));
28
Holger Hans Peter Freytherd5f05222009-08-18 10:05:45 +020029/*
30 * methods for parsing and sending a message
31 */
Pablo Neira Ayuso4db92992011-05-06 12:11:23 +020032int ipaccess_rcvmsg_base(struct msgb *msg, struct osmo_fd *bfd);
Holger Hans Peter Freytherd5f05222009-08-18 10:05:45 +020033void ipaccess_prepend_header(struct msgb *msg, int proto);
Holger Hans Peter Freyther5d7b65b2011-04-07 23:31:58 +020034void ipaccess_prepend_header_ext(struct msgb *msg, int proto);
Pablo Neira Ayuso22f58a92011-04-07 14:15:06 +020035int ipaccess_send_pong(int fd);
Holger Hans Peter Freyther301e6282010-01-13 09:06:46 +010036int ipaccess_send_id_ack(int fd);
Holger Hans Peter Freyther3bc856b2010-02-07 12:04:07 +010037int ipaccess_send_id_req(int fd);
Holger Hans Peter Freytherd5f05222009-08-18 10:05:45 +020038
Pablo Neira Ayuso0d20b632011-04-11 16:32:47 +020039const char *ipaccess_idtag_name(uint8_t tag);
Holger Hans Peter Freytherd3d5be12010-02-09 14:37:23 +010040int ipaccess_idtag_parse(struct tlv_parsed *dec, unsigned char *buf, int len);
Holger Hans Peter Freytherc42ad8b2011-04-18 17:04:00 +020041int ipaccess_parse_unitid(const char *str, uint16_t *site_id, uint16_t *bts_id, uint16_t *trx_id);
Holger Hans Peter Freytherd3d5be12010-02-09 14:37:23 +010042
Holger Hans Peter Freyther70402a42010-04-15 11:17:24 +020043int ipaccess_drop_oml(struct gsm_bts *bts);
44int ipaccess_drop_rsl(struct gsm_bts_trx *trx);
Holger Hans Peter Freytherd3d5be12010-02-09 14:37:23 +010045
Holger Hans Peter Freyther0183edd2009-12-30 06:13:36 +010046struct sdp_header_item {
Holger Hans Peter Freytherc9f8a6d2009-12-30 06:10:56 +010047 struct sdp_header_entry header_entry;
48 struct llist_head entry;
Holger Hans Peter Freyther38722cc2010-03-22 11:22:54 +010049 off_t absolute_offset;
Holger Hans Peter Freytherc9f8a6d2009-12-30 06:10:56 +010050};
51
Holger Hans Peter Freyther4a98cad2009-12-30 05:56:49 +010052struct sdp_header {
53 struct sdp_firmware firmware_info;
Holger Hans Peter Freytherc9f8a6d2009-12-30 06:10:56 +010054
55 /* for more_magic a list of sdp_header_entry_list */
56 struct llist_head header_list;
57
58 /* the entry of the sdp_header */
59 struct llist_head entry;
Holger Hans Peter Freyther4a98cad2009-12-30 05:56:49 +010060};
61
62int ipaccess_analyze_file(int fd, const unsigned int st_size, const unsigned base_offset, struct llist_head *list);
63
Harald Welte4f361fc2009-02-15 15:32:53 +000064#endif /* _IPACCESS_H */