Split bridge.h into three separate files
Following the renaming of the bridge management APIs, we can now
split the source file into 3 corresponding pieces
* src/util/virnetdev.c: APIs for any type of network interface
* src/util/virnetdevbridge.c: APIs for bridge interfaces
* src/util/virnetdevtap.c: APIs for TAP interfaces
* src/util/virnetdev.c, src/util/virnetdev.h,
src/util/virnetdevbridge.c, src/util/virnetdevbridge.h,
src/util/virnetdevtap.c, src/util/virnetdevtap.h: Copied
from bridge.{c,h}
* src/util/bridge.c, src/util/bridge.h: Split into 3 pieces
* src/lxc/lxc_driver.c, src/network/bridge_driver.c,
src/openvz/openvz_driver.c, src/qemu/qemu_command.c,
src/qemu/qemu_conf.h, src/uml/uml_conf.c, src/uml/uml_conf.h,
src/uml/uml_driver.c: Update #include directives
2011-11-02 13:41:58 +00:00
|
|
|
/*
|
2016-05-04 17:18:16 +00:00
|
|
|
* Copyright (C) 2007-2016 Red Hat, Inc.
|
Split bridge.h into three separate files
Following the renaming of the bridge management APIs, we can now
split the source file into 3 corresponding pieces
* src/util/virnetdev.c: APIs for any type of network interface
* src/util/virnetdevbridge.c: APIs for bridge interfaces
* src/util/virnetdevtap.c: APIs for TAP interfaces
* src/util/virnetdev.c, src/util/virnetdev.h,
src/util/virnetdevbridge.c, src/util/virnetdevbridge.h,
src/util/virnetdevtap.c, src/util/virnetdevtap.h: Copied
from bridge.{c,h}
* src/util/bridge.c, src/util/bridge.h: Split into 3 pieces
* src/lxc/lxc_driver.c, src/network/bridge_driver.c,
src/openvz/openvz_driver.c, src/qemu/qemu_command.c,
src/qemu/qemu_conf.h, src/uml/uml_conf.c, src/uml/uml_conf.h,
src/uml/uml_driver.c: Update #include directives
2011-11-02 13:41:58 +00:00
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
2012-09-20 22:30:55 +00:00
|
|
|
* License along with this library. If not, see
|
2012-07-21 10:06:23 +00:00
|
|
|
* <http://www.gnu.org/licenses/>.
|
Split bridge.h into three separate files
Following the renaming of the bridge management APIs, we can now
split the source file into 3 corresponding pieces
* src/util/virnetdev.c: APIs for any type of network interface
* src/util/virnetdevbridge.c: APIs for bridge interfaces
* src/util/virnetdevtap.c: APIs for TAP interfaces
* src/util/virnetdev.c, src/util/virnetdev.h,
src/util/virnetdevbridge.c, src/util/virnetdevbridge.h,
src/util/virnetdevtap.c, src/util/virnetdevtap.h: Copied
from bridge.{c,h}
* src/util/bridge.c, src/util/bridge.h: Split into 3 pieces
* src/lxc/lxc_driver.c, src/network/bridge_driver.c,
src/openvz/openvz_driver.c, src/qemu/qemu_command.c,
src/qemu/qemu_conf.h, src/uml/uml_conf.c, src/uml/uml_conf.h,
src/uml/uml_driver.c: Update #include directives
2011-11-02 13:41:58 +00:00
|
|
|
*
|
|
|
|
* Authors:
|
|
|
|
* Mark McLoughlin <markmc@redhat.com>
|
|
|
|
* Daniel P. Berrange <berrange@redhat.com>
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __VIR_NETDEV_H__
|
|
|
|
# define __VIR_NETDEV_H__
|
|
|
|
|
2013-06-13 06:26:20 +00:00
|
|
|
# include <net/if.h>
|
|
|
|
|
2015-02-23 15:38:29 +00:00
|
|
|
# include "virbitmap.h"
|
Split src/util/network.{c,h} into 5 pieces
The src/util/network.c file is a dumping ground for many different
APIs. Split it up into 5 pieces, along functional lines
- src/util/virnetdevbandwidth.c: virNetDevBandwidth type & helper APIs
- src/util/virnetdevvportprofile.c: virNetDevVPortProfile type & helper APIs
- src/util/virsocketaddr.c: virSocketAddr and APIs
- src/conf/netdev_bandwidth_conf.c: XML parsing / formatting
for virNetDevBandwidth
- src/conf/netdev_vport_profile_conf.c: XML parsing / formatting
for virNetDevVPortProfile
* src/util/network.c, src/util/network.h: Split into 5 pieces
* src/conf/netdev_bandwidth_conf.c, src/conf/netdev_bandwidth_conf.h,
src/conf/netdev_vport_profile_conf.c, src/conf/netdev_vport_profile_conf.h,
src/util/virnetdevbandwidth.c, src/util/virnetdevbandwidth.h,
src/util/virnetdevvportprofile.c, src/util/virnetdevvportprofile.h,
src/util/virsocketaddr.c, src/util/virsocketaddr.h: New pieces
* daemon/libvirtd.h, daemon/remote.c, src/conf/domain_conf.c,
src/conf/domain_conf.h, src/conf/network_conf.c,
src/conf/network_conf.h, src/conf/nwfilter_conf.h,
src/esx/esx_util.h, src/network/bridge_driver.c,
src/qemu/qemu_conf.c, src/rpc/virnetsocket.c,
src/rpc/virnetsocket.h, src/util/dnsmasq.h, src/util/interface.h,
src/util/iptables.h, src/util/macvtap.c, src/util/macvtap.h,
src/util/virnetdev.h, src/util/virnetdevtap.c,
tools/virsh.c: Update include files
2011-11-02 15:40:08 +00:00
|
|
|
# include "virsocketaddr.h"
|
2012-07-17 12:07:59 +00:00
|
|
|
# include "virmacaddr.h"
|
2012-12-13 14:52:25 +00:00
|
|
|
# include "virpci.h"
|
2016-05-04 17:18:16 +00:00
|
|
|
# include "virnetdevvlan.h"
|
Split bridge.h into three separate files
Following the renaming of the bridge management APIs, we can now
split the source file into 3 corresponding pieces
* src/util/virnetdev.c: APIs for any type of network interface
* src/util/virnetdevbridge.c: APIs for bridge interfaces
* src/util/virnetdevtap.c: APIs for TAP interfaces
* src/util/virnetdev.c, src/util/virnetdev.h,
src/util/virnetdevbridge.c, src/util/virnetdevbridge.h,
src/util/virnetdevtap.c, src/util/virnetdevtap.h: Copied
from bridge.{c,h}
* src/util/bridge.c, src/util/bridge.h: Split into 3 pieces
* src/lxc/lxc_driver.c, src/network/bridge_driver.c,
src/openvz/openvz_driver.c, src/qemu/qemu_command.c,
src/qemu/qemu_conf.h, src/uml/uml_conf.c, src/uml/uml_conf.h,
src/uml/uml_driver.c: Update #include directives
2011-11-02 13:41:58 +00:00
|
|
|
|
2013-06-13 06:26:20 +00:00
|
|
|
# ifdef HAVE_STRUCT_IFREQ
|
|
|
|
typedef struct ifreq virIfreq;
|
|
|
|
# else
|
|
|
|
typedef void virIfreq;
|
|
|
|
# endif
|
|
|
|
|
2014-09-20 18:39:44 +00:00
|
|
|
typedef enum {
|
|
|
|
VIR_NETDEV_RX_FILTER_MODE_NONE = 0,
|
|
|
|
VIR_NETDEV_RX_FILTER_MODE_NORMAL,
|
|
|
|
VIR_NETDEV_RX_FILTER_MODE_ALL,
|
|
|
|
|
|
|
|
VIR_NETDEV_RX_FILTER_MODE_LAST
|
|
|
|
} virNetDevRxFilterMode;
|
|
|
|
VIR_ENUM_DECL(virNetDevRxFilterMode)
|
|
|
|
|
|
|
|
typedef struct _virNetDevRxFilter virNetDevRxFilter;
|
|
|
|
typedef virNetDevRxFilter *virNetDevRxFilterPtr;
|
|
|
|
struct _virNetDevRxFilter {
|
|
|
|
char *name; /* the alias used by qemu, *not* name used by guest */
|
|
|
|
virMacAddr mac;
|
|
|
|
bool promiscuous;
|
|
|
|
bool broadcastAllowed;
|
|
|
|
|
|
|
|
struct {
|
|
|
|
int mode; /* enum virNetDevRxFilterMode */
|
|
|
|
bool overflow;
|
|
|
|
virMacAddrPtr table;
|
|
|
|
size_t nTable;
|
|
|
|
} unicast;
|
|
|
|
struct {
|
|
|
|
int mode; /* enum virNetDevRxFilterMode */
|
|
|
|
bool overflow;
|
|
|
|
virMacAddrPtr table;
|
|
|
|
size_t nTable;
|
|
|
|
} multicast;
|
|
|
|
struct {
|
|
|
|
int mode; /* enum virNetDevRxFilterMode */
|
|
|
|
unsigned int *table;
|
|
|
|
size_t nTable;
|
|
|
|
} vlan;
|
|
|
|
};
|
|
|
|
|
2016-06-13 17:06:15 +00:00
|
|
|
typedef enum {
|
|
|
|
VIR_NETDEV_IF_STATE_UNKNOWN = 1,
|
|
|
|
VIR_NETDEV_IF_STATE_NOT_PRESENT,
|
|
|
|
VIR_NETDEV_IF_STATE_DOWN,
|
|
|
|
VIR_NETDEV_IF_STATE_LOWER_LAYER_DOWN,
|
|
|
|
VIR_NETDEV_IF_STATE_TESTING,
|
|
|
|
VIR_NETDEV_IF_STATE_DORMANT,
|
|
|
|
VIR_NETDEV_IF_STATE_UP,
|
|
|
|
VIR_NETDEV_IF_STATE_LAST
|
|
|
|
} virNetDevIfState;
|
|
|
|
|
|
|
|
VIR_ENUM_DECL(virNetDevIfState)
|
|
|
|
|
2017-03-06 17:39:48 +00:00
|
|
|
typedef struct _virNetDevIfLink virNetDevIfLink;
|
|
|
|
typedef virNetDevIfLink *virNetDevIfLinkPtr;
|
|
|
|
struct _virNetDevIfLink {
|
2016-06-13 17:06:15 +00:00
|
|
|
virNetDevIfState state; /* link state */
|
|
|
|
unsigned int speed; /* link speed in Mbits per second */
|
2017-03-06 17:39:48 +00:00
|
|
|
};
|
2016-06-13 17:06:15 +00:00
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
VIR_NET_DEV_FEAT_GRXCSUM,
|
|
|
|
VIR_NET_DEV_FEAT_GTXCSUM,
|
|
|
|
VIR_NET_DEV_FEAT_GSG,
|
|
|
|
VIR_NET_DEV_FEAT_GTSO,
|
|
|
|
VIR_NET_DEV_FEAT_GGSO,
|
|
|
|
VIR_NET_DEV_FEAT_GGRO,
|
|
|
|
VIR_NET_DEV_FEAT_LRO,
|
|
|
|
VIR_NET_DEV_FEAT_RXVLAN,
|
|
|
|
VIR_NET_DEV_FEAT_TXVLAN,
|
|
|
|
VIR_NET_DEV_FEAT_NTUPLE,
|
|
|
|
VIR_NET_DEV_FEAT_RXHASH,
|
|
|
|
VIR_NET_DEV_FEAT_RDMA,
|
|
|
|
VIR_NET_DEV_FEAT_TXUDPTNL,
|
|
|
|
VIR_NET_DEV_FEAT_LAST
|
|
|
|
} virNetDevFeature;
|
|
|
|
|
|
|
|
VIR_ENUM_DECL(virNetDevFeature)
|
|
|
|
|
2013-06-13 06:26:20 +00:00
|
|
|
int virNetDevSetupControl(const char *ifname,
|
|
|
|
virIfreq *ifr)
|
2013-06-21 16:57:12 +00:00
|
|
|
ATTRIBUTE_RETURN_CHECK;
|
2013-06-13 06:26:20 +00:00
|
|
|
|
Split bridge.h into three separate files
Following the renaming of the bridge management APIs, we can now
split the source file into 3 corresponding pieces
* src/util/virnetdev.c: APIs for any type of network interface
* src/util/virnetdevbridge.c: APIs for bridge interfaces
* src/util/virnetdevtap.c: APIs for TAP interfaces
* src/util/virnetdev.c, src/util/virnetdev.h,
src/util/virnetdevbridge.c, src/util/virnetdevbridge.h,
src/util/virnetdevtap.c, src/util/virnetdevtap.h: Copied
from bridge.{c,h}
* src/util/bridge.c, src/util/bridge.h: Split into 3 pieces
* src/lxc/lxc_driver.c, src/network/bridge_driver.c,
src/openvz/openvz_driver.c, src/qemu/qemu_command.c,
src/qemu/qemu_conf.h, src/uml/uml_conf.c, src/uml/uml_conf.h,
src/uml/uml_driver.c: Update #include directives
2011-11-02 13:41:58 +00:00
|
|
|
int virNetDevExists(const char *brname)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
|
|
|
|
|
|
|
|
int virNetDevSetOnline(const char *ifname,
|
|
|
|
bool online)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
|
2015-01-22 19:47:02 +00:00
|
|
|
int virNetDevGetOnline(const char *ifname,
|
Split bridge.h into three separate files
Following the renaming of the bridge management APIs, we can now
split the source file into 3 corresponding pieces
* src/util/virnetdev.c: APIs for any type of network interface
* src/util/virnetdevbridge.c: APIs for bridge interfaces
* src/util/virnetdevtap.c: APIs for TAP interfaces
* src/util/virnetdev.c, src/util/virnetdev.h,
src/util/virnetdevbridge.c, src/util/virnetdevbridge.h,
src/util/virnetdevtap.c, src/util/virnetdevtap.h: Copied
from bridge.{c,h}
* src/util/bridge.c, src/util/bridge.h: Split into 3 pieces
* src/lxc/lxc_driver.c, src/network/bridge_driver.c,
src/openvz/openvz_driver.c, src/qemu/qemu_command.c,
src/qemu/qemu_conf.h, src/uml/uml_conf.c, src/uml/uml_conf.h,
src/uml/uml_driver.c: Update #include directives
2011-11-02 13:41:58 +00:00
|
|
|
bool *online)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
|
|
|
|
|
|
|
|
|
|
|
|
int virNetDevSetMAC(const char *ifname,
|
2013-10-05 19:41:44 +00:00
|
|
|
const virMacAddr *macaddr)
|
Split bridge.h into three separate files
Following the renaming of the bridge management APIs, we can now
split the source file into 3 corresponding pieces
* src/util/virnetdev.c: APIs for any type of network interface
* src/util/virnetdevbridge.c: APIs for bridge interfaces
* src/util/virnetdevtap.c: APIs for TAP interfaces
* src/util/virnetdev.c, src/util/virnetdev.h,
src/util/virnetdevbridge.c, src/util/virnetdevbridge.h,
src/util/virnetdevtap.c, src/util/virnetdevtap.h: Copied
from bridge.{c,h}
* src/util/bridge.c, src/util/bridge.h: Split into 3 pieces
* src/lxc/lxc_driver.c, src/network/bridge_driver.c,
src/openvz/openvz_driver.c, src/qemu/qemu_command.c,
src/qemu/qemu_conf.h, src/uml/uml_conf.c, src/uml/uml_conf.h,
src/uml/uml_driver.c: Update #include directives
2011-11-02 13:41:58 +00:00
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
|
|
|
|
int virNetDevGetMAC(const char *ifname,
|
2012-07-17 12:07:59 +00:00
|
|
|
virMacAddrPtr macaddr)
|
Split bridge.h into three separate files
Following the renaming of the bridge management APIs, we can now
split the source file into 3 corresponding pieces
* src/util/virnetdev.c: APIs for any type of network interface
* src/util/virnetdevbridge.c: APIs for bridge interfaces
* src/util/virnetdevtap.c: APIs for TAP interfaces
* src/util/virnetdev.c, src/util/virnetdev.h,
src/util/virnetdevbridge.c, src/util/virnetdevbridge.h,
src/util/virnetdevtap.c, src/util/virnetdevtap.h: Copied
from bridge.{c,h}
* src/util/bridge.c, src/util/bridge.h: Split into 3 pieces
* src/lxc/lxc_driver.c, src/network/bridge_driver.c,
src/openvz/openvz_driver.c, src/qemu/qemu_command.c,
src/qemu/qemu_conf.h, src/uml/uml_conf.c, src/uml/uml_conf.h,
src/uml/uml_driver.c: Update #include directives
2011-11-02 13:41:58 +00:00
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
|
2011-11-02 17:40:50 +00:00
|
|
|
|
2015-08-31 21:09:01 +00:00
|
|
|
int virNetDevReplaceMacAddress(const char *linkdev,
|
|
|
|
const virMacAddr *macaddress,
|
|
|
|
const char *stateDir)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
|
|
|
|
ATTRIBUTE_RETURN_CHECK;
|
|
|
|
|
|
|
|
int virNetDevRestoreMacAddress(const char *linkdev,
|
|
|
|
const char *stateDir)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
|
|
|
|
|
Split bridge.h into three separate files
Following the renaming of the bridge management APIs, we can now
split the source file into 3 corresponding pieces
* src/util/virnetdev.c: APIs for any type of network interface
* src/util/virnetdevbridge.c: APIs for bridge interfaces
* src/util/virnetdevtap.c: APIs for TAP interfaces
* src/util/virnetdev.c, src/util/virnetdev.h,
src/util/virnetdevbridge.c, src/util/virnetdevbridge.h,
src/util/virnetdevtap.c, src/util/virnetdevtap.h: Copied
from bridge.{c,h}
* src/util/bridge.c, src/util/bridge.h: Split into 3 pieces
* src/lxc/lxc_driver.c, src/network/bridge_driver.c,
src/openvz/openvz_driver.c, src/qemu/qemu_command.c,
src/qemu/qemu_conf.h, src/uml/uml_conf.c, src/uml/uml_conf.h,
src/uml/uml_driver.c: Update #include directives
2011-11-02 13:41:58 +00:00
|
|
|
int virNetDevSetMTU(const char *ifname,
|
|
|
|
int mtu)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
|
|
|
|
int virNetDevSetMTUFromDevice(const char *ifname,
|
|
|
|
const char *otherifname)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
|
|
|
|
int virNetDevGetMTU(const char *ifname)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
|
build: use correct type for pid and similar types
No thanks to 64-bit windows, with 64-bit pid_t, we have to avoid
constructs like 'int pid'. Our API in libvirt-qemu cannot be
changed without breaking ABI; but then again, libvirt-qemu can
only be used on systems that support UNIX sockets, which rules
out Windows (even if qemu could be compiled there) - so for all
points on the call chain that interact with this API decision,
we require a different variable name to make it clear that we
audited the use for safety.
Adding a syntax-check rule only solves half the battle; anywhere
that uses printf on a pid_t still needs to be converted, but that
will be a separate patch.
* cfg.mk (sc_correct_id_types): New syntax check.
* src/libvirt-qemu.c (virDomainQemuAttach): Document why we didn't
use pid_t for pid, and validate for overflow.
* include/libvirt/libvirt-qemu.h (virDomainQemuAttach): Tweak name
for syntax check.
* src/vmware/vmware_conf.c (vmwareExtractPid): Likewise.
* src/driver.h (virDrvDomainQemuAttach): Likewise.
* tools/virsh.c (cmdQemuAttach): Likewise.
* src/remote/qemu_protocol.x (qemu_domain_attach_args): Likewise.
* src/qemu_protocol-structs (qemu_domain_attach_args): Likewise.
* src/util/cgroup.c (virCgroupPidCode, virCgroupKillInternal):
Likewise.
* src/qemu/qemu_command.c(qemuParseProcFileStrings): Likewise.
(qemuParseCommandLinePid): Use pid_t for pid.
* daemon/libvirtd.c (daemonForkIntoBackground): Likewise.
* src/conf/domain_conf.h (_virDomainObj): Likewise.
* src/probes.d (rpc_socket_new): Likewise.
* src/qemu/qemu_command.h (qemuParseCommandLinePid): Likewise.
* src/qemu/qemu_driver.c (qemudGetProcessInfo, qemuDomainAttach):
Likewise.
* src/qemu/qemu_process.c (qemuProcessAttach): Likewise.
* src/qemu/qemu_process.h (qemuProcessAttach): Likewise.
* src/uml/uml_driver.c (umlGetProcessInfo): Likewise.
* src/util/virnetdev.h (virNetDevSetNamespace): Likewise.
* src/util/virnetdev.c (virNetDevSetNamespace): Likewise.
* tests/testutils.c (virtTestCaptureProgramOutput): Likewise.
* src/conf/storage_conf.h (_virStoragePerms): Use mode_t, uid_t,
and gid_t rather than int.
* src/security/security_dac.c (virSecurityDACSetOwnership): Likewise.
* src/conf/storage_conf.c (virStorageDefParsePerms): Avoid
compiler warning.
2012-02-10 23:08:11 +00:00
|
|
|
int virNetDevSetNamespace(const char *ifname, pid_t pidInNs)
|
2011-11-02 16:03:09 +00:00
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
|
|
|
|
int virNetDevSetName(const char *ifname, const char *newifname)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
|
Split bridge.h into three separate files
Following the renaming of the bridge management APIs, we can now
split the source file into 3 corresponding pieces
* src/util/virnetdev.c: APIs for any type of network interface
* src/util/virnetdevbridge.c: APIs for bridge interfaces
* src/util/virnetdevtap.c: APIs for TAP interfaces
* src/util/virnetdev.c, src/util/virnetdev.h,
src/util/virnetdevbridge.c, src/util/virnetdevbridge.h,
src/util/virnetdevtap.c, src/util/virnetdevtap.h: Copied
from bridge.{c,h}
* src/util/bridge.c, src/util/bridge.h: Split into 3 pieces
* src/lxc/lxc_driver.c, src/network/bridge_driver.c,
src/openvz/openvz_driver.c, src/qemu/qemu_command.c,
src/qemu/qemu_conf.h, src/uml/uml_conf.c, src/uml/uml_conf.h,
src/uml/uml_driver.c: Update #include directives
2011-11-02 13:41:58 +00:00
|
|
|
|
2017-03-15 13:46:56 +00:00
|
|
|
char *virNetDevGetName(int ifindex)
|
2017-03-22 12:55:13 +00:00
|
|
|
ATTRIBUTE_RETURN_CHECK;
|
2011-11-03 09:27:45 +00:00
|
|
|
int virNetDevGetIndex(const char *ifname, int *ifindex)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
|
|
|
|
|
|
|
|
int virNetDevGetVLanID(const char *ifname, int *vlanid)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
|
|
|
|
|
2017-03-18 00:57:18 +00:00
|
|
|
int virNetDevGetMaster(const char *ifname, char **master)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
|
|
|
|
|
2011-11-03 12:32:38 +00:00
|
|
|
int virNetDevValidateConfig(const char *ifname,
|
2013-10-05 19:41:44 +00:00
|
|
|
const virMacAddr *macaddr, int ifindex)
|
2011-11-03 12:32:38 +00:00
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
|
|
|
|
|
2011-11-03 12:40:33 +00:00
|
|
|
int virNetDevIsVirtualFunction(const char *ifname)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
|
|
|
|
|
|
|
|
int virNetDevGetVirtualFunctionIndex(const char *pfname, const char *vfname,
|
|
|
|
int *vf_index)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
|
|
|
|
ATTRIBUTE_RETURN_CHECK;
|
|
|
|
|
|
|
|
int virNetDevGetPhysicalFunction(const char *ifname, char **pfname)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
|
2011-11-03 09:27:45 +00:00
|
|
|
|
2017-03-02 19:55:01 +00:00
|
|
|
int virNetDevPFGetVF(const char *pfname, int vf, char **vfname)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
|
|
|
|
|
2011-12-14 10:50:14 +00:00
|
|
|
int virNetDevGetVirtualFunctions(const char *pfname,
|
|
|
|
char ***vfname,
|
2013-01-14 22:11:44 +00:00
|
|
|
virPCIDeviceAddressPtr **virt_fns,
|
nodedev: report maxCount for virtual_functions capability
A PCI device may have the capability to setup virtual functions (VFs)
but have them currently all disabled. Prior to this patch, if that was
the case the the node device XML for the device wouldn't report any
virtual_functions capability.
With this patch, if a file called "sriov_totalvfs" is found in the
device's sysfs directory, its contents will be interpreted as a
decimal number, and that value will be reported as "maxCount" in a
capability element of the device's XML, e.g.:
<capability type='virtual_functions' maxCount='7'/>
This will be reported regardless of whether or not any VFs are
currently enabled for the device.
NB: sriov_numvfs (the number of VFs currently active) is also
available in sysfs, but that value is implied by the number of items
in the list that is inside the capability element, so there is no
reason to explicitly provide it as an attribute.
sriov_totalvfs and sriov_numvfs are available in kernels at least as far
back as the 2.6.32 that is in RHEL6.7, but in the case that they
simply aren't there, libvirt will behave as it did prior to this patch
- no maxCount will be displayed, and the virtual_functions capability
will be absent from the device's XML when 0 VFs are enabled.
2015-11-23 19:19:13 +00:00
|
|
|
size_t *n_vfname,
|
|
|
|
unsigned int *max_vfs)
|
2011-12-14 10:50:14 +00:00
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
|
nodedev: report maxCount for virtual_functions capability
A PCI device may have the capability to setup virtual functions (VFs)
but have them currently all disabled. Prior to this patch, if that was
the case the the node device XML for the device wouldn't report any
virtual_functions capability.
With this patch, if a file called "sriov_totalvfs" is found in the
device's sysfs directory, its contents will be interpreted as a
decimal number, and that value will be reported as "maxCount" in a
capability element of the device's XML, e.g.:
<capability type='virtual_functions' maxCount='7'/>
This will be reported regardless of whether or not any VFs are
currently enabled for the device.
NB: sriov_numvfs (the number of VFs currently active) is also
available in sysfs, but that value is implied by the number of items
in the list that is inside the capability element, so there is no
reason to explicitly provide it as an attribute.
sriov_totalvfs and sriov_numvfs are available in kernels at least as far
back as the 2.6.32 that is in RHEL6.7, but in the case that they
simply aren't there, libvirt will behave as it did prior to this patch
- no maxCount will be displayed, and the virtual_functions capability
will be absent from the device's XML when 0 VFs are enabled.
2015-11-23 19:19:13 +00:00
|
|
|
ATTRIBUTE_NONNULL(4) ATTRIBUTE_NONNULL(5) ATTRIBUTE_RETURN_CHECK;
|
2011-12-14 10:50:14 +00:00
|
|
|
|
2017-02-20 21:14:53 +00:00
|
|
|
int virNetDevSaveNetConfig(const char *linkdev, int vf,
|
|
|
|
const char *stateDir,
|
|
|
|
bool saveVlan)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(3) ATTRIBUTE_RETURN_CHECK;
|
|
|
|
|
|
|
|
int
|
|
|
|
virNetDevReadNetConfig(const char *linkdev, int vf,
|
|
|
|
const char *stateDir,
|
|
|
|
virMacAddrPtr *adminMAC,
|
|
|
|
virNetDevVlanPtr *vlan,
|
|
|
|
virMacAddrPtr *MAC)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4)
|
|
|
|
ATTRIBUTE_NONNULL(5) ATTRIBUTE_NONNULL(6) ATTRIBUTE_RETURN_CHECK;
|
|
|
|
|
|
|
|
int
|
|
|
|
virNetDevSetNetConfig(const char *linkdev, int vf,
|
|
|
|
const virMacAddr *adminMAC,
|
|
|
|
virNetDevVlanPtr vlan,
|
|
|
|
const virMacAddr *MAC,
|
|
|
|
bool setVLan)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
|
|
|
|
|
2012-03-06 01:12:34 +00:00
|
|
|
int virNetDevGetVirtualFunctionInfo(const char *vfname, char **pfname,
|
|
|
|
int *vf)
|
|
|
|
ATTRIBUTE_NONNULL(1);
|
|
|
|
|
2015-02-23 15:38:29 +00:00
|
|
|
int virNetDevGetFeatures(const char *ifname,
|
|
|
|
virBitmapPtr *out)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
|
|
|
|
|
2014-06-05 14:14:49 +00:00
|
|
|
int virNetDevGetLinkInfo(const char *ifname,
|
2016-06-13 17:06:15 +00:00
|
|
|
virNetDevIfLinkPtr lnk)
|
2014-06-05 14:14:49 +00:00
|
|
|
ATTRIBUTE_NONNULL(1);
|
|
|
|
|
2014-09-20 18:39:44 +00:00
|
|
|
virNetDevRxFilterPtr virNetDevRxFilterNew(void)
|
|
|
|
ATTRIBUTE_RETURN_CHECK;
|
|
|
|
void virNetDevRxFilterFree(virNetDevRxFilterPtr filter);
|
2014-10-10 17:55:42 +00:00
|
|
|
int virNetDevGetRxFilter(const char *ifname,
|
|
|
|
virNetDevRxFilterPtr *filter)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
|
|
|
|
|
|
|
|
int virNetDevAddMulti(const char *ifname,
|
|
|
|
virMacAddrPtr macaddr)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
|
|
|
|
int virNetDevDelMulti(const char *ifname,
|
|
|
|
virMacAddrPtr macaddr)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
|
2014-09-20 18:39:44 +00:00
|
|
|
|
2015-01-22 19:47:02 +00:00
|
|
|
int virNetDevSetPromiscuous(const char *ifname, bool promiscuous)
|
2015-02-03 10:20:40 +00:00
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
|
2015-01-22 19:47:02 +00:00
|
|
|
int virNetDevGetPromiscuous(const char *ifname, bool *promiscuous)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
|
|
|
|
|
|
|
|
int virNetDevSetRcvMulti(const char *ifname, bool receive)
|
2015-02-03 10:20:40 +00:00
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
|
2015-01-22 19:47:02 +00:00
|
|
|
int virNetDevGetRcvMulti(const char *ifname, bool *receive)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
|
|
|
|
|
|
|
|
int virNetDevSetRcvAllMulti(const char *ifname, bool receive)
|
2015-02-03 10:20:40 +00:00
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
|
2015-01-22 19:47:02 +00:00
|
|
|
int virNetDevGetRcvAllMulti(const char *ifname, bool *receive)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
|
2015-04-15 09:45:47 +00:00
|
|
|
|
|
|
|
# define SYSFS_NET_DIR "/sys/class/net/"
|
2015-07-19 10:11:07 +00:00
|
|
|
# define SYSFS_INFINIBAND_DIR "/sys/class/infiniband/"
|
2014-06-11 13:05:00 +00:00
|
|
|
int virNetDevSysfsFile(char **pf_sysfs_device_link,
|
|
|
|
const char *ifname,
|
|
|
|
const char *file)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
|
|
|
|
ATTRIBUTE_RETURN_CHECK;
|
2016-04-13 08:33:36 +00:00
|
|
|
|
|
|
|
int virNetDevRunEthernetScript(const char *ifname, const char *script);
|
Split bridge.h into three separate files
Following the renaming of the bridge management APIs, we can now
split the source file into 3 corresponding pieces
* src/util/virnetdev.c: APIs for any type of network interface
* src/util/virnetdevbridge.c: APIs for bridge interfaces
* src/util/virnetdevtap.c: APIs for TAP interfaces
* src/util/virnetdev.c, src/util/virnetdev.h,
src/util/virnetdevbridge.c, src/util/virnetdevbridge.h,
src/util/virnetdevtap.c, src/util/virnetdevtap.h: Copied
from bridge.{c,h}
* src/util/bridge.c, src/util/bridge.h: Split into 3 pieces
* src/lxc/lxc_driver.c, src/network/bridge_driver.c,
src/openvz/openvz_driver.c, src/qemu/qemu_command.c,
src/qemu/qemu_conf.h, src/uml/uml_conf.c, src/uml/uml_conf.h,
src/uml/uml_driver.c: Update #include directives
2011-11-02 13:41:58 +00:00
|
|
|
#endif /* __VIR_NETDEV_H__ */
|