blob: 8d1873b439f9ed924ff652eef5d813092c0d6ac8 [file] [log] [blame]
/*
* Copyright (c) 2017 Matthias Boesl
*
* SPDX-License-Identifier: Apache-2.0
*/
/** @file
* @brief IPv4 Autoconfiguration
*/
#ifndef ZEPHYR_INCLUDE_NET_IPV4_AUTOCONF_H_
#define ZEPHYR_INCLUDE_NET_IPV4_AUTOCONF_H_
/** Current state of IPv4 Autoconfiguration */
enum net_ipv4_autoconf_state {
NET_IPV4_AUTOCONF_INIT, /**< Initialization state */
NET_IPV4_AUTOCONF_ASSIGNED, /**< Assigned state */
NET_IPV4_AUTOCONF_RENEW, /**< Renew state */
};
struct net_if;
/**
* @brief Start IPv4 autoconfiguration RFC 3927: IPv4 Link Local
*
* @details Start IPv4 IP autoconfiguration
*
* @param iface A valid pointer on an interface
*/
#if defined(CONFIG_NET_IPV4_AUTO)
void net_ipv4_autoconf_start(struct net_if *iface);
#else
static inline void net_ipv4_autoconf_start(struct net_if *iface)
{
ARG_UNUSED(iface);
}
#endif
/**
* @brief Reset autoconf process
*
* @details Reset IPv4 IP autoconfiguration
*
* @param iface A valid pointer on an interface
*/
#if defined(CONFIG_NET_IPV4_AUTO)
void net_ipv4_autoconf_reset(struct net_if *iface);
#else
static inline void net_ipv4_autoconf_reset(struct net_if *iface)
{
ARG_UNUSED(iface);
}
#endif
/** @cond INTERNAL_HIDDEN */
/**
* @brief Initialize IPv4 auto configuration engine.
*/
#if defined(CONFIG_NET_IPV4_AUTO)
void net_ipv4_autoconf_init(void);
#else
static inline void net_ipv4_autoconf_init(void) { }
#endif
/** @endcond */
#endif /* ZEPHYR_INCLUDE_NET_IPV4_AUTOCONF_H_ */