@@ -104,6 +104,54 @@ void ICACHE_FLASH_ATTR node_remove_from_list(list_node **phead, list_node* pdele
104
104
}
105
105
}
106
106
}
107
+
108
+ /******************************************************************************
109
+ * FunctionName : wifi_softap_add_dhcps_lease
110
+ * Description : add static lease on the list, this will be the next available @
111
+ * Parameters : mac address
112
+ * Returns : true if ok and false if this mac already exist or if all ip are already reserved
113
+ *******************************************************************************/
114
+ bool ICACHE_FLASH_ATTR wifi_softap_add_dhcps_lease (uint8 * macaddr )
115
+ {
116
+
117
+ struct dhcps_pool * pdhcps_pool = NULL ;
118
+ list_node * pback_node = NULL ;
119
+
120
+ uint32 start_ip = dhcps_lease .start_ip .addr ;
121
+ uint32 end_ip = dhcps_lease .end_ip .addr ;
122
+
123
+ for (pback_node = plist ; pback_node != NULL ;pback_node = pback_node -> pnext ) {
124
+ pdhcps_pool = pback_node -> pnode ;
125
+ if (os_memcmp (pdhcps_pool -> mac , macaddr , sizeof (pdhcps_pool -> mac )) == 0 ){
126
+ #if DHCPS_DEBUG
127
+ os_printf ("this mac already exist" );
128
+ #endif
129
+ return false;
130
+ }
131
+ else start_ip = htonl ((ntohl (start_ip ) + 1 ));
132
+ }
133
+
134
+ if (start_ip > end_ip ) {
135
+ #if DHCPS_DEBUG
136
+ os_printf ("no more ip available" );
137
+ #endif
138
+ return false;
139
+ }
140
+
141
+ pdhcps_pool = (struct dhcps_pool * )os_zalloc (sizeof (struct dhcps_pool ));
142
+ pdhcps_pool -> ip .addr = start_ip ;
143
+ os_memcpy (pdhcps_pool -> mac , macaddr , sizeof (pdhcps_pool -> mac ));
144
+ pdhcps_pool -> lease_timer = DHCPS_LEASE_TIMER ;
145
+ pdhcps_pool -> type = DHCPS_TYPE_STATIC ;
146
+ pdhcps_pool -> state = DHCPS_STATE_ONLINE ;
147
+ pback_node = (list_node * )os_zalloc (sizeof (list_node ));
148
+ pback_node -> pnode = pdhcps_pool ;
149
+ pback_node -> pnext = NULL ;
150
+ node_insert_to_list (& plist ,pback_node );
151
+
152
+ return true;
153
+ }
154
+
107
155
///////////////////////////////////////////////////////////////////////////////////
108
156
/*
109
157
* ��DHCP msg��Ϣ�ṹ����������
0 commit comments