27925725393498b5e721d782a2e812a93f94ccf3
[osmocom-bb.git] / include / osmocom / gsm / protocol / ipaccess.h
1 #ifndef _OSMO_PROTO_IPACCESS_H
2 #define _OSMO_PROTO_IPACCESS_H
3
4 #include <stdint.h>
5
6 #define IPA_TCP_PORT_OML        3002
7 #define IPA_TCP_PORT_RSL        3003
8
9 struct ipaccess_head {
10         uint16_t len;   /* network byte order */
11         uint8_t proto;
12         uint8_t data[0];
13 } __attribute__ ((packed));
14
15 struct ipaccess_head_ext {
16         uint8_t proto;
17         uint8_t data[0];
18 } __attribute__ ((packed));
19
20 enum ipaccess_proto {
21         IPAC_PROTO_RSL          = 0x00,
22         IPAC_PROTO_IPACCESS     = 0xfe,
23         IPAC_PROTO_SCCP         = 0xfd,
24         IPAC_PROTO_OML          = 0xff,
25
26
27         /* OpenBSC extensions */
28         IPAC_PROTO_OSMO         = 0xee,
29         IPAC_PROTO_MGCP_OLD     = 0xfc,
30 };
31
32 enum ipaccess_proto_ext {
33         IPAC_PROTO_EXT_CTRL     = 0x00,
34         IPAC_PROTO_EXT_MGCP     = 0x01,
35         IPAC_PROTO_EXT_LAC      = 0x02,
36 };
37
38 enum ipaccess_msgtype {
39         IPAC_MSGT_PING          = 0x00,
40         IPAC_MSGT_PONG          = 0x01,
41         IPAC_MSGT_ID_GET        = 0x04,
42         IPAC_MSGT_ID_RESP       = 0x05,
43         IPAC_MSGT_ID_ACK        = 0x06,
44
45         /* OpenBSC extension */
46         IPAC_MSGT_SCCP_OLD      = 0xff,
47 };
48
49 enum ipaccess_id_tags {
50         IPAC_IDTAG_SERNR                = 0x00,
51         IPAC_IDTAG_UNITNAME             = 0x01,
52         IPAC_IDTAG_LOCATION1            = 0x02,
53         IPAC_IDTAG_LOCATION2            = 0x03,
54         IPAC_IDTAG_EQUIPVERS            = 0x04,
55         IPAC_IDTAG_SWVERSION            = 0x05,
56         IPAC_IDTAG_IPADDR               = 0x06,
57         IPAC_IDTAG_MACADDR              = 0x07,
58         IPAC_IDTAG_UNIT                 = 0x08,
59 };
60
61 /*
62  * Firmware specific header
63  */
64 struct sdp_firmware {
65         char magic[4];
66         char more_magic[2];
67         uint16_t more_more_magic;
68         uint32_t header_length;
69         uint32_t file_length;
70         char sw_part[20];
71         char text1[64];
72         char time[12];
73         char date[14];
74         char text2[10];
75         char version[20];
76         uint16_t table_offset;
77         /* stuff i don't know */
78 } __attribute__((packed));
79
80 struct sdp_header_entry {
81         uint16_t something1;
82         char text1[64];
83         char time[12];
84         char date[14];
85         char text2[10];
86         char version[20];
87         uint32_t length;
88         uint32_t addr1;
89         uint32_t addr2;
90         uint32_t start;
91 } __attribute__((packed));
92
93 #endif /* _OSMO_PROTO_IPACCESS_H */