net: rpl: Fix compilation if CONFIG_NET_RPL_MOP3 is enabled

If multicast routing is set meaning that MOP3 (Mode of Operation)
is enabled, then the code was not compiling properly.

Change-Id: Ice8a9f7b705c781536d3c2c5ca6cc2bb77a7acc1
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
This commit is contained in:
Jukka Rissanen 2017-04-11 15:25:06 +03:00
commit 43847e751d

View file

@ -113,6 +113,10 @@ static enum net_rpl_mode rpl_mode = NET_RPL_MODE_MESH;
static net_rpl_join_callback_t rpl_join_callback; static net_rpl_join_callback_t rpl_join_callback;
static uint8_t rpl_dao_sequence; static uint8_t rpl_dao_sequence;
#if NET_RPL_MULTICAST
static void send_mcast_dao(struct net_rpl_instance *instance);
#endif
#if defined(CONFIG_NET_RPL_DIS_SEND) #if defined(CONFIG_NET_RPL_DIS_SEND)
/* DODAG Information Solicitation timer. */ /* DODAG Information Solicitation timer. */
struct k_delayed_work dis_timer; struct k_delayed_work dis_timer;
@ -1132,12 +1136,10 @@ static void route_mcast_rm_cb(struct net_route_entry_mcast *route,
void *user_data) void *user_data)
{ {
struct net_rpl_dag *dag = user_data; struct net_rpl_dag *dag = user_data;
struct net_rpl_route_entry *extra; struct net_rpl_route_entry *extra = route->data;
extra = net_nbr_extra_data(net_route_get_nbr(entry));
if (extra->dag == dag) { if (extra->dag == dag) {
net_route_mcast_del(route) net_route_mcast_del(route);
} }
} }
#endif #endif
@ -1147,7 +1149,7 @@ static void net_rpl_remove_routes(struct net_rpl_dag *dag)
net_route_foreach(route_rm_cb, dag); net_route_foreach(route_rm_cb, dag);
#if NET_RPL_MULTICAST #if NET_RPL_MULTICAST
net_route_mcast_foreach(route_mcast_rm_cb, dag); net_route_mcast_foreach(route_mcast_rm_cb, NULL, dag);
#endif #endif
} }
@ -2128,28 +2130,27 @@ static void global_repair(struct net_if *iface,
} while (0) } while (0)
#if NET_RPL_MULTICAST #if NET_RPL_MULTICAST
static void send_mcast_dao(struct net_route_entry_mcast *route, static void send_mcast_dao_cb(struct net_route_entry_mcast *route,
void *user_data) void *user_data)
{ {
struct net_rpl_instance *instance = user_data; struct net_rpl_instance *instance = user_data;
/* Don't send if it's also our own address, done that already */ /* Don't send if it's also our own address, done that already */
if (!net_route_mcast_lookup(&route->group)) { if (!net_route_mcast_lookup(&route->group)) {
net_rpl_dao_send(instance->current_dag->preferred_parent, net_rpl_dao_send(instance->iface,
instance->current_dag->preferred_parent,
&route->group, &route->group,
CONFIG_NET_RPL_MCAST_LIFETIME); CONFIG_NET_RPL_MCAST_LIFETIME);
} }
} }
static inline void send_mcast_dao(struct net_rpl_instance *instance) static void send_mcast_dao(struct net_rpl_instance *instance)
{ {
uip_mcast6_route_t *mcast_route; struct in6_addr *addr = NULL;
uint8_t i; uint8_t i;
/* Send a DAO for own multicast addresses */ /* Send a DAO for own multicast addresses */
for (i = 0; i < NET_IF_MAX_IPV6_MADDR; i++) { for (i = 0; i < NET_IF_MAX_IPV6_MADDR; i++) {
struct in6_addr *addr;
addr = &instance->iface->ipv6.mcast[i].address.in6_addr; addr = &instance->iface->ipv6.mcast[i].address.in6_addr;
if (instance->iface->ipv6.mcast[i].is_used && if (instance->iface->ipv6.mcast[i].is_used &&
@ -2163,7 +2164,7 @@ static inline void send_mcast_dao(struct net_rpl_instance *instance)
} }
/* Iterate over multicast routes and send DAOs */ /* Iterate over multicast routes and send DAOs */
net_route_mcast_foreach(send_mcast_dao, addr, instance); net_route_mcast_foreach(send_mcast_dao_cb, addr, instance);
} }
#endif #endif