• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #define INTERFACE_MAX_LEN 32
36 #define SSID_MAX_LEN 32
37 #define WIFI_DHCP_CACHE_ADD 1
38 #define WIFI_DHCP_CACHE_REMOVE 2
39 
40 typedef struct{
41     uint32_t dnsNumber;
42     char dnsAddr[DHCP_DNS_MAX_NUMBER][DHCP_DNS_DATA_MAX_LEN];
43 }DnsList;
44 
45 typedef struct{
46     int iptype;                                /* 0-ipv4,1-ipv6 */
47     bool isOptSuc;                              /* get result */
48     char strOptClientId[DHCP_MAX_FILE_BYTES];   /* your (client) IP */
49     char strOptServerId[DHCP_MAX_FILE_BYTES];   /* dhcp server IP */
50     char strOptSubnet[DHCP_MAX_FILE_BYTES];     /* your (client) subnet mask */
51     char strOptDns1[DHCP_MAX_FILE_BYTES];       /* your (client) DNS server1 */
52     char strOptDns2[DHCP_MAX_FILE_BYTES];       /* your (client) DNS server2 */
53     char strOptRouter1[DHCP_MAX_FILE_BYTES];    /* your (client) router1 */
54     char strOptRouter2[DHCP_MAX_FILE_BYTES];    /* your (client) router2 */
55     char strOptVendor[DHCP_MAX_FILE_BYTES];     /* your (client) vendor */
56     char strOptLinkIpv6Addr[DHCP_MAX_FILE_BYTES];  /* your (client) link ipv6 addr */
57     char strOptRandIpv6Addr[DHCP_MAX_FILE_BYTES];  /* your (client) rand ipv6 addr */
58     char strOptLocalAddr1[DHCP_MAX_FILE_BYTES];    /* your (client) unique local ipv6 addr */
59     char strOptLocalAddr2[DHCP_MAX_FILE_BYTES];    /* your (client) unique local ipv6 addr */
60     uint32_t uOptLeasetime;                     /* your (client) IP lease time (s) */
61     uint32_t uAddTime;                          /* dhcp result add time */
62     uint32_t uGetTime;                          /* dhcp result get time */
63     DnsList dnsList;                            /* dhcp dns list */
64 }DhcpResult;
65 
66 typedef struct DhcpRange{
67     int iptype;                           /* 0-ipv4,1-ipv6 */
68     int leaseHours;                       /* lease hours */
69     char strTagName[DHCP_MAX_FILE_BYTES]; /* dhcp-range tag name */
70     char strStartip[INET_ADDRSTRLEN];     /* dhcp-range start ip */
71     char strEndip[INET_ADDRSTRLEN];       /* dhcp-range end ip */
72     char strSubnet[INET_ADDRSTRLEN];      /* dhcp-range subnet */
73 }DhcpRange;
74 
75 typedef struct DhcpStationInfo{
76     char ipAddr[INET_ADDRSTRLEN];
77     char macAddr[MAC_ADDR_MAX_LEN];
78     char deviceName[DHCP_LEASE_DATA_MAX_LEN];
79 }DhcpStationInfo;
80 
81 typedef struct {
82     void (*OnIpSuccessChanged)(int status, const char *ifname, DhcpResult *result);
83     void (*OnIpFailChanged)(int status, const char *ifname, const char *reason);
84 }ClientCallBack;
85 
86 typedef struct {
87     void (*OnDhcpClientReport)(int status, const char *ifname, DhcpResult *result);
88 }DhcpClientReport;
89 
90 typedef struct {
91     void (*OnServerStatusChanged)(int status);
92     void (*OnServerLeasesChanged)(const char *ifname, const char *leases);
93     void (*OnSerExitChanged)(const char *ifname);
94     void (*OnServerSuccess)(const char *ifname, DhcpStationInfo *stationInfos, size_t size);
95 }ServerCallBack;
96 
97 typedef struct RouterConfig {
98     char ifname[INTERFACE_MAX_LEN];
99     char bssid[MAC_ADDR_MAX_LEN];
100     bool prohibitUseCacheIp;
101     bool bIpv6;
102     bool bSpecificNetwork;
103 }RouterConfig;
104 
105 typedef struct IpCacheInfo {
106     char ssid[SSID_MAX_LEN];
107     char bssid[MAC_ADDR_MAX_LEN];
108 }IpCacheInfo;
109 #ifdef __cplusplus
110 }
111 #endif
112 #endif
113