@@ -197,6 +197,18 @@ static void get_ip_info(struct netif * netif, ip_info_t *ip_info)
197197 }
198198}
199199
200+ static inline u8_t * dhcps_option_ip (u8_t * optptr , const ip4_addr_t * ip )
201+ {
202+ LWIP_ASSERT ("dhcps_option_ip: optptr must not be NULL" , (optptr != NULL ));
203+ LWIP_ASSERT ("dhcps_option_ip: ip must not be NULL" , (ip != NULL ));
204+
205+ * optptr ++ = ip4_addr1 (ip );
206+ * optptr ++ = ip4_addr2 (ip );
207+ * optptr ++ = ip4_addr3 (ip );
208+ * optptr ++ = ip4_addr4 (ip );
209+ return optptr ;
210+ }
211+
200212/******************************************************************************
201213 * FunctionName : dhcps_option_info
202214 * Description : get the DHCP message option info
@@ -422,10 +434,7 @@ static u8_t *add_offer_options(dhcps_t *dhcps, u8_t *optptr)
422434
423435 * optptr ++ = DHCP_OPTION_SUBNET_MASK ;
424436 * optptr ++ = 4 ;
425- * optptr ++ = ip4_addr1 (& dhcps -> dhcps_mask );
426- * optptr ++ = ip4_addr2 (& dhcps -> dhcps_mask );
427- * optptr ++ = ip4_addr3 (& dhcps -> dhcps_mask );
428- * optptr ++ = ip4_addr4 (& dhcps -> dhcps_mask );
437+ optptr = dhcps_option_ip (optptr , & dhcps -> dhcps_mask );
429438
430439 * optptr ++ = DHCP_OPTION_LEASE_TIME ;
431440 * optptr ++ = 4 ;
@@ -436,10 +445,7 @@ static u8_t *add_offer_options(dhcps_t *dhcps, u8_t *optptr)
436445
437446 * optptr ++ = DHCP_OPTION_SERVER_ID ;
438447 * optptr ++ = 4 ;
439- * optptr ++ = ip4_addr1 (& ipadd );
440- * optptr ++ = ip4_addr2 (& ipadd );
441- * optptr ++ = ip4_addr3 (& ipadd );
442- * optptr ++ = ip4_addr4 (& ipadd );
448+ optptr = dhcps_option_ip (optptr , & ipadd );
443449
444450 if (dhcps_router_enabled (dhcps -> dhcps_offer )) {
445451 ip_info_t if_ip = { 0 };
@@ -450,10 +456,7 @@ static u8_t *add_offer_options(dhcps_t *dhcps, u8_t *optptr)
450456 if (!ip4_addr_isany_val (* gw_ip )) {
451457 * optptr ++ = DHCP_OPTION_ROUTER ;
452458 * optptr ++ = 4 ;
453- * optptr ++ = ip4_addr1 (gw_ip );
454- * optptr ++ = ip4_addr2 (gw_ip );
455- * optptr ++ = ip4_addr3 (gw_ip );
456- * optptr ++ = ip4_addr4 (gw_ip );
459+ optptr = dhcps_option_ip (optptr , gw_ip );
457460 }
458461 }
459462
@@ -467,36 +470,23 @@ static u8_t *add_offer_options(dhcps_t *dhcps, u8_t *optptr)
467470
468471 * optptr ++ = DHCP_OPTION_DNS_SERVER ;
469472 * optptr ++ = size ;
470-
471- * optptr ++ = ip4_addr1 (& dhcps -> dns_server [DNS_TYPE_MAIN ]);
472- * optptr ++ = ip4_addr2 (& dhcps -> dns_server [DNS_TYPE_MAIN ]);
473- * optptr ++ = ip4_addr3 (& dhcps -> dns_server [DNS_TYPE_MAIN ]);
474- * optptr ++ = ip4_addr4 (& dhcps -> dns_server [DNS_TYPE_MAIN ]);
473+ optptr = dhcps_option_ip (optptr , & dhcps -> dns_server [DNS_TYPE_MAIN ]);
475474
476475 if (dhcps -> dns_server [DNS_TYPE_BACKUP ].addr ) {
477- * optptr ++ = ip4_addr1 (& dhcps -> dns_server [DNS_TYPE_BACKUP ]);
478- * optptr ++ = ip4_addr2 (& dhcps -> dns_server [DNS_TYPE_BACKUP ]);
479- * optptr ++ = ip4_addr3 (& dhcps -> dns_server [DNS_TYPE_BACKUP ]);
480- * optptr ++ = ip4_addr4 (& dhcps -> dns_server [DNS_TYPE_BACKUP ]);
476+ optptr = dhcps_option_ip (optptr , & dhcps -> dns_server [DNS_TYPE_BACKUP ]);
481477 }
482478#ifdef CONFIG_LWIP_DHCPS_ADD_DNS
483479 } else {
484480 * optptr ++ = DHCP_OPTION_DNS_SERVER ;
485481 * optptr ++ = 4 ;
486- * optptr ++ = ip4_addr1 (& ipadd );
487- * optptr ++ = ip4_addr2 (& ipadd );
488- * optptr ++ = ip4_addr3 (& ipadd );
489- * optptr ++ = ip4_addr4 (& ipadd );
482+ optptr = dhcps_option_ip (optptr , & ipadd );
490483#endif /* CONFIG_LWIP_DHCPS_ADD_DNS */
491484 }
492485
493486 ip4_addr_t broadcast_addr = { .addr = (ipadd .addr & dhcps -> dhcps_mask .addr ) | ~dhcps -> dhcps_mask .addr };
494487 * optptr ++ = DHCP_OPTION_BROADCAST_ADDRESS ;
495488 * optptr ++ = 4 ;
496- * optptr ++ = ip4_addr1 (& broadcast_addr );
497- * optptr ++ = ip4_addr2 (& broadcast_addr );
498- * optptr ++ = ip4_addr3 (& broadcast_addr );
499- * optptr ++ = ip4_addr4 (& broadcast_addr );
489+ optptr = dhcps_option_ip (optptr , & broadcast_addr );
500490
501491 * optptr ++ = DHCP_OPTION_INTERFACE_MTU ;
502492 * optptr ++ = 2 ;
@@ -1549,17 +1539,22 @@ bool dhcp_search_ip_on_mac(dhcps_t *dhcps, u8_t *mac, ip4_addr_t *ip)
15491539}
15501540
15511541/******************************************************************************
1552- * FunctionName : dhcps_dns_setserver
1553- * Description : set DNS server address for dhcpserver
1542+ * FunctionName : dhcps_dns_setserver_by_type
1543+ * Description : Set the DNS server address for dhcpserver with a specific type
15541544 * Parameters : dnsserver -- The DNS server address
15551545 * type -- The DNS type
1556- * Returns : ERR_ARG if invalid handle, ERR_OK on success
1546+ * Returns : ERR_ARG if invalid handle, ERR_VAL if invalid type, ERR_OK on success
15571547*******************************************************************************/
1558- err_t dhcps_dns_setserver (dhcps_t * dhcps , const ip_addr_t * dnsserver , dns_type_t type )
1548+ err_t dhcps_dns_setserver_by_type (dhcps_t * dhcps , const ip_addr_t * dnsserver , dns_type_t type )
15591549{
15601550 if (dhcps == NULL ) {
15611551 return ERR_ARG ;
15621552 }
1553+
1554+ if (type >= DNS_TYPE_MAX ) {
1555+ return ERR_VAL ;
1556+ }
1557+
15631558 if (dnsserver != NULL ) {
15641559 dhcps -> dns_server [type ] = * (ip_2_ip4 (dnsserver ));
15651560 } else {
@@ -1569,18 +1564,46 @@ err_t dhcps_dns_setserver(dhcps_t *dhcps, const ip_addr_t *dnsserver, dns_type_t
15691564}
15701565
15711566/******************************************************************************
1572- * FunctionName : dhcps_dns_getserver
1573- * Description : get DNS server address for dhcpserver
1567+ * FunctionName : dhcps_dns_setserver
1568+ * Description : Set the main DNS server address for dhcpserver
1569+ * Parameters : dnsserver -- The DNS server address
1570+ * Returns : ERR_ARG if invalid handle, ERR_VAL if invalid type, ERR_OK on success
1571+ *******************************************************************************/
1572+ err_t dhcps_dns_setserver (dhcps_t * dhcps , const ip_addr_t * dnsserver )
1573+ {
1574+ return dhcps_dns_setserver_by_type (dhcps , dnsserver , DNS_TYPE_MAIN );
1575+ }
1576+
1577+ /******************************************************************************
1578+ * FunctionName : dhcps_dns_getserver_by_type
1579+ * Description : Get the DNS server address for dhcpserver
15741580 * Parameters : dnsserver -- The DNS server address
15751581 * type -- The DNS type
1576- * Returns : ERR_ARG if invalid handle, ERR_OK on success
1582+ * Returns : ERR_ARG if invalid handle, ERR_VAL if invalid type, ERR_OK on success
15771583*******************************************************************************/
1578- err_t dhcps_dns_getserver (dhcps_t * dhcps , ip4_addr_t * dnsserver , dns_type_t type )
1584+ err_t dhcps_dns_getserver_by_type (dhcps_t * dhcps , ip4_addr_t * dnsserver , dns_type_t type )
15791585{
1580- if (dhcps ) {
1581- * dnsserver = dhcps -> dns_server [type ];
1582- return ERR_OK ;
1586+ if ((dhcps == NULL ) || (dnsserver == NULL )) {
1587+ return ERR_ARG ;
15831588 }
1584- return ERR_ARG ;
1589+
1590+ if (type >= DNS_TYPE_MAX ) {
1591+ return ERR_VAL ;
1592+ }
1593+
1594+ * dnsserver = dhcps -> dns_server [type ];
1595+ return ERR_OK ;
15851596}
1597+
1598+ /******************************************************************************
1599+ * FunctionName : dhcps_dns_getserver_by_type
1600+ * Description : Get the main DNS server address for dhcpserver
1601+ * Parameters : dnsserver -- The DNS server address
1602+ * Returns : ERR_ARG if invalid handle, ERR_VAL if invalid type, ERR_OK on success
1603+ *******************************************************************************/
1604+ err_t dhcps_dns_getserver (dhcps_t * dhcps , ip4_addr_t * dnsserver )
1605+ {
1606+ return dhcps_dns_getserver_by_type (dhcps , dnsserver , DNS_TYPE_MAIN );
1607+ }
1608+
15861609#endif // ESP_DHCPS
0 commit comments