git://git.onelab.eu
/
sliver-openvswitch.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vlog: Take advantage of relaxed "-v" syntax through the tree.
[sliver-openvswitch.git]
/
vswitchd
/
ovs-brcompatd.c
diff --git
a/vswitchd/ovs-brcompatd.c
b/vswitchd/ovs-brcompatd.c
index
3dd25c3
..
adabe89
100644
(file)
--- a/
vswitchd/ovs-brcompatd.c
+++ b/
vswitchd/ovs-brcompatd.c
@@
-1,4
+1,4
@@
-/* Copyright (c) 2008, 2009, 2010, 2011
Nicira Networks
+/* Copyright (c) 2008, 2009, 2010, 2011
, 2012 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@
-28,6
+28,7
@@
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
+#include <sys/wait.h>
#include <sys/stat.h>
#include <time.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <time.h>
#include <fcntl.h>
@@
-43,13
+44,13
@@
#include "leak-checker.h"
#include "netdev.h"
#include "netlink.h"
#include "leak-checker.h"
#include "netdev.h"
#include "netlink.h"
+#include "netlink-notifier.h"
#include "netlink-socket.h"
#include "ofpbuf.h"
#include "openvswitch/brcompat-netlink.h"
#include "packets.h"
#include "poll-loop.h"
#include "process.h"
#include "netlink-socket.h"
#include "ofpbuf.h"
#include "openvswitch/brcompat-netlink.h"
#include "packets.h"
#include "poll-loop.h"
#include "process.h"
-#include "rtnetlink.h"
#include "rtnetlink-link.h"
#include "signals.h"
#include "sset.h"
#include "rtnetlink-link.h"
#include "signals.h"
#include "sset.h"
@@
-75,7
+76,7
@@
static char *appctl_program;
static char *vsctl_program;
/* Options that we should generally pass to ovs-vsctl. */
static char *vsctl_program;
/* Options that we should generally pass to ovs-vsctl. */
-#define VSCTL_OPTIONS "--timeout=5", "-v
ANY:console:WARN
"
+#define VSCTL_OPTIONS "--timeout=5", "-v
console:warn
"
/* Netlink socket to bridge compatibility kernel module. */
static struct nl_sock *brc_sock;
/* Netlink socket to bridge compatibility kernel module. */
static struct nl_sock *brc_sock;
@@
-455,7
+456,7
@@
handle_fdb_query_cmd(struct ofpbuf *buffer)
uint32_t seq;
int error;
uint32_t seq;
int error;
- /* Parse the command received from brcompat
_mod
. */
+ /* Parse the command received from brcompat. */
error = parse_command(buffer, &seq, &linux_name, NULL, &count, &skip);
if (error) {
return error;
error = parse_command(buffer, &seq, &linux_name, NULL, &count, &skip);
if (error) {
return error;
@@
-488,7
+489,7
@@
handle_fdb_query_cmd(struct ofpbuf *buffer)
struct mac *mac = &local_macs[n_local_macs];
struct netdev *netdev;
struct mac *mac = &local_macs[n_local_macs];
struct netdev *netdev;
- error = netdev_open
_default(iface_name
, &netdev);
+ error = netdev_open
(iface_name, "system"
, &netdev);
if (!error) {
if (!netdev_get_etheraddr(netdev, mac->addr)) {
n_local_macs++;
if (!error) {
if (!netdev_get_etheraddr(netdev, mac->addr)) {
n_local_macs++;
@@
-653,56
+654,53
@@
handle_get_ports_cmd(struct ofpbuf *buffer)
return 0;
}
return 0;
}
-static
struct ofpbuf *
-brc_recv_update__(
void
)
+static
bool
+brc_recv_update__(
struct ofpbuf *buffer
)
{
for (;;) {
{
for (;;) {
- struct ofpbuf *buffer;
- int retval;
-
- retval = nl_sock_recv(brc_sock, &buffer, false);
+ int retval = nl_sock_recv(brc_sock, buffer, false);
switch (retval) {
case 0:
if (nl_msg_nlmsgerr(buffer, NULL)
|| nl_msg_nlmsghdr(buffer)->nlmsg_type == NLMSG_DONE) {
break;
}
switch (retval) {
case 0:
if (nl_msg_nlmsgerr(buffer, NULL)
|| nl_msg_nlmsghdr(buffer)->nlmsg_type == NLMSG_DONE) {
break;
}
- return
buffer
;
+ return
true
;
case ENOBUFS:
break;
case EAGAIN:
case ENOBUFS:
break;
case EAGAIN:
- return
NULL
;
+ return
false
;
default:
VLOG_WARN_RL(&rl, "brc_recv_update: %s", strerror(retval));
default:
VLOG_WARN_RL(&rl, "brc_recv_update: %s", strerror(retval));
- return
NULL
;
+ return
false
;
}
}
- ofpbuf_delete(buffer);
}
}
static void
brc_recv_update(void)
{
}
}
static void
brc_recv_update(void)
{
- struct ofpbuf *buffer;
struct genlmsghdr *genlmsghdr;
struct genlmsghdr *genlmsghdr;
+ uint64_t buffer_stub[1024 / 8];
+ struct ofpbuf buffer;
-
buffer = brc_recv_update__(
);
- if (!b
uffer
) {
-
return
;
+
ofpbuf_use_stub(&buffer, buffer_stub, sizeof buffer_stub
);
+ if (!b
rc_recv_update__(&buffer)
) {
+
goto error
;
}
}
- genlmsghdr = nl_msg_genlmsghdr(buffer);
+ genlmsghdr = nl_msg_genlmsghdr(
&
buffer);
if (!genlmsghdr) {
VLOG_WARN_RL(&rl, "received packet too short for generic NetLink");
goto error;
}
if (!genlmsghdr) {
VLOG_WARN_RL(&rl, "received packet too short for generic NetLink");
goto error;
}
- if (nl_msg_nlmsghdr(buffer)->nlmsg_type != brc_family) {
+ if (nl_msg_nlmsghdr(
&
buffer)->nlmsg_type != brc_family) {
VLOG_DBG_RL(&rl, "received type (%"PRIu16") != brcompat family (%d)",
VLOG_DBG_RL(&rl, "received type (%"PRIu16") != brcompat family (%d)",
- nl_msg_nlmsghdr(buffer)->nlmsg_type, brc_family);
+ nl_msg_nlmsghdr(
&
buffer)->nlmsg_type, brc_family);
goto error;
}
goto error;
}
@@
-724,35
+722,35
@@
brc_recv_update(void)
* (XenServer Tools 5.5.0 does not exhibit this behavior, and neither does
* a VM without Tools installed at all.)
*/
* (XenServer Tools 5.5.0 does not exhibit this behavior, and neither does
* a VM without Tools installed at all.)
*/
- rtnetlink_link_
notifier_
run();
+ rtnetlink_link_run();
switch (genlmsghdr->cmd) {
case BRC_GENL_C_DP_ADD:
switch (genlmsghdr->cmd) {
case BRC_GENL_C_DP_ADD:
- handle_bridge_cmd(buffer, true);
+ handle_bridge_cmd(
&
buffer, true);
break;
case BRC_GENL_C_DP_DEL:
break;
case BRC_GENL_C_DP_DEL:
- handle_bridge_cmd(buffer, false);
+ handle_bridge_cmd(
&
buffer, false);
break;
case BRC_GENL_C_PORT_ADD:
break;
case BRC_GENL_C_PORT_ADD:
- handle_port_cmd(buffer, true);
+ handle_port_cmd(
&
buffer, true);
break;
case BRC_GENL_C_PORT_DEL:
break;
case BRC_GENL_C_PORT_DEL:
- handle_port_cmd(buffer, false);
+ handle_port_cmd(
&
buffer, false);
break;
case BRC_GENL_C_FDB_QUERY:
break;
case BRC_GENL_C_FDB_QUERY:
- handle_fdb_query_cmd(buffer);
+ handle_fdb_query_cmd(
&
buffer);
break;
case BRC_GENL_C_GET_BRIDGES:
break;
case BRC_GENL_C_GET_BRIDGES:
- handle_get_bridges_cmd(buffer);
+ handle_get_bridges_cmd(
&
buffer);
break;
case BRC_GENL_C_GET_PORTS:
break;
case BRC_GENL_C_GET_PORTS:
- handle_get_ports_cmd(buffer);
+ handle_get_ports_cmd(
&
buffer);
break;
default:
break;
default:
@@
-762,7
+760,7
@@
brc_recv_update(void)
}
error:
}
error:
- ofpbuf_
delete(
buffer);
+ ofpbuf_
uninit(&
buffer);
}
static void
}
static void
@@
-790,7
+788,7
@@
netdev_changed_cb(const struct rtnetlink_link_change *change,
port_name, br_name);
run_vsctl(vsctl_program, VSCTL_OPTIONS,
port_name, br_name);
run_vsctl(vsctl_program, VSCTL_OPTIONS,
- "--", "--if-exists", "del-port",
br_name,
port_name,
+ "--", "--if-exists", "del-port", port_name,
"--", "comment", "ovs-brcompatd:", port_name, "disappeared",
(char *) NULL);
}
"--", "comment", "ovs-brcompatd:", port_name, "disappeared",
(char *) NULL);
}
@@
-799,7
+797,7
@@
int
main(int argc, char *argv[])
{
extern struct vlog_module VLM_reconnect;
main(int argc, char *argv[])
{
extern struct vlog_module VLM_reconnect;
- struct
rtnetlink_notifier
link_notifier;
+ struct
nln_notifier *
link_notifier;
struct unixctl_server *unixctl;
int retval;
struct unixctl_server *unixctl;
int retval;
@@
-823,26
+821,25
@@
main(int argc, char *argv[])
"\"brcompat\" kernel module.");
}
"\"brcompat\" kernel module.");
}
-
- rtnetlink_link_notifier_register(&link_notifier, netdev_changed_cb, NULL);
+ link_notifier = rtnetlink_link_notifier_create(netdev_changed_cb, NULL);
daemonize_complete();
for (;;) {
unixctl_server_run(unixctl);
daemonize_complete();
for (;;) {
unixctl_server_run(unixctl);
- rtnetlink_link_
notifier_
run();
+ rtnetlink_link_run();
brc_recv_update();
netdev_run();
nl_sock_wait(brc_sock, POLLIN);
unixctl_server_wait(unixctl);
brc_recv_update();
netdev_run();
nl_sock_wait(brc_sock, POLLIN);
unixctl_server_wait(unixctl);
- rtnetlink_link_
notifier_
wait();
+ rtnetlink_link_wait();
netdev_wait();
poll_block();
}
netdev_wait();
poll_block();
}
- rtnetlink_link_notifier_
unregister(&
link_notifier);
+ rtnetlink_link_notifier_
destroy(
link_notifier);
return 0;
}
return 0;
}
@@
-880,12
+877,11
@@
parse_options(int argc, char *argv[])
}
switch (c) {
}
switch (c) {
- case 'H':
case 'h':
usage();
case 'V':
case 'h':
usage();
case 'V':
-
OVS_PRINT_VERSION
(0, 0);
+
ovs_print_version
(0, 0);
exit(EXIT_SUCCESS);
case OPT_APPCTL:
exit(EXIT_SUCCESS);
case OPT_APPCTL: