/*
- * Copyright (c) 2011, 2012 Nicira Networks.
+ * Copyright (c) 2011, 2012, 2013 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include "route-table.h"
-#include <assert.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <linux/rtnetlink.h>
route_table_register(void)
{
if (!register_count) {
- assert(!nln);
- assert(!route_notifier);
+ ovs_assert(!nln);
+ ovs_assert(!route_notifier);
nln = nln_create(NETLINK_ROUTE, RTNLGRP_IPV4_ROUTE,
(nln_parse_func *) route_table_parse, &rtmsg);
static int
route_table_reset(void)
{
- int error;
struct nl_dump dump;
struct rtgenmsg *rtmsg;
struct ofpbuf request, reply;
- static struct nl_sock *rtnl_sock;
route_map_clear();
route_table_valid = true;
- error = nl_sock_create(NETLINK_ROUTE, &rtnl_sock);
- if (error) {
- VLOG_WARN_RL(&rl, "failed to reset routing table, "
- "cannot create RTNETLINK_ROUTE socket");
- return error;
- }
-
ofpbuf_init(&request, 0);
nl_msg_put_nlmsghdr(&request, sizeof *rtmsg, RTM_GETROUTE, NLM_F_REQUEST);
rtmsg = ofpbuf_put_zeros(&request, sizeof *rtmsg);
rtmsg->rtgen_family = AF_INET;
- nl_dump_start(&dump, rtnl_sock, &request);
+ nl_dump_start(&dump, NETLINK_ROUTE, &request);
ofpbuf_uninit(&request);
while (nl_dump_next(&dump, &reply)) {
}
}
- error = nl_dump_done(&dump);
- nl_sock_destroy(rtnl_sock);
-
- return error;
+ return nl_dump_done(&dump);
}
[RTA_OIF] = { .type = NL_A_U32, .optional = false },
};
- static struct nlattr *attrs[ARRAY_SIZE(policy)];
+ struct nlattr *attrs[ARRAY_SIZE(policy)];
parsed = nl_policy_parse(buf, NLMSG_HDRLEN + sizeof(struct rtmsg),
policy, attrs, ARRAY_SIZE(policy));
const struct nlmsghdr *nlmsg;
nlmsg = buf->data;
- rtm = (const struct rtmsg *) ((const char *) buf->data + NLMSG_HDRLEN);
+ rtm = ofpbuf_at(buf, NLMSG_HDRLEN, sizeof *rtm);
if (rtm->rtm_family != AF_INET) {
VLOG_DBG_RL(&rl, "received non AF_INET rtnetlink route message");
static int
name_table_reset(void)
{
- int error;
struct nl_dump dump;
struct rtgenmsg *rtmsg;
struct ofpbuf request, reply;
- static struct nl_sock *rtnl_sock;
name_table_valid = true;
name_map_clear();
- error = nl_sock_create(NETLINK_ROUTE, &rtnl_sock);
- if (error) {
- VLOG_WARN_RL(&rl, "failed to create NETLINK_ROUTE socket");
- return error;
- }
ofpbuf_init(&request, 0);
nl_msg_put_nlmsghdr(&request, sizeof *rtmsg, RTM_GETLINK, NLM_F_REQUEST);
rtmsg = ofpbuf_put_zeros(&request, sizeof *rtmsg);
rtmsg->rtgen_family = AF_INET;
- nl_dump_start(&dump, rtnl_sock, &request);
+ nl_dump_start(&dump, NETLINK_ROUTE, &request);
ofpbuf_uninit(&request);
while (nl_dump_next(&dump, &reply)) {
hmap_insert(&name_map, &nn->node, hash_int(nn->ifi_index, 0));
}
}
- nl_sock_destroy(rtnl_sock);
return nl_dump_done(&dump);
}