Harald Welte | 4f361fc | 2009-02-15 15:32:53 +0000 | [diff] [blame] | 1 | #ifndef _IPACCESS_H |
| 2 | #define _IPACCESS_H |
| 3 | |
Pablo Neira Ayuso | ed5cacb | 2011-08-17 22:44:07 +0200 | [diff] [blame^] | 4 | #include <osmocom/abis/e1_input.h> |
Holger Hans Peter Freyther | ec8a4e2 | 2010-10-14 22:56:06 +0200 | [diff] [blame] | 5 | #include "gsm_subscriber.h" |
Pablo Neira Ayuso | 136f453 | 2011-03-22 16:47:59 +0100 | [diff] [blame] | 6 | #include <osmocom/core/linuxlist.h> |
Harald Welte | a85515b | 2011-05-22 21:57:36 +0200 | [diff] [blame] | 7 | #include <osmocom/gsm/protocol/ipaccess.h> |
Harald Welte | 4f361fc | 2009-02-15 15:32:53 +0000 | [diff] [blame] | 8 | |
Holger Hans Peter Freyther | ec8a4e2 | 2010-10-14 22:56:06 +0200 | [diff] [blame] | 9 | struct 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 Freyther | c3f2832 | 2011-04-23 15:08:44 +0200 | [diff] [blame] | 17 | /* |
Holger Hans Peter Freyther | 2a9eeaa | 2011-04-23 16:37:58 +0200 | [diff] [blame] | 18 | * @add_remove 0 for remove, 1 for add, 3 to asK |
Holger Hans Peter Freyther | c3f2832 | 2011-04-23 15:08:44 +0200 | [diff] [blame] | 19 | * @nr_lacs Number of extra lacs inside this package |
| 20 | * @lac One lac entry |
| 21 | */ |
| 22 | struct 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 Freyther | d5f0522 | 2009-08-18 10:05:45 +0200 | [diff] [blame] | 29 | /* |
| 30 | * methods for parsing and sending a message |
| 31 | */ |
Pablo Neira Ayuso | 4db9299 | 2011-05-06 12:11:23 +0200 | [diff] [blame] | 32 | int ipaccess_rcvmsg_base(struct msgb *msg, struct osmo_fd *bfd); |
Holger Hans Peter Freyther | d5f0522 | 2009-08-18 10:05:45 +0200 | [diff] [blame] | 33 | void ipaccess_prepend_header(struct msgb *msg, int proto); |
Holger Hans Peter Freyther | 5d7b65b | 2011-04-07 23:31:58 +0200 | [diff] [blame] | 34 | void ipaccess_prepend_header_ext(struct msgb *msg, int proto); |
Pablo Neira Ayuso | 22f58a9 | 2011-04-07 14:15:06 +0200 | [diff] [blame] | 35 | int ipaccess_send_pong(int fd); |
Holger Hans Peter Freyther | 301e628 | 2010-01-13 09:06:46 +0100 | [diff] [blame] | 36 | int ipaccess_send_id_ack(int fd); |
Holger Hans Peter Freyther | 3bc856b | 2010-02-07 12:04:07 +0100 | [diff] [blame] | 37 | int ipaccess_send_id_req(int fd); |
Holger Hans Peter Freyther | d5f0522 | 2009-08-18 10:05:45 +0200 | [diff] [blame] | 38 | |
Pablo Neira Ayuso | 0d20b63 | 2011-04-11 16:32:47 +0200 | [diff] [blame] | 39 | const char *ipaccess_idtag_name(uint8_t tag); |
Holger Hans Peter Freyther | d3d5be1 | 2010-02-09 14:37:23 +0100 | [diff] [blame] | 40 | int ipaccess_idtag_parse(struct tlv_parsed *dec, unsigned char *buf, int len); |
Holger Hans Peter Freyther | c42ad8b | 2011-04-18 17:04:00 +0200 | [diff] [blame] | 41 | int ipaccess_parse_unitid(const char *str, uint16_t *site_id, uint16_t *bts_id, uint16_t *trx_id); |
Holger Hans Peter Freyther | d3d5be1 | 2010-02-09 14:37:23 +0100 | [diff] [blame] | 42 | |
Holger Hans Peter Freyther | 70402a4 | 2010-04-15 11:17:24 +0200 | [diff] [blame] | 43 | int ipaccess_drop_oml(struct gsm_bts *bts); |
| 44 | int ipaccess_drop_rsl(struct gsm_bts_trx *trx); |
Holger Hans Peter Freyther | d3d5be1 | 2010-02-09 14:37:23 +0100 | [diff] [blame] | 45 | |
Holger Hans Peter Freyther | 0183edd | 2009-12-30 06:13:36 +0100 | [diff] [blame] | 46 | struct sdp_header_item { |
Holger Hans Peter Freyther | c9f8a6d | 2009-12-30 06:10:56 +0100 | [diff] [blame] | 47 | struct sdp_header_entry header_entry; |
| 48 | struct llist_head entry; |
Holger Hans Peter Freyther | 38722cc | 2010-03-22 11:22:54 +0100 | [diff] [blame] | 49 | off_t absolute_offset; |
Holger Hans Peter Freyther | c9f8a6d | 2009-12-30 06:10:56 +0100 | [diff] [blame] | 50 | }; |
| 51 | |
Holger Hans Peter Freyther | 4a98cad | 2009-12-30 05:56:49 +0100 | [diff] [blame] | 52 | struct sdp_header { |
| 53 | struct sdp_firmware firmware_info; |
Holger Hans Peter Freyther | c9f8a6d | 2009-12-30 06:10:56 +0100 | [diff] [blame] | 54 | |
| 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 Freyther | 4a98cad | 2009-12-30 05:56:49 +0100 | [diff] [blame] | 60 | }; |
| 61 | |
| 62 | int ipaccess_analyze_file(int fd, const unsigned int st_size, const unsigned base_offset, struct llist_head *list); |
| 63 | |
Harald Welte | 4f361fc | 2009-02-15 15:32:53 +0000 | [diff] [blame] | 64 | #endif /* _IPACCESS_H */ |