-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy pathipc_msg.h
More file actions
273 lines (249 loc) · 9.25 KB
/
ipc_msg.h
File metadata and controls
273 lines (249 loc) · 9.25 KB
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
#ifndef _WAN_MANAGER_IPC_MSG_H_
#define _WAN_MANAGER_IPC_MSG_H_
#include <stdbool.h>
#include <nanomsg/nn.h>
#include <nanomsg/pipeline.h>
#define WAN_MANAGER_ADDR "tcp://127.0.0.1:50321"
#define PPP_MANAGER_ADDR "tcp://127.0.0.1:50322"
#define IHC_IPC_ADDR "tcp://127.0.0.1:50323"
#define DHCP_MANAGER_ADDR "tcp://127.0.0.1:50324"
#define DEFAULT_IPC_SOCKET_TIMEOUT 5000 //5 seconds
#define BUFLEN_4 4 //!< buffer length 4
#define BUFLEN_8 8 //!< buffer length 8
#define BUFLEN_16 16 //!< buffer length 16
#define BUFLEN_18 18 //!< buffer length 18
#define BUFLEN_24 24 //!< buffer length 24
#define BUFLEN_32 32 //!< buffer length 32
#define BUFLEN_40 40 //!< buffer length 40
#define BUFLEN_48 48 //!< buffer length 48
#define BUFLEN_64 64 //!< buffer length 64
#define BUFLEN_80 80 //!< buffer length 80
#define BUFLEN_128 128 //!< buffer length 128
#define BUFLEN_256 256 //!< buffer length 256
#define BUFLEN_264 264 //!< buffer length 264
#define BUFLEN_512 512 //!< buffer length 512
#define BUFLEN_1024 1024 //!< buffer length 1024
#define IP_ADDR_LENGTH 46 //!< IP address length
#define IFNAME_LENGTH BUFLEN_32
#define MAX_FULLPATH_LENGTH 1024
#define AFTR_NAME_LENGTH 256
//LCP States
typedef enum _PPP_STATES
{
PPP_INTERFACE_UP = 1,
PPP_INTERFACE_DOWN,
PPP_INTERFACE_UNCONFIGURED,
PPP_INTERFACE_CONNECTING,
PPP_INTERFACE_AUTHENTICATING,
PPP_INTERFACE_PENDING_DISCONNET,
PPP_INTERFACE_DISCONNECTING,
PPP_INTERFACE_DISCONNECTED,
PPP_INTERFACE_LCP_ECHO_FAILED,
PPP_INTERFACE_AUTH_FAILED,
PPP_IPCP_COMPLETED,
PPP_IPCP_FAILED,
PPP_IPV6CP_COMPLETED,
PPP_IPV6CP_FAILED,
PPP_LCP_AUTH_COMPLETED,
PPP_LCP_VENDOR_RECEIVED,
PPP_MAX_STATE
}PPP_STATES;
typedef enum
{
DHCPC_STATE_CHANGED = 1,
DHCP6C_STATE_CHANGED,
IPC_MSG_PPP_STATE_CHANGE,
IHC_STATE_CHANGE,
MAPT_STATE_CHANGED
}ipc_msg_type_t;
typedef enum _MAP_TYPE
{
MAP_TYPE_UNKNOWN = 0,
MAP_TYPE_MAPE,
MAP_TYPE_MAPT
}MAP_TYPE;
typedef struct _ipc_ppp_ipcp_msg_t
{
char ip[BUFLEN_32];
char mask[BUFLEN_32];
char gateway[BUFLEN_32];
char nameserver[BUFLEN_64];
}ipc_ppp_ipcp_msg_t;
typedef struct _ipc_ppp_ipv6cp_msg_t
{
char localIntfId[IP_ADDR_LENGTH];
char remoteIntfId[IP_ADDR_LENGTH];
}ipc_ppp_ipv6cp_msg_t;
typedef struct _ipc_ppp_lcp_msg
{
int exitStatus;
char authproto[BUFLEN_32];
char vendormsg[BUFLEN_256];
char acname[BUFLEN_32];
}ipc_ppp_lcp_msg;
typedef struct _ipc_ppp_event_msg_t
{
pid_t pid;
PPP_STATES pppState; //lcp state
union
{
ipc_ppp_lcp_msg pppLcpMsg;
ipc_ppp_ipcp_msg_t pppIpcpMsg; //ncp state
ipc_ppp_ipv6cp_msg_t pppIpv6cpMsg; // ncp v6 state
}event;
}ipc_ppp_event_msg_t;
typedef struct _ipc_map_data_t
{
char brIPv6Prefix[BUFLEN_128];
char ruleIPv4Prefix[BUFLEN_32];
char ruleIPv6Prefix[BUFLEN_128];
char pdIPv6Prefix[BUFLEN_128];
uint32_t iapdPrefixLen;
uint32_t eaLen;
uint32_t psidOffset;
uint32_t psidLen;
uint32_t psid;
uint32_t v4Len;
uint32_t v6Len;
uint32_t ratio;
bool isFMR;
MAP_TYPE mapType;
}ipc_map_data_t;
typedef struct _ipc_dhcpv4_data_t
{
bool addressAssigned; /** Have we been assigned an IP address ? */
bool isExpired; /** Is the lease time expired ? */
char ip[BUFLEN_32]; /** New IP address, if addressAssigned==TRUE */
char mask[BUFLEN_32]; /** New netmask, if addressAssigned==TRUE */
char gateway[BUFLEN_32]; /** New gateway, if addressAssigned==TRUE */
char dnsServer[BUFLEN_64]; /** New dns Server, if addressAssigned==TRUE */
char dnsServer1[BUFLEN_64]; /** New dns Server, if addressAssigned==TRUE */
char dhcpcInterface[BUFLEN_64]; /** Dhcp interface name */
uint32_t leaseTime; /** Lease time, , if addressAssigned==TRUE */
uint32_t rebindingTime; /** Rebinding time, if addressAssigned==TRUE */
uint32_t renewalTime; /** Renewal Time, if addressAssigned==TRUE */
int32_t timeOffset; /** New time offset, if addressAssigned==TRUE */
bool isTimeOffsetAssigned; /** Is the time offset assigned ? */
char timeZone[BUFLEN_64]; /** New time zone, if addressAssigned==TRUE */
uint32_t upstreamCurrRate; /** Upstream rate */
uint32_t downstreamCurrRate; /** Downstream rate */
char dhcpServerId[BUFLEN_64]; /** Dhcp server id */
char dhcpState[BUFLEN_64]; /** Dhcp state. */
bool mtuAssigned; /** Have we been assigned MTU size ? */
uint32_t mtuSize; /** MTU Size, if mtuAssigned==TRUE */
char sipsrv[BUFLEN_64]; /** Dhcp sipsrv. */
char staticroutes[BUFLEN_64]; /** Dhcp classless static route */
} ipc_dhcpv4_data_t;
typedef struct _ipc_dhcpv6_data_t
{
bool prefixAssigned; /**< Have we been assigned a site prefix ? */
bool addrAssigned; /**< Have we been assigned an IPv6 address ? */
bool dnsAssigned; /**< Have we been assigned dns server addresses ? */
bool domainNameAssigned; /**< Have we been assigned dns server addresses ? */
bool aftrAssigned; /**< Have we been assigned aftr name ? */
bool mapeAssigned; /**< Have we been assigned mape config ? */
bool maptAssigned; /**< Have we been assigned mapt config ? */
bool isExpired; /**< Is the lease time expired ? */
char sitePrefix[BUFLEN_48]; /**< New site prefix, if prefixAssigned==TRUE */
uint32_t prefixPltime;
uint32_t prefixVltime;
char sitePrefixOld[BUFLEN_48]; /**< add support for RFC7084 requirement L-13 */
uint32_t prefixVltimeOld;
uint32_t prefixCmd;
char ifname[BUFLEN_32];
char address[BUFLEN_48]; /**< New IPv6 address, if addrAssigned==TRUE */
uint32_t addressPltime;
uint32_t addressVltime;
char pdIfAddress[BUFLEN_48]; /**< New IPv6 address of PD interface */
uint32_t addrCmd;
char nameserver[BUFLEN_128]; /**< New nameserver, if addressAssigned==TRUE */
char nameserver1[BUFLEN_128]; /**< New nameserver, if addressAssigned==TRUE */
char domainName[BUFLEN_64]; /**< New domain Name, if addressAssigned==TRUE */
char ntpserver[BUFLEN_128]; /**< New ntp server(s), dhcp server may provide this */
char aftr[AFTR_NAME_LENGTH]; /**< dhcp server may provide this */
#if defined(FEATURE_MAPT) || defined(MAPT_UNIFICATION_ENABLED)
ipc_map_data_t mapt;
#endif
} ipc_dhcpv6_data_t;
/* IPoE definitions */
typedef enum
{
IPOE_MSG_WAN_CONNECTION_UP = 1,
IPOE_MSG_WAN_CONNECTION_DOWN,
IPOE_MSG_WAN_CONNECTION_IPV6_UP,
IPOE_MSG_WAN_CONNECTION_IPV6_DOWN,
IPOE_MSG_IHC_ECHO_FAIL_IPV4,
IPOE_MSG_IHC_ECHO_FAIL_IPV6,
IPOE_MSG_IHC_ECHO_RENEW_IPV4,
IPOE_MSG_IHC_ECHO_RENEW_IPV6,
IPOE_MSG_IHC_ECHO_IPV4_UP,
IPOE_MSG_IHC_ECHO_IPV6_UP,
IPOE_MSG_IHC_ECHO_IPV4_IDLE,
IPOE_MSG_IHC_ECHO_IPV6_IDLE,
}ipoe_msg_type_t;
typedef struct
{
ipoe_msg_type_t msgType;
char ifName[IFNAME_LENGTH];
char ipv4Address[IP_ADDR_LENGTH];
char ipv6Address[BUFLEN_48];
char domainName[BUFLEN_128];
} ipc_ihc_data_t;
typedef struct _ipc_msg_payload_t
{
ipc_msg_type_t msg_type;
union {
ipc_dhcpv4_data_t dhcpv4;
ipc_dhcpv6_data_t dhcpv6;
ipc_ppp_event_msg_t pppEventMsg;
ipc_ihc_data_t ihcData;
}data;
} ipc_msg_payload_t;
typedef struct _DHCP_MGR_IPV4_MSG
{
char ifname[BUFLEN_64];
char address[BUFLEN_32];
char netmask[BUFLEN_32];
char gateway[BUFLEN_32];
char dnsServer[BUFLEN_64];
char dnsServer1[BUFLEN_64];
char timeZone[BUFLEN_64];
uint32_t mtuSize;
int32_t timeOffset;
bool isTimeOffsetAssigned;
uint32_t upstreamCurrRate;
uint32_t downstreamCurrRate;
char cOption122[BUFLEN_256];
char cOption67[BUFLEN_64]; //bootfile name
char cTftpServer[BUFLEN_64];
char cHostName[BUFLEN_64];
char cDomainName[BUFLEN_64];
} DHCP_MGR_IPV4_MSG;
typedef struct _DHCP_MGR_IPV6_MSG
{
char ifname[BUFLEN_32];
char address[BUFLEN_48];
char nameserver[BUFLEN_128];
char nameserver1[BUFLEN_128];
char domainName[BUFLEN_64];
char sitePrefix[BUFLEN_48];
uint32_t prefixPltime;
uint32_t prefixVltime;
bool addrAssigned;
bool prefixAssigned;
bool domainNameAssigned;
uint32_t ipv6_TimeOffset;
bool maptAssigned;
bool mapeAssigned;
ipc_map_data_t map;
char aftr[BUFLEN_256];
} DHCP_MGR_IPV6_MSG;
typedef enum {
DHCP_CLIENT_STARTED,
DHCP_CLIENT_STOPPED,
DHCP_CLIENT_FAILED,
DHCP_LEASE_UPDATE, // New lease or change in the Lease value
DHCP_LEASE_DEL, // Lease Expired, Released
DHCP_LEASE_RENEW, // Lease Renewed
} DHCP_MESSAGE_TYPE;
#endif