1 /*
2  * Copyright (c) 2020-2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #ifndef OHOS_DHCP_RESULT_EVENT_H
16 #define OHOS_DHCP_RESULT_EVENT_H
17 
18 #include <netinet/ip.h>
19 #include <sys/stat.h>
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 #define DHCP_MAX_FILE_BYTES 128
26 #define MAC_ADDR_MAX_LEN 18
27 #define DHCP_LEASE_FORMAT_SIZE 8
28 #define DHCP_LEASE_FORMAT_MAX_SIZE 9
29 #define DHCP_LEASE_MAC_ADDR_POS 0
30 #define DHCP_LEASE_IP_ADDR_POS 1
31 #define DHCP_LEASE_HOSTNAME_POS 8
32 #define DHCP_LEASE_DATA_MAX_LEN 128
33 #define DHCP_DNS_MAX_NUMBER 10
34 #define DHCP_DNS_DATA_MAX_LEN 128
35 
36 typedef struct{
37     uint32_t dnsNumber;
38     char dnsAddr[DHCP_DNS_MAX_NUMBER][DHCP_DNS_DATA_MAX_LEN];
39 }DnsList;
40 
41 typedef struct{
42     int iptype;                                /* 0-ipv4,1-ipv6 */
43     bool isOptSuc;                              /* get result */
44     char strOptClientId[DHCP_MAX_FILE_BYTES];   /* your (client) IP */
45     char strOptServerId[DHCP_MAX_FILE_BYTES];   /* dhcp server IP */
46     char strOptSubnet[DHCP_MAX_FILE_BYTES];     /* your (client) subnet mask */
47     char strOptDns1[DHCP_MAX_FILE_BYTES];       /* your (client) DNS server1 */
48     char strOptDns2[DHCP_MAX_FILE_BYTES];       /* your (client) DNS server2 */
49     char strOptRouter1[DHCP_MAX_FILE_BYTES];    /* your (client) router1 */
50     char strOptRouter2[DHCP_MAX_FILE_BYTES];    /* your (client) router2 */
51     char strOptVendor[DHCP_MAX_FILE_BYTES];     /* your (client) vendor */
52     char strOptLinkIpv6Addr[DHCP_MAX_FILE_BYTES];  /* your (client) link ipv6 addr */
53     char strOptRandIpv6Addr[DHCP_MAX_FILE_BYTES];  /* your (client) rand ipv6 addr */
54     char strOptLocalAddr1[DHCP_MAX_FILE_BYTES];    /* your (client) unique local ipv6 addr */
55     char strOptLocalAddr2[DHCP_MAX_FILE_BYTES];    /* your (client) unique local ipv6 addr */
56     uint32_t uOptLeasetime;                     /* your (client) IP lease time (s) */
57     uint32_t uAddTime;                          /* dhcp result add time */
58     uint32_t uGetTime;                          /* dhcp result get time */
59     DnsList dnsList;                            /* dhcp dns list */
60 }DhcpResult;
61 
62 typedef struct DhcpRange{
63     int iptype;                           /* 0-ipv4,1-ipv6 */
64     int leaseHours;                       /* lease hours */
65     char strTagName[DHCP_MAX_FILE_BYTES]; /* dhcp-range tag name */
66     char strStartip[INET_ADDRSTRLEN];     /* dhcp-range start ip */
67     char strEndip[INET_ADDRSTRLEN];       /* dhcp-range end ip */
68     char strSubnet[INET_ADDRSTRLEN];      /* dhcp-range subnet */
69 }DhcpRange;
70 
71 typedef struct DhcpStationInfo{
72     char ipAddr[INET_ADDRSTRLEN];
73     char macAddr[MAC_ADDR_MAX_LEN];
74     char deviceName[DHCP_LEASE_DATA_MAX_LEN];
75 }DhcpStationInfo;
76 
77 typedef struct {
78     void (*OnIpSuccessChanged)(int status, const char *ifname, DhcpResult *result);
79     void (*OnIpFailChanged)(int status, const char *ifname, const char *reason);
80 }ClientCallBack;
81 
82 typedef struct {
83     void (*OnDhcpClientReport)(int status, const char *ifname, DhcpResult *result);
84 }DhcpClientReport;
85 
86 typedef struct {
87     void (*OnServerStatusChanged)(int status);
88     void (*OnServerLeasesChanged)(const char *ifname, const char *leases);
89     void (*OnSerExitChanged)(const char *ifname);
90     void (*OnServerSuccess)(const char *ifname, DhcpStationInfo *stationInfos, size_t size);
91 }ServerCallBack;
92 
93 typedef struct RouterConfig {
94     char bssid[MAC_ADDR_MAX_LEN];
95     bool prohibitUseCacheIp;
96 }RouterConfig;
97 #ifdef __cplusplus
98 }
99 #endif
100 #endif
101