On Tue, 2017-05-30 at 09:31 -0700, Ben Pfaff wrote:
> It's becoming more common that OSes include "ip" but not "ifconfig", so
> it's best to avoid using the latter. This commit removes most references
> to "ifconfig" and replaces them by "ip". It also adds a build-time check
> to make it harder to introduce new uses of "ifconfig".
>
> There are important differences between "ifconfig" and "ip":
>
> - An "ifconfig" command that sets an IP address also brings the interface
> up, but a similar "ip addr add" command does not, so it is often necessary
> (or at least precautionary) to add an "ip link set <dev> up" command.
>
> - "ifconfig" can infer a netmask from an IP adddress, but "ip" always
> assumes /32 if none is given.
>
> - "ifconfig" with address 0.0.0.0 removes any configured IP address, but
> "ip addr add" does not, so "ifconfig <dev> 0.0.0.0" must be replaced by
> "ip addr del" or "ip addr flush".
>
> Signed-off-by: Ben Pfaff <[email protected]>
A couple of typos below that you can fix on push but otherwise looks
good.
Thanks!
- Greg
> ---
> I tested this via "make check", only. At least the Python changes need
> real testing before applying.
> v1->v2: Remove unrelated change (thanks Joe!).
> v2->v3: Fix errors pointed out by Russell Bryant.
> v3->v4: Infer /8, /16, /24 from IP addresses instead of relying on "ip".
> Add many "ip link set up" calls. Refactor Python code for working
> with interfaces. Thanks Greg and Hunt!
>
> Documentation/faq/configuration.rst | 2 +-
> Documentation/faq/issues.rst | 23 +++++-----
> Documentation/faq/vlan.rst | 9 ++--
> Documentation/howto/dpdk.rst | 14 +++---
> Documentation/howto/kvm.rst | 5 ++-
> Documentation/howto/userspace-tunneling.rst | 1 +
> Documentation/ref/ovs-vlan-test.8.rst | 3 +-
> Documentation/tutorials/ovs-advanced.rst | 11 +++--
> Makefile.am | 14 ++++++
> python/ovstest/rpcserver.py | 10 ++++-
> python/ovstest/util.py | 50
> +++++++++++++++-------
> python/ovstest/vswitch.py | 1 +
> tests/interface-reconfigure.at | 29 ++++++-------
> utilities/bugtool/ovs-bugtool.in | 6 +--
> utilities/ovs-ofctl.8.in | 4 +-
> utilities/ovs-vsctl.8.in | 2 +-
> ...ensource_libexec_InterfaceReconfigureVswitch.py | 6 +--
> .../opt_xensource_libexec_interface-reconfigure | 4 +-
> 18 files changed, 123 insertions(+), 71 deletions(-)
>
> diff --git a/Documentation/faq/configuration.rst
> b/Documentation/faq/configuration.rst
> index 8bd0e1104d51..1c93a55cc720 100644
> --- a/Documentation/faq/configuration.rst
> +++ b/Documentation/faq/configuration.rst
> @@ -83,7 +83,7 @@ Q: Does Open vSwitch support configuring a port in
> promiscuous mode?
> destined to a host are delivered to the host's NIC.
>
> This form of promiscuous mode is configured in the guest OS of the VMs
> on
> - your bridge, e.g. with "ifconfig".
> + your bridge, e.g. with "ip link set <device> promisc".
>
> - The VMware vSwitch uses a different definition of "promiscuous mode".
> When you configure promiscuous mode on a VMware vNIC, the vSwitch
> sends a
> diff --git a/Documentation/faq/issues.rst b/Documentation/faq/issues.rst
> index c60336a10569..c6e33f1a3617 100644
> --- a/Documentation/faq/issues.rst
> +++ b/Documentation/faq/issues.rst
> @@ -43,8 +43,9 @@ eth0. Help!
> itself. For example, assuming that eth0's IP address is 192.168.128.5,
> you
> could run the commands below to fix up the situation::
>
> - $ ifconfig eth0 0.0.0.0
> - $ ifconfig br0 192.168.128.5
> + $ ip addr flush dev eth0
> + $ ip addr addr 192.168.128.5/24 dev br0
Typo. $ ip addr add
> + $ ip link set br0 up
>
> (If your only connection to the machine running OVS is through the IP
> address in question, then you would want to run all of these commands on
> a
> @@ -56,7 +57,7 @@ eth0. Help!
> client that was listening on the physical Ethernet interface (e.g. eth0)
> and start one listening on the internal interface (e.g. br0). You might
> still need to manually clear the IP address from the physical interface
> - (e.g. with "ifconfig eth0 0.0.0.0").
> + (e.g. with "ip addr flush dev eth0").
>
> There is no compelling reason why Open vSwitch must work this way.
> However, this is the way that the Linux kernel bridge module has always
> @@ -285,7 +286,8 @@ Q: I created a tap device tap0, configured an IP address
> on it, and added it to
> a bridge, like this::
>
> $ tunctl -t tap0
> - $ ifconfig tap0 192.168.0.123
> + $ ip addr add 192.168.0.123/24 dev tap0
> + $ ip link set tap0 up
> $ ovs-vsctl add-br br0
> $ ovs-vsctl add-port br0 tap0
>
> @@ -299,13 +301,15 @@ network, but it doesn't work. Why not?
>
> $ ovs-vsctl add-br br0
> $ ovs-vsctl add-port br0 int0 -- set Interface int0 type=internal
> - $ ifconfig int0 192.168.0.123
> + $ ip addr addr 192.168.0.123/24 dev int0
Another typo of the same sort as above.
> + $ ip link set int0 up
>
> Even more simply, you can take advantage of the internal port that every
> bridge has under the name of the bridge::
>
> $ ovs-vsctl add-br br0
> - $ ifconfig br0 192.168.0.123
> + $ ip addr add 192.168.0.123/24 dev br0
> + $ ip link set br0 up
>
> In more detail, a "tap" device is an interface between the Linux (or BSD)
> network stack and a user program that opens it as a socket. When the
> "tap"
> @@ -380,9 +384,8 @@ keep changing internal ports MTU?
> A: By default Open vSwitch overrides the internal interfaces (e.g. br0)
> MTU. If you have just an internal interface (e.g. br0) and a physical
> interface (e.g. eth0), then every change in MTU to eth0 will be reflected
> - to br0. Any manual MTU configuration using `ip` or `ifconfig` on
> internal
> - interfaces is going to be overridden by Open vSwitch to match the current
> - bridge minimum.
> + to br0. Any manual MTU configuration using `ip` on internal interfaces
> is
> + going to be overridden by Open vSwitch to match the current bridge
> minimum.
>
> Sometimes this behavior is not desirable, for example with tunnels. The
> MTU of an internal interface can be explicitly set using the following
> @@ -392,7 +395,7 @@ keep changing internal ports MTU?
>
> After this, Open vSwitch will configure br0 MTU to 1450. Since this
> setting is in the database it will be persistent (compared to what
> happens
> - with `ip` or `ifconfig`).
> + with `ip`).
>
> The MTU configuration can be removed to restore the default behavior
> with::
> diff --git a/Documentation/faq/vlan.rst b/Documentation/faq/vlan.rst
> index 3b09d89b9438..991bb3d4c7a4 100644
> --- a/Documentation/faq/vlan.rst
> +++ b/Documentation/faq/vlan.rst
> @@ -190,7 +190,8 @@ Q: Can I configure an IP address on a VLAN?
> $ ovs-vsctl add-port br0 eth0
> $ ovs-vsctl add-port br0 vlan9 tag=9 \
> -- set interface vlan9 type=internal
> - $ ifconfig vlan9 192.168.0.7
> + $ ip addr add 192.168.0.7/24 dev vlan9
> + $ ip link set vlan0 up
>
> See also the following question.
>
> @@ -198,9 +199,11 @@ Q: I configured one IP address on VLAN 0 and another on
> VLAN 9, like this::
>
> $ ovs-vsctl add-br br0
> $ ovs-vsctl add-port br0 eth0
> - $ ifconfig br0 192.168.0.5
> + $ ip addr add 192.168.0.5/24 dev br0
> + $ ip link set br0 up
> $ ovs-vsctl add-port br0 vlan9 tag=9 -- set interface vlan9 type=internal
> - $ ifconfig vlan9 192.168.0.9
> + $ ip addr add 192.168.0.9/24 dev vlan9
> + $ ip link set vlan0 up
>
> but other hosts that are only on VLAN 0 can reach the IP address configured
> on
> VLAN 9. What's going on?
> diff --git a/Documentation/howto/dpdk.rst b/Documentation/howto/dpdk.rst
> index 3bd9e0760cdb..6d775319413b 100644
> --- a/Documentation/howto/dpdk.rst
> +++ b/Documentation/howto/dpdk.rst
> @@ -262,7 +262,7 @@ vHost ports:
> and CRC lengths (i.e. 18B) from the max supported frame size. So, to set
> the MTU for a 9018B Jumbo Frame::
>
> - $ ifconfig eth1 mtu 9000
> + $ ip link set eth1 mtu 9000
>
> When Jumbo Frames are enabled, the size of a DPDK port's mbuf segments are
> increased, such that a full Jumbo Frame of a specific size may be
> accommodated
> @@ -565,8 +565,10 @@ testcase and packet forwarding using DPDK testpmd
> application in the Guest VM.
> For users wishing to do packet forwarding using kernel stack below, you need
> to
> run the below commands on the guest::
>
> - $ ifconfig eth1 1.1.1.2/24
> - $ ifconfig eth2 1.1.2.2/24
> + $ ip addr add 1.1.1.2/24 dev eth1
> + $ ip addr add 1.1.2.2/24 dev eth2
> + $ ip link set eth1 up
> + $ ip link set eth2 up
> $ systemctl stop firewalld.service
> $ systemctl stop iptables.service
> $ sysctl -w net.ipv4.ip_forward=1
> @@ -656,8 +658,10 @@ devices to bridge ``br0``. Once complete, follow the
> below steps:
>
> Configure IP and enable interfaces::
>
> - $ ifconfig eth0 5.5.5.1/24 up
> - $ ifconfig eth1 90.90.90.1/24 up
> + $ ip addr add 5.5.5.1/24 dev eth0
> + $ ip addr add 90.90.90.1/24 dev eth1
> + $ ip link set eth0 up
> + $ ip link set eth1 up
>
> Configure IP forwarding and add route entries::
>
> diff --git a/Documentation/howto/kvm.rst b/Documentation/howto/kvm.rst
> index 29732a9b37ed..1ad2d979c309 100644
> --- a/Documentation/howto/kvm.rst
> +++ b/Documentation/howto/kvm.rst
> @@ -50,7 +50,7 @@ Create the following two files and store them in known
> locations. For example::
> #!/bin/sh
>
> switch='br0'
> - /sbin/ifconfig $1 0.0.0.0 up
> + ip link set $1 up
> ovs-vsctl add-port ${switch} $1
> EOF
>
> @@ -60,7 +60,8 @@ Create the following two files and store them in known
> locations. For example::
> #!/bin/sh
>
> switch='br0'
> - /sbin/ifconfig $1 0.0.0.0 down
> + ip addr flush dev $1
> + ip link set $1 down
> ovs-vsctl del-port ${switch} $1
> EOF
>
> diff --git a/Documentation/howto/userspace-tunneling.rst
> b/Documentation/howto/userspace-tunneling.rst
> index d978b3025cf8..0b488195370b 100644
> --- a/Documentation/howto/userspace-tunneling.rst
> +++ b/Documentation/howto/userspace-tunneling.rst
> @@ -103,6 +103,7 @@ Perform the folowing configuration on `host1`:
> #. Configure the IP address of the VM interface *in the VM itself*::
>
> $ ip addr add 192.168.1.1/24 dev eth0
> + $ ip link set eth0 up
>
> #. On `host1`, add a port for the VXLAN tunnel::
>
> diff --git a/Documentation/ref/ovs-vlan-test.8.rst
> b/Documentation/ref/ovs-vlan-test.8.rst
> index 59993817562e..d4fbabbdf39e 100644
> --- a/Documentation/ref/ovs-vlan-test.8.rst
> +++ b/Documentation/ref/ovs-vlan-test.8.rst
> @@ -93,7 +93,8 @@ with VLAN tag 10::
> -- add-port vlan-br eth1 \
> -- add-port vlan-br vlan-br-tag tag=10 \
> -- set Interface vlan-br-tag type=internal
> - ifconfig vlan-br-tag up 1.2.3.4
> + ip addr add 1.2.3.4/8 dev vlan-br-tag
> + ip link set vlan-br-tag up
>
> Run an :program:`ovs-vlan-test` server listening for client control traffic
> on
> `172.16.0.142` port `8080` and VLAN traffic on the default port of
> `1.2.3.3`::
> diff --git a/Documentation/tutorials/ovs-advanced.rst
> b/Documentation/tutorials/ovs-advanced.rst
> index 15785cf5b300..676137f3cd28 100644
> --- a/Documentation/tutorials/ovs-advanced.rst
> +++ b/Documentation/tutorials/ovs-advanced.rst
> @@ -103,10 +103,9 @@ From Open vSwitch's perspective, the bridge that you
> create this way is as real
> as any other. You can, for example, connect it to an OpenFlow controller or
> use ``ovs-ofctl`` to examine and modify it and its OpenFlow flow table. On
> the
> other hand, the bridge is not visible to the operating system's network
> stack,
> -so ``ifconfig`` or ``ip`` cannot see it or affect it, which means that
> -utilities like ``ping`` and ``tcpdump`` will not work either. (That has its
> -good side, too: you can't screw up your computer's network stack by
> -manipulating a sandboxed OVS.)
> +so ``ip`` cannot see it or affect it, which means that utilities like
> ``ping``
> +and ``tcpdump`` will not work either. (That has its good side, too: you
> can't
> +screw up your computer's network stack by manipulating a sandboxed OVS.)
>
> When you're done using OVS from the sandbox, exit the nested shell (by
> entering
> the "exit" shell command or pressing Control+D). This will kill the daemons
> @@ -267,9 +266,9 @@ In addition to adding a port, the ``ovs-vsctl`` command
> above sets its
> we can talk about OpenFlow port 1 and know that it corresponds to ``p1``.
>
> The ``ovs-ofctl`` command above brings up the simulated interfaces, which are
> -down initially, using an OpenFlow request. The effect is similar to
> ``ifconfig
> +down initially, using an OpenFlow request. The effect is similar to ``ip
> link
> up``, but the sandbox's interfaces are not visible to the operating system
> and
> -therefore ``ifconfig`` would not affect them.
> +therefore ``ip`` would not affect them.
>
> We have not configured anything related to VLANs or MAC learning. That's
> because we're going to implement those features in the flow table.
> diff --git a/Makefile.am b/Makefile.am
> index 4a6b5e5747fa..d810a5e72c72 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -311,6 +311,20 @@ thread-safety-check:
> EXTRA_DIST += build-aux/thread-safety-blacklist
> .PHONY: thread-safety-check
>
> +# Check that "ip" is used in preference to "ifconfig", because
> +# "ifconfig" is not installed ubiquitously anymore.
> +ALL_LOCAL += check-ifconfig
> +check-ifconfig:
> + @if test -e $(srcdir)/.git && (git --version) >/dev/null 2>&1 && \
> + (cd $(srcdir) && git --no-pager grep -l -E -e 'ifconfig' | \
> + $(EGREP) -v
> 'Makefile.am|ovs-vsctl-bashcomp|openvswitch-custom\.te'); \
> + then \
> + echo "See above for list of files that use or reference"; \
> + echo "'ifconfig'. Please use 'ip' instead."; \
> + exit 1; \
> + fi
> +.PHONY: check-ifconfig
> +
> if HAVE_GROFF
> ALL_LOCAL += manpage-check
> manpage-check: $(man_MANS) $(dist_man_MANS) $(noinst_man_MANS)
> diff --git a/python/ovstest/rpcserver.py b/python/ovstest/rpcserver.py
> index ca473e01ddc2..ab5b7e89e63a 100644
> --- a/python/ovstest/rpcserver.py
> +++ b/python/ovstest/rpcserver.py
> @@ -240,13 +240,15 @@ class TestArena(xmlrpc.XMLRPC):
> util.interface_up(bridge)
> (ip_addr, mask) = util.interface_get_ip(iface)
> util.interface_assign_ip(bridge, ip_addr, mask)
> + util.interface_up(bridge)
> util.move_routes(iface, bridge)
> - util.interface_assign_ip(iface, "0.0.0.0", "255.255.255.255")
> + util.interface_remove_ip(iface, ip_addr, mask)
> ret = vswitch.ovs_vsctl_add_port_to_bridge(bridge, iface)
> if ret == 0:
> self.ports.add(iface)
> else:
> util.interface_assign_ip(iface, ip_addr, mask)
> + util.interface_up(iface)
> util.move_routes(bridge, iface)
> vswitch.ovs_vsctl_del_bridge(bridge)
>
> @@ -327,6 +329,12 @@ class TestArena(xmlrpc.XMLRPC):
> """
> return util.interface_assign_ip(iface, ip_address, mask)
>
> + def xmlrpc_interface_remove_ip(self, iface, ip_address, mask):
> + """
> + This function allows to assing ip address to the given interface.
> + """
> + return util.interface_remove_ip(iface, ip_address, mask)
> +
> def xmlrpc_get_interface(self, address):
> """
> Finds first interface that has given address
> diff --git a/python/ovstest/util.py b/python/ovstest/util.py
> index 839c9e7dac61..db2ae989a2bd 100644
> --- a/python/ovstest/util.py
> +++ b/python/ovstest/util.py
> @@ -1,4 +1,4 @@
> -# Copyright (c) 2011, 2012 Nicira, Inc.
> +# Copyright (c) 2011, 2012, 2017 Nicira, Inc.
> #
> # Licensed under the Apache License, Version 2.0 (the "License");
> # you may not use this file except in compliance with the License.
> @@ -107,23 +107,42 @@ def interface_up(iface):
> """
> This function brings given iface up.
> """
> - ret, _out, _err = start_process(["ifconfig", iface, "up"])
> + ret, _out, _err = start_process(["ip", "link", "set", iface, "up"])
> return ret
>
>
> def interface_assign_ip(iface, ip_addr, mask):
> """
> - This function allows to assign IP address to an interface. If mask is an
> - empty string then ifconfig will decide what kind of mask to use. The
> - caller can also specify the mask by using CIDR notation in ip argument by
> - leaving the mask argument as an empty string. In case of success this
> - function returns 0.
> + This function adds an IP address to an interface. If mask is None
> + then a mask will be selected automatically. In case of success
> + this function returns 0.
> """
> - args = ["ifconfig", iface, ip_addr]
> + interface_ip_op(iface, ip_addr, mask, "add")
> +
> +
> +def interface_remove_ip(iface, ip_addr, mask):
> + """
> + This function removes an IP address from an interface. If mask is
> + None then a mask will be selected automatically. In case of
> + success this function returns 0.
> + """
> + interface_ip_op(iface, ip_addr, mask, "del")
> +
> +
> +def interface_ip_op(iface, ip_addr, mask, op):
> if mask is not None:
> - args.append("netmask")
> - args.append(mask)
> - ret, _out, _err = start_process(args)
> + arg = "%s/%s" % (ip_addr, mask)
> + elif '/' in ip_addr:
> + arg = ip_addr
> + else:
> + (x1, x2, x3, x4) = struct.unpack("BBBB", socket.inet_aton(ip_addr))
> + if x1 < 128:
> + arg = "%s/8" % ip_addr
> + elif x1 < 192:
> + arg = "%s/16" % ip_addr
> + else:
> + arg = "%s/24" % ip_addr
> + ret, _out, _err = start_process(["ip", "addr", op, arg, "dev", iface])
> return ret
>
>
> @@ -132,14 +151,13 @@ def interface_get_ip(iface):
> This function returns tuple - ip and mask that was assigned to the
> interface.
> """
> - args = ["ifconfig", iface]
> + args = ["ip", "addr", "show", iface]
> ret, out, _err = start_process(args)
>
> if ret == 0:
> - ip = re.search(r'inet addr:(\S+)', out)
> - mask = re.search(r'Mask:(\S+)', out)
> - if ip is not None and mask is not None:
> - return (ip.group(1), mask.group(1))
> + ip = re.search(r'inet (\S+)/(\S+)', out)
> + if ip is not None:
> + return (ip.group(1), ip.group(2))
> else:
> return ret
>
> diff --git a/python/ovstest/vswitch.py b/python/ovstest/vswitch.py
> index 1c6726ea0cc2..9d5b5cffd002 100644
> --- a/python/ovstest/vswitch.py
> +++ b/python/ovstest/vswitch.py
> @@ -41,6 +41,7 @@ def ovs_vsctl_del_pbridge(bridge, iface):
> """
> (ip_addr, mask) = util.interface_get_ip(bridge)
> util.interface_assign_ip(iface, ip_addr, mask)
> + util.interface_up(iface)
> util.move_routes(bridge, iface)
> return ovs_vsctl_del_bridge(bridge)
>
> diff --git a/tests/interface-reconfigure.at b/tests/interface-reconfigure.at
> index b4e455d94228..a4c0dca07569 100644
> --- a/tests/interface-reconfigure.at
> +++ b/tests/interface-reconfigure.at
> @@ -34,7 +34,6 @@ EOF
>
> for utility in \
> sbin/ethtool \
> - sbin/ifconfig \
> sbin/ifdown \
> sbin/ifup \
> sbin/ip \
> @@ -715,7 +714,7 @@ configure_datapath: extra bonds - []
> Applying changes to /etc/sysconfig/network-scripts/route-xenbr2 configuration
> Applying changes to /etc/sysconfig/network configuration
> Applying changes to /etc/sysconfig/network-scripts/ifcfg-xenbr2 configuration
> -/sbin/ifconfig eth2 up mtu 1500
> +/sbin/ip link set eth2 up mtu 1500
> /sbin/ethtool -K eth2 gro off lro off
> /usr/sbin/ovs-vlan-bug-workaround eth2 on
> /usr/bin/ovs-vsctl --timeout=20
> @@ -763,7 +762,7 @@ action_down: xenbr2
> deconfigure ipdev xenbr2 on xenbr2
> deconfigure_bridge: bridge - xenbr2
> action_down: bring down physical devices - ['eth2']
> -/sbin/ifconfig eth2 down
> +/sbin/ip link set eth2 down
> /usr/bin/ovs-vsctl --timeout=20
> --with-iface --if-exists del-port xenbr2
> --if-exists del-br xenbr2
> @@ -790,7 +789,7 @@ configure_datapath: extra ports - []
> configure_datapath: extra bonds - []
> Applying changes to /etc/sysconfig/network-scripts/route-xapi3 configuration
> Applying changes to /etc/sysconfig/network-scripts/ifcfg-xapi3 configuration
> -/sbin/ifconfig eth3 up mtu 1500
> +/sbin/ip link set eth3 up mtu 1500
> /sbin/ethtool -K eth3 gro off lro off
> /usr/sbin/ovs-vlan-bug-workaround eth3 on
> /usr/bin/ovs-vsctl --timeout=20
> @@ -837,7 +836,7 @@ deconfigure_bridge: bridge - xapi3
> action_down: no more masters, bring down slave xenbr3
> deconfigure_bridge: bridge - xenbr3
> action_down: bring down physical devices - ['eth3']
> -/sbin/ifconfig eth3 down
> +/sbin/ip link set eth3 down
> /usr/bin/ovs-vsctl --timeout=20
> --with-iface --if-exists del-port xapi3
> --if-exists del-br xapi3
> @@ -876,10 +875,10 @@ netdev: down: device xenbr0 does not exist, ignoring
> netdev: down: device xenbr1 does not exist, ignoring
> Applying changes to /etc/sysconfig/network-scripts/route-xapi1 configuration
> Applying changes to /etc/sysconfig/network-scripts/ifcfg-xapi1 configuration
> -/sbin/ifconfig eth0 up mtu 1500
> +/sbin/ip link set eth0 up mtu 1500
> /sbin/ethtool -K eth0 gro off lro off
> /usr/sbin/ovs-vlan-bug-workaround eth0 on
> -/sbin/ifconfig eth1 up mtu 1500
> +/sbin/ip link set eth1 up mtu 1500
> /sbin/ethtool -K eth1 gro off lro off
> /usr/sbin/ovs-vlan-bug-workaround eth1 off
> /usr/bin/ovs-vsctl --timeout=20
> @@ -897,7 +896,7 @@ Applying changes to
> /etc/sysconfig/network-scripts/ifcfg-xapi1 configuration
> br-set-external-id xapi1 xs-network-uuids
> 45cbbb43-113d-a712-3231-c6463f253cef;99be2da4-6c33-6f8e-49ea-3bc592fe3c85
> /sbin/ifup xapi1
> action_up: bring up bond0
> -/sbin/ifconfig bond0 up
> +/sbin/ip link set bond0 up
> /sbin/update-issue
> Committing changes to /etc/sysconfig/network-scripts/route-xapi1
> configuration
> Committing changes to /etc/sysconfig/network-scripts/ifcfg-xapi1
> configuration
> @@ -927,8 +926,8 @@ action_down: xapi1
> deconfigure ipdev xapi1 on xapi1
> deconfigure_bridge: bridge - xapi1
> action_down: bring down physical devices - ['eth0', 'eth1']
> -/sbin/ifconfig eth0 down
> -/sbin/ifconfig eth1 down
> +/sbin/ip link set eth0 down
> +/sbin/ip link set eth1 down
> /usr/bin/ovs-vsctl --timeout=20
> --with-iface --if-exists del-port xapi1
> --if-exists del-br xapi1
> @@ -966,10 +965,10 @@ netdev: down: device xenbr0 does not exist, ignoring
> netdev: down: device xenbr1 does not exist, ignoring
> Applying changes to /etc/sysconfig/network-scripts/route-xapi2 configuration
> Applying changes to /etc/sysconfig/network-scripts/ifcfg-xapi2 configuration
> -/sbin/ifconfig eth0 up mtu 1500
> +/sbin/ip link set eth0 up mtu 1500
> /sbin/ethtool -K eth0 gro off lro off
> /usr/sbin/ovs-vlan-bug-workaround eth0 on
> -/sbin/ifconfig eth1 up mtu 1500
> +/sbin/ip link set eth1 up mtu 1500
> /sbin/ethtool -K eth1 gro off lro off
> /usr/sbin/ovs-vlan-bug-workaround eth1 off
> /usr/bin/ovs-vsctl --timeout=20
> @@ -991,7 +990,7 @@ Applying changes to
> /etc/sysconfig/network-scripts/ifcfg-xapi2 configuration
> set Interface xapi2 MAC="00:22:19:22:4b:af"
> /sbin/ifup xapi2
> action_up: bring up bond0
> -/sbin/ifconfig bond0 up
> +/sbin/ip link set bond0 up
> /sbin/update-issue
> Committing changes to /etc/sysconfig/network-scripts/route-xapi2
> configuration
> Committing changes to /etc/sysconfig/network-scripts/ifcfg-xapi2
> configuration
> @@ -1023,8 +1022,8 @@ deconfigure_bridge: bridge - xapi2
> action_down: no more masters, bring down slave xapi1
> deconfigure_bridge: bridge - xapi1
> action_down: bring down physical devices - ['eth0', 'eth1']
> -/sbin/ifconfig eth0 down
> -/sbin/ifconfig eth1 down
> +/sbin/ip link set eth0 down
> +/sbin/ip link set eth1 down
> /usr/bin/ovs-vsctl --timeout=20
> --with-iface --if-exists del-port xapi2
> --if-exists del-br xapi2
> diff --git a/utilities/bugtool/ovs-bugtool.in
> b/utilities/bugtool/ovs-bugtool.in
> index 506e42876934..5eb3440b7b2c 100755
> --- a/utilities/bugtool/ovs-bugtool.in
> +++ b/utilities/bugtool/ovs-bugtool.in
> @@ -14,7 +14,7 @@
> # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
> #
> # Copyright (c) 2005, 2007 XenSource Ltd.
> -# Copyright (c) 2010, 2011, 2012, 2013, 2015, 2016 Nicira, Inc.
> +# Copyright (c) 2010, 2011, 2012, 2013, 2015, 2016, 2017 Nicira, Inc.
>
> #
> # To add new entries to the bugtool, you need to:
> @@ -137,7 +137,7 @@ DPKG_QUERY = 'dpkg-query'
> ETHTOOL = 'ethtool'
> FDISK = 'fdisk'
> FIND = 'find'
> -IFCONFIG = 'ifconfig'
> +IP = 'ip'
> IPTABLES = 'iptables'
> ISCSIADM = 'iscsiadm'
> LOSETUP = 'losetup'
> @@ -582,7 +582,7 @@ exclude those logs from the archive.
> file_output(CAP_NETWORK_CONFIG, [OPENVSWITCH_DEFAULT_SWITCH,
> OPENVSWITCH_SYSCONFIG_SWITCH])
>
> - cmd_output(CAP_NETWORK_INFO, [IFCONFIG, '-a'])
> + cmd_output(CAP_NETWORK_INFO, [IP, 'addr', 'show'])
> cmd_output(CAP_NETWORK_INFO, [ROUTE, '-n'])
> cmd_output(CAP_NETWORK_INFO, [ARP, '-n'])
> cmd_output(CAP_NETWORK_INFO, [NETSTAT, '-an'])
> diff --git a/utilities/ovs-ofctl.8.in b/utilities/ovs-ofctl.8.in
> index d7100b7576be..9013a1e8d022 100644
> --- a/utilities/ovs-ofctl.8.in
> +++ b/utilities/ovs-ofctl.8.in
> @@ -136,8 +136,8 @@ may be any one of the following:
> .RS
> .IQ \fBup\fR
> .IQ \fBdown\fR
> -Enable or disable the interface. This is equivalent to \fBifconfig
> -up\fR or \fBifconfig down\fR on a Unix system.
> +Enable or disable the interface. This is equivalent to \fBip
> +link set up\fR or \fBip link set down\fR on a Unix system.
> .
> .IP \fBstp\fR
> .IQ \fBno\-stp\fR
> diff --git a/utilities/ovs-vsctl.8.in b/utilities/ovs-vsctl.8.in
> index 6aca267a7067..e5e565e8a58a 100644
> --- a/utilities/ovs-vsctl.8.in
> +++ b/utilities/ovs-vsctl.8.in
> @@ -600,7 +600,7 @@ access port for VLAN 10, and configure it with an IP
> address:
> .IP
> .B "ovs\-vsctl add\-port br0 vlan10 tag=10 \-\- set Interface vlan10
> type=internal"
> .IP
> -.B "ifconfig vlan10 192.168.0.123"
> +.B "ip addr add 192.168.0.123/24 dev vlan10"
> .
> .PP
> Add a GRE tunnel port \fBgre0\fR to remote IP address 1.2.3.4 to
> diff --git a/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py
> b/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py
> index c65fb3da44fc..53468b7064e5 100644
> --- a/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py
> +++ b/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py
> @@ -1,5 +1,5 @@
> # Copyright (c) 2008,2009,2011 Citrix Systems, Inc.
> -# Copyright (c) 2009,2010,2011,2012,2013 Nicira, Inc.
> +# Copyright (c) 2009,2010,2011,2012,2013,2017 Nicira, Inc.
> #
> # This program is free software; you can redistribute it and/or modify
> # it under the terms of the GNU Lesser General Public License as published
> @@ -25,7 +25,7 @@ def netdev_down(netdev):
> if not netdev_exists(netdev):
> log("netdev: down: device %s does not exist, ignoring" % netdev)
> return
> - run_command(["/sbin/ifconfig", netdev, 'down'])
> + run_command(["/sbin/ip", "link", "set", netdev, 'down'])
>
> def netdev_up(netdev, mtu=None):
> """Bring up a bare network device"""
> @@ -37,7 +37,7 @@ def netdev_up(netdev, mtu=None):
> else:
> mtu = []
>
> - run_command(["/sbin/ifconfig", netdev, 'up'] + mtu)
> + run_command(["/sbin/ip", "link", "set", netdev, 'up'] + mtu)
>
> # This is a list of drivers that do support VLAN tx or rx acceleration, but
> # to which the VLAN bug workaround should not be applied. This could be
> diff --git a/xenserver/opt_xensource_libexec_interface-reconfigure
> b/xenserver/opt_xensource_libexec_interface-reconfigure
> index ea4a7421facf..a82043fb5b12 100755
> --- a/xenserver/opt_xensource_libexec_interface-reconfigure
> +++ b/xenserver/opt_xensource_libexec_interface-reconfigure
> @@ -147,7 +147,7 @@ def netdev_remap_name(pif, already_renamed=[]):
> def rename_netdev(old_name, new_name):
> raise Error("Trying to rename %s to %s - This functionality has been
> removed" % (old_name, new_name))
> # log("Changing the name of %s to %s" % (old_name, new_name))
> - # run_command(['/sbin/ifconfig', old_name, 'down'])
> + # run_command(['/sbin/ip', 'link', 'set', old_name, 'down'])
> # if not run_command(['/sbin/ip', 'link', 'set', old_name, 'name',
> new_name]):
> # raise Error("Could not rename %s to %s" % (old_name, new_name))
>
> @@ -191,7 +191,7 @@ def ifdown(netdev):
> return
> if not os.path.exists("%s/etc/sysconfig/network-scripts/ifcfg-%s" %
> (root_prefix(), netdev)):
> log("ifdown: device %s exists but ifcfg-%s does not" %
> (netdev,netdev))
> - run_command(["/sbin/ifconfig", netdev, 'down'])
> + run_command(["/sbin/ip", "link", "set", netdev, 'down'])
> return
> run_command(["/sbin/ifdown", netdev])
>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev