| /* |
| * Copyright (c) 2019 Intel Corporation |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef __CONN_MGR_PRV_H__ |
| #define __CONN_MGR_PRV_H__ |
| |
| #include <zephyr/net/conn_mgr_connectivity.h> |
| #include <zephyr/sys/iterable_sections.h> |
| |
| #if defined(CONFIG_NET_IPV6) && defined(CONFIG_NET_IPV4) |
| #define CONN_MGR_IFACE_MAX MAX(CONFIG_NET_IF_MAX_IPV6_COUNT, \ |
| CONFIG_NET_IF_MAX_IPV4_COUNT) |
| #elif defined(CONFIG_NET_IPV6) |
| #define CONN_MGR_IFACE_MAX CONFIG_NET_IF_MAX_IPV6_COUNT |
| #else |
| #define CONN_MGR_IFACE_MAX CONFIG_NET_IF_MAX_IPV4_COUNT |
| #endif |
| |
| /* External state flags */ |
| #define CONN_MGR_IF_UP BIT(0) |
| #define CONN_MGR_IF_IPV6_SET BIT(1) |
| #define CONN_MGR_IF_IPV4_SET BIT(2) |
| |
| /* Configuration flags */ |
| #define CONN_MGR_IF_IGNORED BIT(7) |
| |
| /* Internal state flags*/ |
| #define CONN_MGR_IF_READY BIT(14) |
| |
| /* Event flags */ |
| #define CONN_MGR_IF_CHANGED BIT(15) |
| |
| /* NET_MGMT event masks */ |
| #define CONN_MGR_IFACE_EVENTS_MASK (NET_EVENT_IF_DOWN | \ |
| NET_EVENT_IF_UP) |
| |
| #define CONN_MGR_IPV6_EVENTS_MASK (NET_EVENT_IPV6_ADDR_ADD | \ |
| NET_EVENT_IPV6_ADDR_DEL | \ |
| NET_EVENT_IPV6_DAD_SUCCEED | \ |
| NET_EVENT_IPV6_DAD_FAILED) |
| |
| #define CONN_MGR_IPV4_EVENTS_MASK (NET_EVENT_IPV4_ADDR_ADD | \ |
| NET_EVENT_IPV4_ADDR_DEL) |
| |
| extern struct k_sem conn_mgr_event_signal; |
| extern struct k_mutex conn_mgr_lock; |
| |
| void conn_mgr_init_events_handler(void); |
| |
| /** |
| * @brief Retrieves the conn_mgr binding struct for a provided iface if it exists. |
| * |
| * Bindings for connectivity implementations with missing API structs are ignored. |
| * |
| * @param iface - bound network interface to obtain the binding struct for. |
| * @return struct conn_mgr_conn_binding* Pointer to the retrieved binding struct if it exists, |
| * NULL otherwise. |
| */ |
| static inline struct conn_mgr_conn_binding *conn_mgr_if_get_binding(struct net_if *iface) |
| { |
| STRUCT_SECTION_FOREACH(conn_mgr_conn_binding, binding) { |
| if (iface == binding->iface) { |
| if (binding->impl->api) { |
| return binding; |
| } |
| return NULL; |
| } |
| } |
| return NULL; |
| } |
| |
| #endif /* __CONN_MGR_PRV_H__ */ |