mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-24 14:45:24 +00:00
Move MAC address replacement functions to virnetdev.c
Move virNetDevReplaceMacAddress and virNetDevRestoreMacAddress to the virnetdev.c file where they naturally belong * util/interface.c, util/interface.h: Remove virNetDevReplaceMacAddress and virNetDevRestoreMacAddress * util/virnetdev.c, util/virnetdev.h: Add virNetDevReplaceMacAddress and virNetDevRestoreMacAddress
This commit is contained in:
parent
10462d5c78
commit
255917f516
@ -553,90 +553,6 @@ ifaceGetNthParent(int ifindex ATTRIBUTE_UNUSED,
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
|
||||||
* virNetDevReplaceMacAddress:
|
|
||||||
* @macaddress: new MAC address for interface
|
|
||||||
* @linkdev: name of interface
|
|
||||||
* @stateDir: directory to store old MAC address
|
|
||||||
*
|
|
||||||
* Returns 0 on success, -1 on failure
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
virNetDevReplaceMacAddress(const char *linkdev,
|
|
||||||
const unsigned char *macaddress,
|
|
||||||
const char *stateDir)
|
|
||||||
{
|
|
||||||
unsigned char oldmac[6];
|
|
||||||
char *path = NULL;
|
|
||||||
char macstr[VIR_MAC_STRING_BUFLEN];
|
|
||||||
|
|
||||||
if (virNetDevGetMAC(linkdev, oldmac) < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
|
|
||||||
if (virAsprintf(&path, "%s/%s",
|
|
||||||
stateDir,
|
|
||||||
linkdev) < 0) {
|
|
||||||
virReportOOMError();
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
virFormatMacAddr(oldmac, macstr);
|
|
||||||
if (virFileWriteStr(path, macstr, O_CREAT|O_TRUNC|O_WRONLY) < 0) {
|
|
||||||
virReportSystemError(errno, _("Unable to preserve mac for %s"),
|
|
||||||
linkdev);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (virNetDevSetMAC(linkdev, macaddress) < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* virNetDevRestoreMacAddress:
|
|
||||||
* @linkdev: name of interface
|
|
||||||
* @stateDir: directory containing old MAC address
|
|
||||||
*
|
|
||||||
* Returns 0 on success, -errno on failure.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
virNetDevRestoreMacAddress(const char *linkdev,
|
|
||||||
const char *stateDir)
|
|
||||||
{
|
|
||||||
int rc;
|
|
||||||
char *oldmacname = NULL;
|
|
||||||
char *macstr = NULL;
|
|
||||||
char *path = NULL;
|
|
||||||
unsigned char oldmac[6];
|
|
||||||
|
|
||||||
if (virAsprintf(&path, "%s/%s",
|
|
||||||
stateDir,
|
|
||||||
linkdev) < 0) {
|
|
||||||
virReportOOMError();
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (virFileReadAll(path, VIR_MAC_STRING_BUFLEN, &macstr) < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (virParseMacAddr(macstr, &oldmac[0]) != 0) {
|
|
||||||
ifaceError(VIR_ERR_INTERNAL_ERROR,
|
|
||||||
_("Cannot parse MAC address from '%s'"),
|
|
||||||
oldmacname);
|
|
||||||
VIR_FREE(macstr);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*reset mac and remove file-ignore results*/
|
|
||||||
rc = virNetDevSetMAC(linkdev, oldmac);
|
|
||||||
ignore_value(unlink(path));
|
|
||||||
VIR_FREE(macstr);
|
|
||||||
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
static int
|
static int
|
||||||
|
@ -49,16 +49,6 @@ int ifaceGetNthParent(int ifindex, const char *ifname, unsigned int nthParent,
|
|||||||
ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(4) ATTRIBUTE_NONNULL(5)
|
ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(4) ATTRIBUTE_NONNULL(5)
|
||||||
ATTRIBUTE_NONNULL(6);
|
ATTRIBUTE_NONNULL(6);
|
||||||
|
|
||||||
int virNetDevReplaceMacAddress(const char *linkdev,
|
|
||||||
const unsigned char *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;
|
|
||||||
|
|
||||||
int ifaceIsVirtualFunction(const char *ifname);
|
int ifaceIsVirtualFunction(const char *ifname);
|
||||||
|
|
||||||
int ifaceGetVirtualFunctionIndex(const char *pfname, const char *vfname,
|
int ifaceGetVirtualFunctionIndex(const char *pfname, const char *vfname,
|
||||||
|
@ -32,8 +32,12 @@
|
|||||||
#ifdef HAVE_NET_IF_H
|
#ifdef HAVE_NET_IF_H
|
||||||
# include <net/if.h>
|
# include <net/if.h>
|
||||||
#endif
|
#endif
|
||||||
|
#include <fcntl.h>
|
||||||
|
|
||||||
#define VIR_FROM_THIS VIR_FROM_NONE
|
#define VIR_FROM_THIS VIR_FROM_NONE
|
||||||
|
#define virNetDevError(code, ...) \
|
||||||
|
virReportErrorHelper(VIR_FROM_THIS, code, __FILE__, \
|
||||||
|
__FUNCTION__, __LINE__, __VA_ARGS__)
|
||||||
|
|
||||||
#ifdef HAVE_NET_IF_H
|
#ifdef HAVE_NET_IF_H
|
||||||
static int virNetDevSetupControlFull(const char *ifname,
|
static int virNetDevSetupControlFull(const char *ifname,
|
||||||
@ -223,6 +227,93 @@ int virNetDevGetMAC(const char *ifname,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* virNetDevReplaceMacAddress:
|
||||||
|
* @macaddress: new MAC address for interface
|
||||||
|
* @linkdev: name of interface
|
||||||
|
* @stateDir: directory to store old MAC address
|
||||||
|
*
|
||||||
|
* Returns 0 on success, -1 on failure
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
virNetDevReplaceMacAddress(const char *linkdev,
|
||||||
|
const unsigned char *macaddress,
|
||||||
|
const char *stateDir)
|
||||||
|
{
|
||||||
|
unsigned char oldmac[6];
|
||||||
|
char *path = NULL;
|
||||||
|
char macstr[VIR_MAC_STRING_BUFLEN];
|
||||||
|
|
||||||
|
if (virNetDevGetMAC(linkdev, oldmac) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
|
||||||
|
if (virAsprintf(&path, "%s/%s",
|
||||||
|
stateDir,
|
||||||
|
linkdev) < 0) {
|
||||||
|
virReportOOMError();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
virFormatMacAddr(oldmac, macstr);
|
||||||
|
if (virFileWriteStr(path, macstr, O_CREAT|O_TRUNC|O_WRONLY) < 0) {
|
||||||
|
virReportSystemError(errno, _("Unable to preserve mac for %s"),
|
||||||
|
linkdev);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (virNetDevSetMAC(linkdev, macaddress) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* virNetDevRestoreMacAddress:
|
||||||
|
* @linkdev: name of interface
|
||||||
|
* @stateDir: directory containing old MAC address
|
||||||
|
*
|
||||||
|
* Returns 0 on success, -errno on failure.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
virNetDevRestoreMacAddress(const char *linkdev,
|
||||||
|
const char *stateDir)
|
||||||
|
{
|
||||||
|
int rc;
|
||||||
|
char *oldmacname = NULL;
|
||||||
|
char *macstr = NULL;
|
||||||
|
char *path = NULL;
|
||||||
|
unsigned char oldmac[6];
|
||||||
|
|
||||||
|
if (virAsprintf(&path, "%s/%s",
|
||||||
|
stateDir,
|
||||||
|
linkdev) < 0) {
|
||||||
|
virReportOOMError();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (virFileReadAll(path, VIR_MAC_STRING_BUFLEN, &macstr) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (virParseMacAddr(macstr, &oldmac[0]) != 0) {
|
||||||
|
virNetDevError(VIR_ERR_INTERNAL_ERROR,
|
||||||
|
_("Cannot parse MAC address from '%s'"),
|
||||||
|
oldmacname);
|
||||||
|
VIR_FREE(macstr);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*reset mac and remove file-ignore results*/
|
||||||
|
rc = virNetDevSetMAC(linkdev, oldmac);
|
||||||
|
ignore_value(unlink(path));
|
||||||
|
VIR_FREE(macstr);
|
||||||
|
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef SIOCGIFMTU
|
#ifdef SIOCGIFMTU
|
||||||
/**
|
/**
|
||||||
* virNetDevGetMTU:
|
* virNetDevGetMTU:
|
||||||
|
@ -51,6 +51,18 @@ int virNetDevSetMAC(const char *ifname,
|
|||||||
int virNetDevGetMAC(const char *ifname,
|
int virNetDevGetMAC(const char *ifname,
|
||||||
unsigned char *macaddr)
|
unsigned char *macaddr)
|
||||||
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
|
||||||
|
|
||||||
|
int virNetDevReplaceMacAddress(const char *linkdev,
|
||||||
|
const unsigned char *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;
|
||||||
|
|
||||||
|
|
||||||
int virNetDevSetMTU(const char *ifname,
|
int virNetDevSetMTU(const char *ifname,
|
||||||
int mtu)
|
int mtu)
|
||||||
ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
|
||||||
|
Loading…
Reference in New Issue
Block a user