LCOV - code coverage report
Current view: top level - zephyr/net - dhcpv6.h Coverage Total Hit
Test: new.info Lines: 100.0 % 7 7
Test Date: 2025-03-11 06:50:38

            Line data    Source code
       1            1 : /*
       2              :  * Copyright (c) 2023 Nordic Semiconductor ASA
       3              :  *
       4              :  * SPDX-License-Identifier: Apache-2.0
       5              :  */
       6              : 
       7              : /** @file
       8              :  *  @brief DHCPv6 client
       9              :  */
      10              : 
      11              : #ifndef ZEPHYR_INCLUDE_NET_DHCPV6_H_
      12              : #define ZEPHYR_INCLUDE_NET_DHCPV6_H_
      13              : 
      14              : #ifdef __cplusplus
      15              : extern "C" {
      16              : #endif
      17              : 
      18              : /**
      19              :  * @brief DHCPv6
      20              :  * @defgroup dhcpv6 DHCPv6
      21              :  * @since 3.5
      22              :  * @version 0.8.0
      23              :  * @ingroup networking
      24              :  * @{
      25              :  */
      26              : 
      27              : /** @cond INTERNAL_HIDDEN */
      28              : 
      29              : /** Current state of DHCPv6 client address/prefix negotiation. */
      30              : enum net_dhcpv6_state {
      31              :         NET_DHCPV6_DISABLED,
      32              :         NET_DHCPV6_INIT,
      33              :         NET_DHCPV6_SOLICITING,
      34              :         NET_DHCPV6_REQUESTING,
      35              :         NET_DHCPV6_CONFIRMING,
      36              :         NET_DHCPV6_RENEWING,
      37              :         NET_DHCPV6_REBINDING,
      38              :         NET_DHCPV6_INFO_REQUESTING,
      39              :         NET_DHCPV6_BOUND,
      40              : } __packed;
      41              : 
      42              : #define DHCPV6_TID_SIZE 3
      43              : 
      44              : #ifndef CONFIG_NET_DHCPV6_DUID_MAX_LEN
      45              : #define CONFIG_NET_DHCPV6_DUID_MAX_LEN 22
      46              : #endif
      47              : 
      48              : struct net_dhcpv6_duid_raw {
      49              :         uint16_t type;
      50              :         uint8_t buf[CONFIG_NET_DHCPV6_DUID_MAX_LEN];
      51              : } __packed;
      52              : 
      53              : struct net_dhcpv6_duid_storage {
      54              :         struct net_dhcpv6_duid_raw duid;
      55              :         uint8_t length;
      56              : };
      57              : 
      58              : struct net_if;
      59              : 
      60              : /** @endcond */
      61              : 
      62              : /** @brief DHCPv6 client configuration parameters. */
      63            1 : struct net_dhcpv6_params {
      64            1 :         bool request_addr : 1; /**< Request IPv6 address. */
      65            1 :         bool request_prefix : 1; /**< Request IPv6 prefix. */
      66              : };
      67              : 
      68              : /**
      69              :  *  @brief Start DHCPv6 client on an iface
      70              :  *
      71              :  *  @details Start DHCPv6 client on a given interface. DHCPv6 client will start
      72              :  *  negotiation for IPv6 address and/or prefix, depending on the configuration.
      73              :  *  Once the negotiation is complete, IPv6 address/prefix details will be added
      74              :  *  to the interface.
      75              :  *
      76              :  *  @param iface A valid pointer to a network interface
      77              :  *  @param params DHCPv6 client configuration parameters.
      78              :  */
      79            1 : void net_dhcpv6_start(struct net_if *iface, struct net_dhcpv6_params *params);
      80              : 
      81              : /**
      82              :  *  @brief Stop DHCPv6 client on an iface
      83              :  *
      84              :  *  @details Stop DHCPv6 client on a given interface. DHCPv6 client
      85              :  *  will remove all configuration obtained from a DHCP server from the
      86              :  *  interface and stop any further negotiation with the server.
      87              :  *
      88              :  *  @param iface A valid pointer to a network interface
      89              :  */
      90            1 : void net_dhcpv6_stop(struct net_if *iface);
      91              : 
      92              : /**
      93              :  *  @brief Restart DHCPv6 client on an iface
      94              :  *
      95              :  *  @details Restart DHCPv6 client on a given interface. DHCPv6 client
      96              :  *  will restart the state machine without any of the initial delays.
      97              :  *
      98              :  *  @param iface A valid pointer to a network interface
      99              :  */
     100            1 : void net_dhcpv6_restart(struct net_if *iface);
     101              : 
     102              : /** @cond INTERNAL_HIDDEN */
     103              : 
     104              : /**
     105              :  *  @brief DHCPv6 state name
     106              :  *
     107              :  *  @internal
     108              :  */
     109              : const char *net_dhcpv6_state_name(enum net_dhcpv6_state state);
     110              : 
     111              : /** @endcond */
     112              : 
     113              : /**
     114              :  * @}
     115              :  */
     116              : 
     117              : #ifdef __cplusplus
     118              : }
     119              : #endif
     120              : 
     121              : #endif /* ZEPHYR_INCLUDE_NET_DHCPV6_H_ */
        

Generated by: LCOV version 2.0-1