-/* Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Nicira, Inc.
+/* Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5);
const struct ovsrec_bridge *br_cfg = cfg->bridges[i];
- if (strchr(br_cfg->name, '/')) {
+ if (strchr(br_cfg->name, '/') || strchr(br_cfg->name, '\\')) {
/* Prevent remote ovsdb-server users from accessing arbitrary
- * directories, e.g. consider a bridge named "../../../etc/". */
+ * directories, e.g. consider a bridge named "../../../etc/".
+ *
+ * Prohibiting "\" is only necessary on Windows but it's no great
+ * loss elsewhere. */
VLOG_WARN_RL(&rl, "ignoring bridge with invalid name \"%s\"",
br_cfg->name);
} else if (!shash_add_once(&new_br, br_cfg->name, br_cfg)) {
/* If there's no local interface or no IP address, give up. */
local_iface = iface_from_ofp_port(br, OFPP_LOCAL);
- if (!local_iface || !c->local_ip
- || !inet_pton(AF_INET, c->local_ip, &ip)) {
+ if (!local_iface || !c->local_ip || !ip_parse(c->local_ip, &ip.s_addr)) {
return;
}
/* Configure the IP address and netmask. */
if (!c->local_netmask
- || !inet_pton(AF_INET, c->local_netmask, &mask)
+ || !ip_parse(c->local_netmask, &mask.s_addr)
|| !mask.s_addr) {
mask.s_addr = guess_netmask(ip.s_addr);
}
/* Configure the default gateway. */
if (c->local_gateway
- && inet_pton(AF_INET, c->local_gateway, &gateway)
+ && ip_parse(c->local_gateway, &gateway.s_addr)
&& gateway.s_addr) {
if (!netdev_add_router(netdev, gateway)) {
VLOG_INFO("bridge %s: configured gateway "IP_FMT,