From ed16ab5afae7f5b1be58764d0e1eae20ce48d9ad Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Wed, 21 Oct 2009 15:25:26 +0200 Subject: [PATCH] qdev/net: common nic property bits Add a new type for properties common to all nics. Add helper functions and macros to deal with it. Signed-off-by: Gerd Hoffmann Signed-off-by: Anthony Liguori --- hw/qdev.c | 9 +++++++++ net.h | 14 ++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/hw/qdev.c b/hw/qdev.c index 20f931c1c6..b32dbfc1fa 100644 --- a/hw/qdev.c +++ b/hw/qdev.c @@ -383,6 +383,15 @@ void qdev_get_macaddr(DeviceState *dev, uint8_t *macaddr) memcpy(macaddr, dev->nd->macaddr, 6); } +void qdev_set_nic_properties(DeviceState *dev, NICInfo *nd) +{ + qdev_prop_set_macaddr(dev, "mac", nd->macaddr); + if (nd->vlan) + qdev_prop_set_vlan(dev, "vlan", nd->vlan); + if (nd->netdev) + qdev_prop_set_netdev(dev, "netdev", nd->netdev); +} + static int next_block_unit[IF_COUNT]; /* Get a block device. This should only be used for single-drive devices diff --git a/net.h b/net.h index 6a24f5580d..f2d10f0c91 100644 --- a/net.h +++ b/net.h @@ -11,6 +11,19 @@ struct MACAddr { uint8_t a[6]; }; +/* qdev nic properties */ + +typedef struct NICConf { + MACAddr macaddr; + VLANState *vlan; + VLANClientState *peer; +} NICConf; + +#define DEFINE_NIC_PROPERTIES(_state, _conf) \ + DEFINE_PROP_MACADDR("mac", _state, _conf.macaddr), \ + DEFINE_PROP_VLAN("vlan", _state, _conf.vlan), \ + DEFINE_PROP_NETDEV("netdev", _state, _conf.peer) + /* VLANs support */ typedef int (NetCanReceive)(VLANClientState *); @@ -158,5 +171,6 @@ VLANClientState *qdev_get_vlan_client(DeviceState *dev, NetReceiveIOV *receive_iov, NetCleanup *cleanup, void *opaque); +void qdev_set_nic_properties(DeviceState *dev, NICInfo *nd); #endif