Skip to content

Commit

Permalink
rtnetlink: Extend rtnetlink to support RTNLGRP_IPV4_IFADDR and
Browse files Browse the repository at this point in the history
RTNLGRP_IPV6_IFADDR.

This commit renames the rtnetlink-link.{c,h} to rtnetlink.{c,h}
and extends the module to support RTNLGRP_IPV4_IFADDR and
RTNLGRP_IPV4_IFADDR multicast groups.  A later patch will start
using this module to react to interface address changes.

Signed-off-by: Alex Wang <[email protected]>
Acked-by: Ben Pfaff <[email protected]>
  • Loading branch information
yew011 committed Jul 28, 2015
1 parent 1d3950e commit 7e9dcc0
Show file tree
Hide file tree
Showing 7 changed files with 219 additions and 174 deletions.
4 changes: 2 additions & 2 deletions lib/automake.mk
Original file line number Diff line number Diff line change
Expand Up @@ -347,8 +347,8 @@ lib_libopenvswitch_la_SOURCES += \
lib/netlink-socket.h \
lib/ovs-numa.c \
lib/ovs-numa.h \
lib/rtnetlink-link.c \
lib/rtnetlink-link.h \
lib/rtnetlink.c \
lib/rtnetlink.h \
lib/route-table.c \
lib/route-table.h
endif
Expand Down
13 changes: 6 additions & 7 deletions lib/netdev-linux.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@
#include "ovs-atomic.h"
#include "packets.h"
#include "poll-loop.h"
#include "rtnetlink-link.h"
#include "rtnetlink.h"
#include "shash.h"
#include "socket-util.h"
#include "sset.h"
Expand Down Expand Up @@ -541,7 +541,7 @@ netdev_rxq_linux_cast(const struct netdev_rxq *rx)
}

static void netdev_linux_update(struct netdev_linux *netdev,
const struct rtnetlink_link_change *)
const struct rtnetlink_change *)
OVS_REQUIRES(netdev->mutex);
static void netdev_linux_changed(struct netdev_linux *netdev,
unsigned int ifi_flags, unsigned int mask)
Expand Down Expand Up @@ -601,9 +601,9 @@ netdev_linux_run(void)
ofpbuf_use_stub(&buf, buf_stub, sizeof buf_stub);
error = nl_sock_recv(sock, &buf, false);
if (!error) {
struct rtnetlink_link_change change;
struct rtnetlink_change change;

if (rtnetlink_link_parse(&buf, &change)) {
if (rtnetlink_parse(&buf, &change)) {
struct netdev *netdev_ = netdev_from_name(change.ifname);
if (netdev_ && is_netdev_linux_class(netdev_->netdev_class)) {
struct netdev_linux *netdev = netdev_linux_cast(netdev_);
Expand Down Expand Up @@ -674,7 +674,7 @@ netdev_linux_changed(struct netdev_linux *dev,

static void
netdev_linux_update(struct netdev_linux *dev,
const struct rtnetlink_link_change *change)
const struct rtnetlink_change *change)
OVS_REQUIRES(dev->mutex)
{
if (change->nlmsg_type == RTM_NEWLINK) {
Expand All @@ -694,10 +694,9 @@ netdev_linux_update(struct netdev_linux *dev,
dev->ether_addr_error = 0;
}

dev->ifindex = change->ifi_index;
dev->ifindex = change->if_index;
dev->cache_valid |= VALID_IFINDEX;
dev->get_ifindex_error = 0;

} else {
netdev_linux_changed(dev, change->ifi_flags, 0);
}
Expand Down
12 changes: 6 additions & 6 deletions lib/route-table.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
#include "netlink-socket.h"
#include "ofpbuf.h"
#include "ovs-router.h"
#include "rtnetlink-link.h"
#include "rtnetlink.h"
#include "openvswitch/vlog.h"

VLOG_DEFINE_THIS_MODULE(route_table);
Expand Down Expand Up @@ -74,7 +74,7 @@ static void route_table_change(const struct route_table_msg *, void *);
static void route_map_clear(void);

static void name_table_init(void);
static void name_table_change(const struct rtnetlink_link_change *, void *);
static void name_table_change(const struct rtnetlink_change *, void *);

uint64_t
route_table_get_change_seq(void)
Expand Down Expand Up @@ -113,7 +113,7 @@ route_table_run(void)
{
ovs_mutex_lock(&route_table_mutex);
if (nln) {
rtnetlink_link_run();
rtnetlink_run();
nln_run(nln);

if (!route_table_valid) {
Expand All @@ -130,7 +130,7 @@ route_table_wait(void)
{
ovs_mutex_lock(&route_table_mutex);
if (nln) {
rtnetlink_link_wait();
rtnetlink_wait();
nln_wait(nln);
}
ovs_mutex_unlock(&route_table_mutex);
Expand Down Expand Up @@ -278,12 +278,12 @@ route_table_fallback_lookup(ovs_be32 ip_dst OVS_UNUSED,
static void
name_table_init(void)
{
name_notifier = rtnetlink_link_notifier_create(name_table_change, NULL);
name_notifier = rtnetlink_notifier_create(name_table_change, NULL);
}


static void
name_table_change(const struct rtnetlink_link_change *change OVS_UNUSED,
name_table_change(const struct rtnetlink_change *change OVS_UNUSED,
void *aux OVS_UNUSED)
{
/* Changes to interface status can cause routing table changes that some
Expand Down
138 changes: 0 additions & 138 deletions lib/rtnetlink-link.c

This file was deleted.

Loading

0 comments on commit 7e9dcc0

Please sign in to comment.