From 1422e32db51ff2b1194fb24a6201c4310be5667d Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 24 Oct 2012 08:43:34 +0200 Subject: net: reorganize headers Move public headers to include/net, and leave private headers in net/. Put the virtio headers in include/net/tap.h, removing the multiple copies that existed. Leave include/net/tap.h as the interface for NICs, and net/tap_int.h as the interface for OS-specific parts of the tap backend. Signed-off-by: Paolo Bonzini --- hmp.c | 2 +- hw/axis_dev88.c | 2 +- hw/cadence_gem.c | 2 +- hw/dp8393x.c | 2 +- hw/e1000.c | 2 +- hw/eepro100.c | 2 +- hw/etraxfs.h | 2 +- hw/etraxfs_eth.c | 2 +- hw/exynos4_boards.c | 2 +- hw/gumstix.c | 2 +- hw/highbank.c | 2 +- hw/integratorcp.c | 2 +- hw/kzm.c | 2 +- hw/lan9118.c | 2 +- hw/lance.c | 2 +- hw/mainstone.c | 2 +- hw/mcf5208.c | 2 +- hw/mcf_fec.c | 2 +- hw/milkymist-hw.h | 2 +- hw/milkymist-minimac2.c | 2 +- hw/mips_fulong2e.c | 2 +- hw/mips_jazz.c | 2 +- hw/mips_malta.c | 2 +- hw/mips_mipssim.c | 2 +- hw/mips_r4k.c | 2 +- hw/mipsnet.c | 2 +- hw/musicpal.c | 2 +- hw/ne2000-isa.c | 2 +- hw/ne2000.c | 2 +- hw/opencores_eth.c | 2 +- hw/openrisc_sim.c | 2 +- hw/pc.h | 2 +- hw/pc_piix.c | 2 +- hw/pci/pci-hotplug.c | 2 +- hw/pci/pci.c | 2 +- hw/pcnet-pci.c | 2 +- hw/pcnet.c | 2 +- hw/petalogix_ml605_mmu.c | 2 +- hw/petalogix_s3adsp1800_mmu.c | 2 +- hw/ppc/e500.c | 2 +- hw/ppc440_bamboo.c | 2 +- hw/ppc_newworld.c | 2 +- hw/ppc_oldworld.c | 2 +- hw/ppc_prep.c | 2 +- hw/qdev-properties.c | 2 +- hw/qdev.c | 2 +- hw/r2d.c | 2 +- hw/realview.c | 2 +- hw/rtl8139.c | 2 +- hw/s390-virtio.c | 2 +- hw/smc91c111.c | 2 +- hw/spapr.c | 2 +- hw/spapr_llan.c | 2 +- hw/stellaris.c | 2 +- hw/stellaris_enet.c | 2 +- hw/sun4m.c | 2 +- hw/sun4u.c | 2 +- hw/usb/dev-network.c | 2 +- hw/versatilepb.c | 2 +- hw/vexpress.c | 2 +- hw/vhost_net.c | 2 +- hw/vhost_net.h | 2 +- hw/virtio-net.c | 2 +- hw/virtio-net.h | 27 ------- hw/virtio.h | 2 +- hw/xen_backend.h | 2 +- hw/xen_nic.c | 2 +- hw/xgmac.c | 2 +- hw/xilinx.h | 2 +- hw/xilinx_axienet.c | 2 +- hw/xilinx_ethlite.c | 2 +- hw/xilinx_zynq.c | 2 +- hw/xtensa_lx60.c | 2 +- include/net/checksum.h | 29 +++++++ include/net/net.h | 175 ++++++++++++++++++++++++++++++++++++++++++ include/net/queue.h | 58 ++++++++++++++ include/net/slirp.h | 47 ++++++++++++ include/net/tap.h | 67 ++++++++++++++++ monitor.c | 2 +- net.h | 172 ----------------------------------------- net/checksum.h | 29 ------- net/clients.h | 2 +- net/hub.c | 2 +- net/hub.h | 2 - net/net.c | 4 +- net/queue.c | 2 +- net/queue.h | 58 -------------- net/slirp.c | 2 +- net/slirp.h | 47 ------------ net/socket.c | 2 +- net/tap-aix.c | 2 +- net/tap-bsd.c | 2 +- net/tap-haiku.c | 2 +- net/tap-linux.c | 3 +- net/tap-linux.h | 20 +---- net/tap-solaris.c | 2 +- net/tap-win32.c | 4 +- net/tap.c | 6 +- net/tap.h | 58 -------------- net/tap_int.h | 46 +++++++++++ net/util.c | 2 +- net/vde.c | 2 +- savevm.c | 2 +- vl.c | 2 +- 104 files changed, 519 insertions(+), 505 deletions(-) create mode 100644 include/net/checksum.h create mode 100644 include/net/net.h create mode 100644 include/net/queue.h create mode 100644 include/net/slirp.h create mode 100644 include/net/tap.h delete mode 100644 net.h delete mode 100644 net/checksum.h delete mode 100644 net/queue.h delete mode 100644 net/slirp.h delete mode 100644 net/tap.h create mode 100644 net/tap_int.h diff --git a/hmp.c b/hmp.c index 873962f..9b31e9f 100644 --- a/hmp.c +++ b/hmp.c @@ -14,7 +14,7 @@ */ #include "hmp.h" -#include "net.h" +#include "net/net.h" #include "qemu-char.h" #include "qemu-option.h" #include "qemu-timer.h" diff --git a/hw/axis_dev88.c b/hw/axis_dev88.c index aa1ac9e..50ddbc9 100644 --- a/hw/axis_dev88.c +++ b/hw/axis_dev88.c @@ -23,7 +23,7 @@ */ #include "sysbus.h" -#include "net.h" +#include "net/net.h" #include "flash.h" #include "boards.h" #include "etraxfs.h" diff --git a/hw/cadence_gem.c b/hw/cadence_gem.c index 0c037a2..40a2399 100644 --- a/hw/cadence_gem.c +++ b/hw/cadence_gem.c @@ -25,7 +25,7 @@ #include /* For crc32 */ #include "sysbus.h" -#include "net.h" +#include "net/net.h" #include "net/checksum.h" #ifdef CADENCE_GEM_ERR_DEBUG diff --git a/hw/dp8393x.c b/hw/dp8393x.c index 3f6386e..d59b611 100644 --- a/hw/dp8393x.c +++ b/hw/dp8393x.c @@ -19,7 +19,7 @@ #include "hw.h" #include "qemu-timer.h" -#include "net.h" +#include "net/net.h" #include "mips.h" //#define DEBUG_SONIC diff --git a/hw/e1000.c b/hw/e1000.c index c89c8d2..aeee3e6 100644 --- a/hw/e1000.c +++ b/hw/e1000.c @@ -27,7 +27,7 @@ #include "hw.h" #include "pci/pci.h" -#include "net.h" +#include "net/net.h" #include "net/checksum.h" #include "loader.h" #include "sysemu.h" diff --git a/hw/eepro100.c b/hw/eepro100.c index 992f03a..9e2be4e 100644 --- a/hw/eepro100.c +++ b/hw/eepro100.c @@ -43,7 +43,7 @@ #include /* offsetof */ #include "hw.h" #include "pci/pci.h" -#include "net.h" +#include "net/net.h" #include "eeprom93xx.h" #include "sysemu.h" #include "dma.h" diff --git a/hw/etraxfs.h b/hw/etraxfs.h index 725bb9e..bc60713 100644 --- a/hw/etraxfs.h +++ b/hw/etraxfs.h @@ -22,7 +22,7 @@ * THE SOFTWARE. */ -#include "net.h" +#include "net/net.h" #include "etraxfs_dma.h" qemu_irq *cris_pic_init_cpu(CPUCRISState *env); diff --git a/hw/etraxfs_eth.c b/hw/etraxfs_eth.c index 3d42426..289a810 100644 --- a/hw/etraxfs_eth.c +++ b/hw/etraxfs_eth.c @@ -24,7 +24,7 @@ #include #include "sysbus.h" -#include "net.h" +#include "net/net.h" #include "etraxfs.h" #define D(x) diff --git a/hw/exynos4_boards.c b/hw/exynos4_boards.c index bc815bb..c375f16 100644 --- a/hw/exynos4_boards.c +++ b/hw/exynos4_boards.c @@ -23,7 +23,7 @@ #include "sysemu.h" #include "sysbus.h" -#include "net.h" +#include "net/net.h" #include "arm-misc.h" #include "exec-memory.h" #include "exynos4210.h" diff --git a/hw/gumstix.c b/hw/gumstix.c index 4103a88..545b92f 100644 --- a/hw/gumstix.c +++ b/hw/gumstix.c @@ -36,7 +36,7 @@ #include "hw.h" #include "pxa.h" -#include "net.h" +#include "net/net.h" #include "flash.h" #include "devices.h" #include "boards.h" diff --git a/hw/highbank.c b/hw/highbank.c index 8e35127..90f7cb5 100644 --- a/hw/highbank.c +++ b/hw/highbank.c @@ -21,7 +21,7 @@ #include "arm-misc.h" #include "devices.h" #include "loader.h" -#include "net.h" +#include "net/net.h" #include "sysemu.h" #include "boards.h" #include "sysbus.h" diff --git a/hw/integratorcp.c b/hw/integratorcp.c index 77807c3..2b59fea 100644 --- a/hw/integratorcp.c +++ b/hw/integratorcp.c @@ -11,7 +11,7 @@ #include "devices.h" #include "boards.h" #include "arm-misc.h" -#include "net.h" +#include "net/net.h" #include "exec-memory.h" #include "sysemu.h" diff --git a/hw/kzm.c b/hw/kzm.c index 687daf3..a27ecbb 100644 --- a/hw/kzm.c +++ b/hw/kzm.c @@ -18,7 +18,7 @@ #include "hw.h" #include "arm-misc.h" #include "devices.h" -#include "net.h" +#include "net/net.h" #include "sysemu.h" #include "boards.h" #include "serial.h" diff --git a/hw/lan9118.c b/hw/lan9118.c index f724e1c..4c72d0d 100644 --- a/hw/lan9118.c +++ b/hw/lan9118.c @@ -11,7 +11,7 @@ */ #include "sysbus.h" -#include "net.h" +#include "net/net.h" #include "devices.h" #include "sysemu.h" #include "ptimer.h" diff --git a/hw/lance.c b/hw/lance.c index a3e6dd9..a384676 100644 --- a/hw/lance.c +++ b/hw/lance.c @@ -36,7 +36,7 @@ */ #include "sysbus.h" -#include "net.h" +#include "net/net.h" #include "qemu-timer.h" #include "qemu_socket.h" #include "sun4m.h" diff --git a/hw/mainstone.c b/hw/mainstone.c index 5bbecb7..58c8b07 100644 --- a/hw/mainstone.c +++ b/hw/mainstone.c @@ -14,7 +14,7 @@ #include "hw.h" #include "pxa.h" #include "arm-misc.h" -#include "net.h" +#include "net/net.h" #include "devices.h" #include "boards.h" #include "flash.h" diff --git a/hw/mcf5208.c b/hw/mcf5208.c index b1db549..6326624 100644 --- a/hw/mcf5208.c +++ b/hw/mcf5208.c @@ -10,7 +10,7 @@ #include "qemu-timer.h" #include "ptimer.h" #include "sysemu.h" -#include "net.h" +#include "net/net.h" #include "boards.h" #include "loader.h" #include "elf.h" diff --git a/hw/mcf_fec.c b/hw/mcf_fec.c index 1ed193c..b5fb18f 100644 --- a/hw/mcf_fec.c +++ b/hw/mcf_fec.c @@ -6,7 +6,7 @@ * This code is licensed under the GPL */ #include "hw.h" -#include "net.h" +#include "net/net.h" #include "mcf.h" /* For crc32 */ #include diff --git a/hw/milkymist-hw.h b/hw/milkymist-hw.h index 0253b7a..812ddd2 100644 --- a/hw/milkymist-hw.h +++ b/hw/milkymist-hw.h @@ -3,7 +3,7 @@ #include "qdev.h" #include "qdev-addr.h" -#include "net.h" +#include "net/net.h" static inline DeviceState *milkymist_uart_create(hwaddr base, qemu_irq irq) diff --git a/hw/milkymist-minimac2.c b/hw/milkymist-minimac2.c index b204e5f..926f7f9 100644 --- a/hw/milkymist-minimac2.c +++ b/hw/milkymist-minimac2.c @@ -25,7 +25,7 @@ #include "hw.h" #include "sysbus.h" #include "trace.h" -#include "net.h" +#include "net/net.h" #include "qemu-error.h" #include "qdev-addr.h" diff --git a/hw/mips_fulong2e.c b/hw/mips_fulong2e.c index d5cf33b..bab96b2 100644 --- a/hw/mips_fulong2e.c +++ b/hw/mips_fulong2e.c @@ -22,7 +22,7 @@ #include "pc.h" #include "serial.h" #include "fdc.h" -#include "net.h" +#include "net/net.h" #include "boards.h" #include "smbus.h" #include "block.h" diff --git a/hw/mips_jazz.c b/hw/mips_jazz.c index ea1416a..8e5e8ef 100644 --- a/hw/mips_jazz.c +++ b/hw/mips_jazz.c @@ -32,7 +32,7 @@ #include "sysemu.h" #include "arch_init.h" #include "boards.h" -#include "net.h" +#include "net/net.h" #include "esp.h" #include "mips-bios.h" #include "loader.h" diff --git a/hw/mips_malta.c b/hw/mips_malta.c index 571903d..3f9f171 100644 --- a/hw/mips_malta.c +++ b/hw/mips_malta.c @@ -26,7 +26,7 @@ #include "pc.h" #include "serial.h" #include "fdc.h" -#include "net.h" +#include "net/net.h" #include "boards.h" #include "smbus.h" #include "block.h" diff --git a/hw/mips_mipssim.c b/hw/mips_mipssim.c index 20b5f1a..7831742 100644 --- a/hw/mips_mipssim.c +++ b/hw/mips_mipssim.c @@ -29,7 +29,7 @@ #include "mips_cpudevs.h" #include "serial.h" #include "isa.h" -#include "net.h" +#include "net/net.h" #include "sysemu.h" #include "boards.h" #include "mips-bios.h" diff --git a/hw/mips_r4k.c b/hw/mips_r4k.c index 325098a..ec99d7d 100644 --- a/hw/mips_r4k.c +++ b/hw/mips_r4k.c @@ -13,7 +13,7 @@ #include "pc.h" #include "serial.h" #include "isa.h" -#include "net.h" +#include "net/net.h" #include "sysemu.h" #include "boards.h" #include "flash.h" diff --git a/hw/mipsnet.c b/hw/mipsnet.c index bece332..bb752d3 100644 --- a/hw/mipsnet.c +++ b/hw/mipsnet.c @@ -1,5 +1,5 @@ #include "hw.h" -#include "net.h" +#include "net/net.h" #include "trace.h" #include "sysbus.h" diff --git a/hw/musicpal.c b/hw/musicpal.c index e0c57c8..4e8399a 100644 --- a/hw/musicpal.c +++ b/hw/musicpal.c @@ -12,7 +12,7 @@ #include "sysbus.h" #include "arm-misc.h" #include "devices.h" -#include "net.h" +#include "net/net.h" #include "sysemu.h" #include "boards.h" #include "serial.h" diff --git a/hw/ne2000-isa.c b/hw/ne2000-isa.c index 69982a9..99477a4 100644 --- a/hw/ne2000-isa.c +++ b/hw/ne2000-isa.c @@ -25,7 +25,7 @@ #include "pc.h" #include "isa.h" #include "qdev.h" -#include "net.h" +#include "net/net.h" #include "ne2000.h" #include "exec-memory.h" diff --git a/hw/ne2000.c b/hw/ne2000.c index fb78e5b..2001264 100644 --- a/hw/ne2000.c +++ b/hw/ne2000.c @@ -23,7 +23,7 @@ */ #include "hw.h" #include "pci/pci.h" -#include "net.h" +#include "net/net.h" #include "ne2000.h" #include "loader.h" #include "sysemu.h" diff --git a/hw/opencores_eth.c b/hw/opencores_eth.c index b2780b9..fd2f0f6 100644 --- a/hw/opencores_eth.c +++ b/hw/opencores_eth.c @@ -33,7 +33,7 @@ #include "hw.h" #include "sysbus.h" -#include "net.h" +#include "net/net.h" #include "sysemu.h" #include "trace.h" diff --git a/hw/openrisc_sim.c b/hw/openrisc_sim.c index 23c66df..a879fb0 100644 --- a/hw/openrisc_sim.c +++ b/hw/openrisc_sim.c @@ -22,7 +22,7 @@ #include "boards.h" #include "elf.h" #include "serial.h" -#include "net.h" +#include "net/net.h" #include "loader.h" #include "exec-memory.h" #include "sysemu.h" diff --git a/hw/pc.h b/hw/pc.h index 2237e86..5e4d103 100644 --- a/hw/pc.h +++ b/hw/pc.h @@ -6,7 +6,7 @@ #include "ioport.h" #include "isa.h" #include "fdc.h" -#include "net.h" +#include "net/net.h" #include "memory.h" #include "ioapic.h" diff --git a/hw/pc_piix.c b/hw/pc_piix.c index c2b4cb0..7268dcd 100644 --- a/hw/pc_piix.c +++ b/hw/pc_piix.c @@ -30,7 +30,7 @@ #include "pci/pci.h" #include "pci/pci_ids.h" #include "usb.h" -#include "net.h" +#include "net/net.h" #include "boards.h" #include "ide.h" #include "kvm.h" diff --git a/hw/pci/pci-hotplug.c b/hw/pci/pci-hotplug.c index 4b4c931..b850400 100644 --- a/hw/pci/pci-hotplug.c +++ b/hw/pci/pci-hotplug.c @@ -25,7 +25,7 @@ #include "hw/hw.h" #include "hw/boards.h" #include "hw/pci/pci.h" -#include "net.h" +#include "net/net.h" #include "hw/pc.h" #include "monitor.h" #include "hw/scsi.h" diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 2e455e2..105fe95 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -26,7 +26,7 @@ #include "hw/pci/pci_bridge.h" #include "hw/pci/pci_bus.h" #include "monitor.h" -#include "net.h" +#include "net/net.h" #include "sysemu.h" #include "hw/loader.h" #include "range.h" diff --git a/hw/pcnet-pci.c b/hw/pcnet-pci.c index c1abbf8..c6768bc 100644 --- a/hw/pcnet-pci.c +++ b/hw/pcnet-pci.c @@ -28,7 +28,7 @@ */ #include "pci/pci.h" -#include "net.h" +#include "net/net.h" #include "loader.h" #include "qemu-timer.h" #include "dma.h" diff --git a/hw/pcnet.c b/hw/pcnet.c index 54eecd0..5b03ede 100644 --- a/hw/pcnet.c +++ b/hw/pcnet.c @@ -36,7 +36,7 @@ */ #include "qdev.h" -#include "net.h" +#include "net/net.h" #include "qemu-timer.h" #include "qemu_socket.h" #include "sysemu.h" diff --git a/hw/petalogix_ml605_mmu.c b/hw/petalogix_ml605_mmu.c index 3589a4b..df51a74 100644 --- a/hw/petalogix_ml605_mmu.c +++ b/hw/petalogix_ml605_mmu.c @@ -27,7 +27,7 @@ #include "sysbus.h" #include "hw.h" -#include "net.h" +#include "net/net.h" #include "flash.h" #include "sysemu.h" #include "devices.h" diff --git a/hw/petalogix_s3adsp1800_mmu.c b/hw/petalogix_s3adsp1800_mmu.c index c5fd5e7..37b0d55 100644 --- a/hw/petalogix_s3adsp1800_mmu.c +++ b/hw/petalogix_s3adsp1800_mmu.c @@ -25,7 +25,7 @@ #include "sysbus.h" #include "hw.h" -#include "net.h" +#include "net/net.h" #include "flash.h" #include "sysemu.h" #include "devices.h" diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index 2b1558b..4690bd8 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -18,7 +18,7 @@ #include "qemu-common.h" #include "e500.h" #include "e500-ccsr.h" -#include "net.h" +#include "net/net.h" #include "qemu-config.h" #include "hw/hw.h" #include "hw/serial.h" diff --git a/hw/ppc440_bamboo.c b/hw/ppc440_bamboo.c index 0b39a81..5193a0c 100644 --- a/hw/ppc440_bamboo.c +++ b/hw/ppc440_bamboo.c @@ -13,7 +13,7 @@ #include "config.h" #include "qemu-common.h" -#include "net.h" +#include "net/net.h" #include "hw.h" #include "pci/pci.h" #include "boards.h" diff --git a/hw/ppc_newworld.c b/hw/ppc_newworld.c index 2bf3094..657f405 100644 --- a/hw/ppc_newworld.c +++ b/hw/ppc_newworld.c @@ -53,7 +53,7 @@ #include "mac_dbdma.h" #include "nvram.h" #include "pci/pci.h" -#include "net.h" +#include "net/net.h" #include "sysemu.h" #include "boards.h" #include "fw_cfg.h" diff --git a/hw/ppc_oldworld.c b/hw/ppc_oldworld.c index 3bc29c6..a149306 100644 --- a/hw/ppc_oldworld.c +++ b/hw/ppc_oldworld.c @@ -30,7 +30,7 @@ #include "mac_dbdma.h" #include "nvram.h" #include "sysemu.h" -#include "net.h" +#include "net/net.h" #include "isa.h" #include "pci/pci.h" #include "boards.h" diff --git a/hw/ppc_prep.c b/hw/ppc_prep.c index f6ffb59..25cc049 100644 --- a/hw/ppc_prep.c +++ b/hw/ppc_prep.c @@ -26,7 +26,7 @@ #include "pc.h" #include "serial.h" #include "fdc.h" -#include "net.h" +#include "net/net.h" #include "sysemu.h" #include "isa.h" #include "pci/pci.h" diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c index b9cd3c0..7ab55ef 100644 --- a/hw/qdev-properties.c +++ b/hw/qdev-properties.c @@ -1,4 +1,4 @@ -#include "net.h" +#include "net/net.h" #include "qdev.h" #include "qerror.h" #include "blockdev.h" diff --git a/hw/qdev.c b/hw/qdev.c index 599382c..6b91fb9 100644 --- a/hw/qdev.c +++ b/hw/qdev.c @@ -25,7 +25,7 @@ inherit from a particular bus (e.g. PCI or I2C) rather than this API directly. */ -#include "net.h" +#include "net/net.h" #include "qdev.h" #include "sysemu.h" #include "error.h" diff --git a/hw/r2d.c b/hw/r2d.c index e18c23b..b1c278f 100644 --- a/hw/r2d.c +++ b/hw/r2d.c @@ -30,7 +30,7 @@ #include "sysemu.h" #include "boards.h" #include "pci/pci.h" -#include "net.h" +#include "net/net.h" #include "sh7750_regs.h" #include "ide.h" #include "loader.h" diff --git a/hw/realview.c b/hw/realview.c index 5fbdcbf..17d1ba2 100644 --- a/hw/realview.c +++ b/hw/realview.c @@ -12,7 +12,7 @@ #include "primecell.h" #include "devices.h" #include "pci/pci.h" -#include "net.h" +#include "net/net.h" #include "sysemu.h" #include "boards.h" #include "i2c.h" diff --git a/hw/rtl8139.c b/hw/rtl8139.c index e294a2a..e024520 100644 --- a/hw/rtl8139.c +++ b/hw/rtl8139.c @@ -55,7 +55,7 @@ #include "pci/pci.h" #include "dma.h" #include "qemu-timer.h" -#include "net.h" +#include "net/net.h" #include "loader.h" #include "sysemu.h" #include "iov.h" diff --git a/hw/s390-virtio.c b/hw/s390-virtio.c index 7aca0c4..8c724b9 100644 --- a/hw/s390-virtio.c +++ b/hw/s390-virtio.c @@ -21,7 +21,7 @@ #include "block.h" #include "blockdev.h" #include "sysemu.h" -#include "net.h" +#include "net/net.h" #include "boards.h" #include "monitor.h" #include "loader.h" diff --git a/hw/smc91c111.c b/hw/smc91c111.c index 4ceed01..2161b4a 100644 --- a/hw/smc91c111.c +++ b/hw/smc91c111.c @@ -8,7 +8,7 @@ */ #include "sysbus.h" -#include "net.h" +#include "net/net.h" #include "devices.h" /* For crc32 */ #include diff --git a/hw/spapr.c b/hw/spapr.c index 7306ab3..395c4ac 100644 --- a/hw/spapr.c +++ b/hw/spapr.c @@ -27,7 +27,7 @@ #include "sysemu.h" #include "hw.h" #include "elf.h" -#include "net.h" +#include "net/net.h" #include "blockdev.h" #include "cpus.h" #include "kvm.h" diff --git a/hw/spapr_llan.c b/hw/spapr_llan.c index 09ad69f..8077eb9 100644 --- a/hw/spapr_llan.c +++ b/hw/spapr_llan.c @@ -25,7 +25,7 @@ * */ #include "hw.h" -#include "net.h" +#include "net/net.h" #include "hw/qdev.h" #include "hw/spapr.h" #include "hw/spapr_vio.h" diff --git a/hw/stellaris.c b/hw/stellaris.c index b038f10..f3eb4bb 100644 --- a/hw/stellaris.c +++ b/hw/stellaris.c @@ -13,7 +13,7 @@ #include "devices.h" #include "qemu-timer.h" #include "i2c.h" -#include "net.h" +#include "net/net.h" #include "boards.h" #include "exec-memory.h" diff --git a/hw/stellaris_enet.c b/hw/stellaris_enet.c index a530b10..d7e1e21 100644 --- a/hw/stellaris_enet.c +++ b/hw/stellaris_enet.c @@ -7,7 +7,7 @@ * This code is licensed under the GPL. */ #include "sysbus.h" -#include "net.h" +#include "net/net.h" #include //#define DEBUG_STELLARIS_ENET 1 diff --git a/hw/sun4m.c b/hw/sun4m.c index 52cf82b..9a784df 100644 --- a/hw/sun4m.c +++ b/hw/sun4m.c @@ -28,7 +28,7 @@ #include "sparc32_dma.h" #include "fdc.h" #include "sysemu.h" -#include "net.h" +#include "net/net.h" #include "boards.h" #include "firmware_abi.h" #include "esp.h" diff --git a/hw/sun4u.c b/hw/sun4u.c index 47bcf93..d9e752f 100644 --- a/hw/sun4u.c +++ b/hw/sun4u.c @@ -28,7 +28,7 @@ #include "serial.h" #include "nvram.h" #include "fdc.h" -#include "net.h" +#include "net/net.h" #include "qemu-timer.h" #include "sysemu.h" #include "boards.h" diff --git a/hw/usb/dev-network.c b/hw/usb/dev-network.c index 0552e6f..bf289ff 100644 --- a/hw/usb/dev-network.c +++ b/hw/usb/dev-network.c @@ -26,7 +26,7 @@ #include "qemu-common.h" #include "hw/usb.h" #include "hw/usb/desc.h" -#include "net.h" +#include "net/net.h" #include "qemu-queue.h" #include "qemu-config.h" #include "sysemu.h" diff --git a/hw/versatilepb.c b/hw/versatilepb.c index f5a742b..af398d9 100644 --- a/hw/versatilepb.c +++ b/hw/versatilepb.c @@ -10,7 +10,7 @@ #include "sysbus.h" #include "arm-misc.h" #include "devices.h" -#include "net.h" +#include "net/net.h" #include "sysemu.h" #include "pci/pci.h" #include "i2c.h" diff --git a/hw/vexpress.c b/hw/vexpress.c index e89694c..5c9c08b 100644 --- a/hw/vexpress.c +++ b/hw/vexpress.c @@ -25,7 +25,7 @@ #include "arm-misc.h" #include "primecell.h" #include "devices.h" -#include "net.h" +#include "net/net.h" #include "sysemu.h" #include "boards.h" #include "exec-memory.h" diff --git a/hw/vhost_net.c b/hw/vhost_net.c index 8241601..93ad89a 100644 --- a/hw/vhost_net.c +++ b/hw/vhost_net.c @@ -13,7 +13,7 @@ * GNU GPL, version 2 or (at your option) any later version. */ -#include "net.h" +#include "net/net.h" #include "net/tap.h" #include "virtio-net.h" diff --git a/hw/vhost_net.h b/hw/vhost_net.h index a9db234..012aba4 100644 --- a/hw/vhost_net.h +++ b/hw/vhost_net.h @@ -1,7 +1,7 @@ #ifndef VHOST_NET_H #define VHOST_NET_H -#include "net.h" +#include "net/net.h" struct vhost_net; typedef struct vhost_net VHostNetState; diff --git a/hw/virtio-net.c b/hw/virtio-net.c index 108ce07..dc7c6d6 100644 --- a/hw/virtio-net.c +++ b/hw/virtio-net.c @@ -13,7 +13,7 @@ #include "iov.h" #include "virtio.h" -#include "net.h" +#include "net/net.h" #include "net/checksum.h" #include "net/tap.h" #include "qemu-error.h" diff --git a/hw/virtio-net.h b/hw/virtio-net.h index 2566ea1..d46fb98 100644 --- a/hw/virtio-net.h +++ b/hw/virtio-net.h @@ -73,33 +73,6 @@ struct virtio_net_config uint16_t status; } QEMU_PACKED; -/* This is the first element of the scatter-gather list. If you don't - * specify GSO or CSUM features, you can simply ignore the header. */ -struct virtio_net_hdr -{ -#define VIRTIO_NET_HDR_F_NEEDS_CSUM 1 // Use csum_start, csum_offset -#define VIRTIO_NET_HDR_F_DATA_VALID 2 // Csum is valid - uint8_t flags; -#define VIRTIO_NET_HDR_GSO_NONE 0 // Not a GSO frame -#define VIRTIO_NET_HDR_GSO_TCPV4 1 // GSO frame, IPv4 TCP (TSO) -#define VIRTIO_NET_HDR_GSO_UDP 3 // GSO frame, IPv4 UDP (UFO) -#define VIRTIO_NET_HDR_GSO_TCPV6 4 // GSO frame, IPv6 TCP -#define VIRTIO_NET_HDR_GSO_ECN 0x80 // TCP has ECN set - uint8_t gso_type; - uint16_t hdr_len; - uint16_t gso_size; - uint16_t csum_start; - uint16_t csum_offset; -}; - -/* This is the version of the header to use when the MRG_RXBUF - * feature has been negotiated. */ -struct virtio_net_hdr_mrg_rxbuf -{ - struct virtio_net_hdr hdr; - uint16_t num_buffers; /* Number of merged rx buffers */ -}; - /* * Control virtqueue data structures * diff --git a/hw/virtio.h b/hw/virtio.h index 7c17f7b..cdcb490 100644 --- a/hw/virtio.h +++ b/hw/virtio.h @@ -15,7 +15,7 @@ #define _QEMU_VIRTIO_H #include "hw.h" -#include "net.h" +#include "net/net.h" #include "qdev.h" #include "sysemu.h" #include "event_notifier.h" diff --git a/hw/xen_backend.h b/hw/xen_backend.h index 3305630..92ab501 100644 --- a/hw/xen_backend.h +++ b/hw/xen_backend.h @@ -3,7 +3,7 @@ #include "xen_common.h" #include "sysemu.h" -#include "net.h" +#include "net/net.h" /* ------------------------------------------------------------- */ diff --git a/hw/xen_nic.c b/hw/xen_nic.c index dadacb1..dc12110 100644 --- a/hw/xen_nic.c +++ b/hw/xen_nic.c @@ -36,7 +36,7 @@ #include #include "hw.h" -#include "net.h" +#include "net/net.h" #include "net/checksum.h" #include "net/util.h" #include "xen_backend.h" diff --git a/hw/xgmac.c b/hw/xgmac.c index ec50c74..d0d510e 100644 --- a/hw/xgmac.c +++ b/hw/xgmac.c @@ -27,7 +27,7 @@ #include "sysbus.h" #include "qemu-char.h" #include "qemu-log.h" -#include "net.h" +#include "net/net.h" #include "net/checksum.h" #ifdef DEBUG_XGMAC diff --git a/hw/xilinx.h b/hw/xilinx.h index 9323fd0..735f8e2 100644 --- a/hw/xilinx.h +++ b/hw/xilinx.h @@ -1,6 +1,6 @@ #include "stream.h" #include "qemu-common.h" -#include "net.h" +#include "net/net.h" static inline DeviceState * xilinx_intc_create(hwaddr base, qemu_irq irq, int kind_of_intr) diff --git a/hw/xilinx_axienet.c b/hw/xilinx_axienet.c index c859fde..35979e6 100644 --- a/hw/xilinx_axienet.c +++ b/hw/xilinx_axienet.c @@ -24,7 +24,7 @@ #include "sysbus.h" #include "qemu-log.h" -#include "net.h" +#include "net/net.h" #include "net/checksum.h" #include "stream.h" diff --git a/hw/xilinx_ethlite.c b/hw/xilinx_ethlite.c index 13bd456..4de4a53 100644 --- a/hw/xilinx_ethlite.c +++ b/hw/xilinx_ethlite.c @@ -24,7 +24,7 @@ #include "sysbus.h" #include "hw.h" -#include "net.h" +#include "net/net.h" #define D(x) #define R_TX_BUF0 0 diff --git a/hw/xilinx_zynq.c b/hw/xilinx_zynq.c index 9ca22a4..67adc52 100644 --- a/hw/xilinx_zynq.c +++ b/hw/xilinx_zynq.c @@ -17,7 +17,7 @@ #include "sysbus.h" #include "arm-misc.h" -#include "net.h" +#include "net/net.h" #include "exec-memory.h" #include "sysemu.h" #include "boards.h" diff --git a/hw/xtensa_lx60.c b/hw/xtensa_lx60.c index bc10d31..0399de7 100644 --- a/hw/xtensa_lx60.c +++ b/hw/xtensa_lx60.c @@ -32,7 +32,7 @@ #include "memory.h" #include "exec-memory.h" #include "serial.h" -#include "net.h" +#include "net/net.h" #include "sysbus.h" #include "flash.h" #include "blockdev.h" diff --git a/include/net/checksum.h b/include/net/checksum.h new file mode 100644 index 0000000..1f05298 --- /dev/null +++ b/include/net/checksum.h @@ -0,0 +1,29 @@ +/* + * IP checksumming functions. + * (c) 2008 Gerd Hoffmann + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; under version 2 of the License. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + */ + +#ifndef QEMU_NET_CHECKSUM_H +#define QEMU_NET_CHECKSUM_H + +#include + +uint32_t net_checksum_add(int len, uint8_t *buf); +uint16_t net_checksum_finish(uint32_t sum); +uint16_t net_checksum_tcpudp(uint16_t length, uint16_t proto, + uint8_t *addrs, uint8_t *buf); +void net_checksum_calculate(uint8_t *data, int length); + +#endif /* QEMU_NET_CHECKSUM_H */ diff --git a/include/net/net.h b/include/net/net.h new file mode 100644 index 0000000..9ff9305 --- /dev/null +++ b/include/net/net.h @@ -0,0 +1,175 @@ +#ifndef QEMU_NET_H +#define QEMU_NET_H + +#include "qemu-queue.h" +#include "qemu-common.h" +#include "qdict.h" +#include "qemu-option.h" +#include "net/queue.h" +#include "vmstate.h" +#include "qapi-types.h" + +struct MACAddr { + uint8_t a[6]; +}; + +/* qdev nic properties */ + +typedef struct NICConf { + MACAddr macaddr; + NetClientState *peer; + int32_t bootindex; +} NICConf; + +#define DEFINE_NIC_PROPERTIES(_state, _conf) \ + DEFINE_PROP_MACADDR("mac", _state, _conf.macaddr), \ + DEFINE_PROP_VLAN("vlan", _state, _conf.peer), \ + DEFINE_PROP_NETDEV("netdev", _state, _conf.peer), \ + DEFINE_PROP_INT32("bootindex", _state, _conf.bootindex, -1) + +/* Net clients */ + +typedef void (NetPoll)(NetClientState *, bool enable); +typedef int (NetCanReceive)(NetClientState *); +typedef ssize_t (NetReceive)(NetClientState *, const uint8_t *, size_t); +typedef ssize_t (NetReceiveIOV)(NetClientState *, const struct iovec *, int); +typedef void (NetCleanup) (NetClientState *); +typedef void (LinkStatusChanged)(NetClientState *); + +typedef struct NetClientInfo { + NetClientOptionsKind type; + size_t size; + NetReceive *receive; + NetReceive *receive_raw; + NetReceiveIOV *receive_iov; + NetCanReceive *can_receive; + NetCleanup *cleanup; + LinkStatusChanged *link_status_changed; + NetPoll *poll; +} NetClientInfo; + +struct NetClientState { + NetClientInfo *info; + int link_down; + QTAILQ_ENTRY(NetClientState) next; + NetClientState *peer; + NetQueue *send_queue; + char *model; + char *name; + char info_str[256]; + unsigned receive_disabled : 1; +}; + +typedef struct NICState { + NetClientState nc; + NICConf *conf; + void *opaque; + bool peer_deleted; +} NICState; + +NetClientState *qemu_find_netdev(const char *id); +NetClientState *qemu_new_net_client(NetClientInfo *info, + NetClientState *peer, + const char *model, + const char *name); +NICState *qemu_new_nic(NetClientInfo *info, + NICConf *conf, + const char *model, + const char *name, + void *opaque); +void qemu_del_net_client(NetClientState *nc); +NetClientState *qemu_find_vlan_client_by_name(Monitor *mon, int vlan_id, + const char *client_str); +typedef void (*qemu_nic_foreach)(NICState *nic, void *opaque); +void qemu_foreach_nic(qemu_nic_foreach func, void *opaque); +int qemu_can_send_packet(NetClientState *nc); +ssize_t qemu_sendv_packet(NetClientState *nc, const struct iovec *iov, + int iovcnt); +ssize_t qemu_sendv_packet_async(NetClientState *nc, const struct iovec *iov, + int iovcnt, NetPacketSent *sent_cb); +void qemu_send_packet(NetClientState *nc, const uint8_t *buf, int size); +ssize_t qemu_send_packet_raw(NetClientState *nc, const uint8_t *buf, int size); +ssize_t qemu_send_packet_async(NetClientState *nc, const uint8_t *buf, + int size, NetPacketSent *sent_cb); +void qemu_purge_queued_packets(NetClientState *nc); +void qemu_flush_queued_packets(NetClientState *nc); +void qemu_format_nic_info_str(NetClientState *nc, uint8_t macaddr[6]); +void qemu_macaddr_default_if_unset(MACAddr *macaddr); +int qemu_show_nic_models(const char *arg, const char *const *models); +void qemu_check_nic_model(NICInfo *nd, const char *model); +int qemu_find_nic_model(NICInfo *nd, const char * const *models, + const char *default_model); + +ssize_t qemu_deliver_packet(NetClientState *sender, + unsigned flags, + const uint8_t *data, + size_t size, + void *opaque); +ssize_t qemu_deliver_packet_iov(NetClientState *sender, + unsigned flags, + const struct iovec *iov, + int iovcnt, + void *opaque); + +void print_net_client(Monitor *mon, NetClientState *nc); +void do_info_network(Monitor *mon); + +/* NIC info */ + +#define MAX_NICS 8 + +struct NICInfo { + MACAddr macaddr; + char *model; + char *name; + char *devaddr; + NetClientState *netdev; + int used; /* is this slot in nd_table[] being used? */ + int instantiated; /* does this NICInfo correspond to an instantiated NIC? */ + int nvectors; +}; + +extern int nb_nics; +extern NICInfo nd_table[MAX_NICS]; +extern int default_net; + +/* from net.c */ +extern const char *legacy_tftp_prefix; +extern const char *legacy_bootp_filename; + +int net_client_init(QemuOpts *opts, int is_netdev, Error **errp); +int net_client_parse(QemuOptsList *opts_list, const char *str); +int net_init_clients(void); +void net_check_clients(void); +void net_cleanup(void); +void net_host_device_add(Monitor *mon, const QDict *qdict); +void net_host_device_remove(Monitor *mon, const QDict *qdict); +void netdev_add(QemuOpts *opts, Error **errp); +int qmp_netdev_add(Monitor *mon, const QDict *qdict, QObject **ret); + +int net_hub_id_for_client(NetClientState *nc, int *id); +NetClientState *net_hub_port_find(int hub_id); + +#define DEFAULT_NETWORK_SCRIPT "/etc/qemu-ifup" +#define DEFAULT_NETWORK_DOWN_SCRIPT "/etc/qemu-ifdown" +#define DEFAULT_BRIDGE_HELPER CONFIG_QEMU_HELPERDIR "/qemu-bridge-helper" +#define DEFAULT_BRIDGE_INTERFACE "br0" + +void qdev_set_nic_properties(DeviceState *dev, NICInfo *nd); + +#define POLYNOMIAL 0x04c11db6 +unsigned compute_mcast_idx(const uint8_t *ep); + +#define vmstate_offset_macaddr(_state, _field) \ + vmstate_offset_array(_state, _field.a, uint8_t, \ + sizeof(typeof_field(_state, _field))) + +#define VMSTATE_MACADDR(_field, _state) { \ + .name = (stringify(_field)), \ + .size = sizeof(MACAddr), \ + .info = &vmstate_info_buffer, \ + .flags = VMS_BUFFER, \ + .offset = vmstate_offset_macaddr(_state, _field), \ +} + +#endif diff --git a/include/net/queue.h b/include/net/queue.h new file mode 100644 index 0000000..fc02b33 --- /dev/null +++ b/include/net/queue.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2003-2008 Fabrice Bellard + * Copyright (c) 2009 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef QEMU_NET_QUEUE_H +#define QEMU_NET_QUEUE_H + +#include "qemu-common.h" + +typedef struct NetPacket NetPacket; +typedef struct NetQueue NetQueue; + +typedef void (NetPacketSent) (NetClientState *sender, ssize_t ret); + +#define QEMU_NET_PACKET_FLAG_NONE 0 +#define QEMU_NET_PACKET_FLAG_RAW (1<<0) + +NetQueue *qemu_new_net_queue(void *opaque); + +void qemu_del_net_queue(NetQueue *queue); + +ssize_t qemu_net_queue_send(NetQueue *queue, + NetClientState *sender, + unsigned flags, + const uint8_t *data, + size_t size, + NetPacketSent *sent_cb); + +ssize_t qemu_net_queue_send_iov(NetQueue *queue, + NetClientState *sender, + unsigned flags, + const struct iovec *iov, + int iovcnt, + NetPacketSent *sent_cb); + +void qemu_net_queue_purge(NetQueue *queue, NetClientState *from); +bool qemu_net_queue_flush(NetQueue *queue); + +#endif /* QEMU_NET_QUEUE_H */ diff --git a/include/net/slirp.h b/include/net/slirp.h new file mode 100644 index 0000000..2ca09b6 --- /dev/null +++ b/include/net/slirp.h @@ -0,0 +1,47 @@ +/* + * QEMU System Emulator + * + * Copyright (c) 2003-2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#ifndef QEMU_NET_SLIRP_H +#define QEMU_NET_SLIRP_H + +#include "qemu-common.h" +#include "qdict.h" +#include "qemu-option.h" +#include "qapi-types.h" + +#ifdef CONFIG_SLIRP + +void net_slirp_hostfwd_add(Monitor *mon, const QDict *qdict); +void net_slirp_hostfwd_remove(Monitor *mon, const QDict *qdict); + +int net_slirp_redir(const char *redir_str); + +int net_slirp_parse_legacy(QemuOptsList *opts_list, const char *optarg, int *ret); + +int net_slirp_smb(const char *exported_dir); + +void do_info_usernet(Monitor *mon); + +#endif + +#endif /* QEMU_NET_SLIRP_H */ diff --git a/include/net/tap.h b/include/net/tap.h new file mode 100644 index 0000000..bb7efb5 --- /dev/null +++ b/include/net/tap.h @@ -0,0 +1,67 @@ +/* + * QEMU System Emulator + * + * Copyright (c) 2003-2008 Fabrice Bellard + * Copyright (c) 2009 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef QEMU_NET_TAP_H +#define QEMU_NET_TAP_H + +#include "qemu-common.h" +#include "qapi-types.h" + +int tap_has_ufo(NetClientState *nc); +int tap_has_vnet_hdr(NetClientState *nc); +int tap_has_vnet_hdr_len(NetClientState *nc, int len); +void tap_using_vnet_hdr(NetClientState *nc, int using_vnet_hdr); +void tap_set_offload(NetClientState *nc, int csum, int tso4, int tso6, int ecn, int ufo); +void tap_set_vnet_hdr_len(NetClientState *nc, int len); + +int tap_get_fd(NetClientState *nc); + +struct vhost_net; +struct vhost_net *tap_get_vhost_net(NetClientState *nc); + +struct virtio_net_hdr +{ +#define VIRTIO_NET_HDR_F_NEEDS_CSUM 1 // Use csum_start, csum_offset +#define VIRTIO_NET_HDR_F_DATA_VALID 2 // Csum is valid + uint8_t flags; +#define VIRTIO_NET_HDR_GSO_NONE 0 // Not a GSO frame +#define VIRTIO_NET_HDR_GSO_TCPV4 1 // GSO frame, IPv4 TCP (TSO) +#define VIRTIO_NET_HDR_GSO_UDP 3 // GSO frame, IPv4 UDP (UFO) +#define VIRTIO_NET_HDR_GSO_TCPV6 4 // GSO frame, IPv6 TCP +#define VIRTIO_NET_HDR_GSO_ECN 0x80 // TCP has ECN set + uint8_t gso_type; + uint16_t hdr_len; + uint16_t gso_size; + uint16_t csum_start; + uint16_t csum_offset; +}; + +struct virtio_net_hdr_mrg_rxbuf +{ + struct virtio_net_hdr hdr; + uint16_t num_buffers; /* Number of merged rx buffers */ +}; + +#endif /* QEMU_NET_TAP_H */ diff --git a/monitor.c b/monitor.c index bd63768..37b9d20 100644 --- a/monitor.c +++ b/monitor.c @@ -31,7 +31,7 @@ #include "hw/watchdog.h" #include "hw/loader.h" #include "gdbstub.h" -#include "net.h" +#include "net/net.h" #include "net/slirp.h" #include "qemu-char.h" #include "ui/qemu-spice.h" diff --git a/net.h b/net.h deleted file mode 100644 index 1d0816b..0000000 --- a/net.h +++ /dev/null @@ -1,172 +0,0 @@ -#ifndef QEMU_NET_H -#define QEMU_NET_H - -#include "qemu-queue.h" -#include "qemu-common.h" -#include "qdict.h" -#include "qemu-option.h" -#include "net/queue.h" -#include "vmstate.h" -#include "qapi-types.h" - -struct MACAddr { - uint8_t a[6]; -}; - -/* qdev nic properties */ - -typedef struct NICConf { - MACAddr macaddr; - NetClientState *peer; - int32_t bootindex; -} NICConf; - -#define DEFINE_NIC_PROPERTIES(_state, _conf) \ - DEFINE_PROP_MACADDR("mac", _state, _conf.macaddr), \ - DEFINE_PROP_VLAN("vlan", _state, _conf.peer), \ - DEFINE_PROP_NETDEV("netdev", _state, _conf.peer), \ - DEFINE_PROP_INT32("bootindex", _state, _conf.bootindex, -1) - -/* Net clients */ - -typedef void (NetPoll)(NetClientState *, bool enable); -typedef int (NetCanReceive)(NetClientState *); -typedef ssize_t (NetReceive)(NetClientState *, const uint8_t *, size_t); -typedef ssize_t (NetReceiveIOV)(NetClientState *, const struct iovec *, int); -typedef void (NetCleanup) (NetClientState *); -typedef void (LinkStatusChanged)(NetClientState *); - -typedef struct NetClientInfo { - NetClientOptionsKind type; - size_t size; - NetReceive *receive; - NetReceive *receive_raw; - NetReceiveIOV *receive_iov; - NetCanReceive *can_receive; - NetCleanup *cleanup; - LinkStatusChanged *link_status_changed; - NetPoll *poll; -} NetClientInfo; - -struct NetClientState { - NetClientInfo *info; - int link_down; - QTAILQ_ENTRY(NetClientState) next; - NetClientState *peer; - NetQueue *send_queue; - char *model; - char *name; - char info_str[256]; - unsigned receive_disabled : 1; -}; - -typedef struct NICState { - NetClientState nc; - NICConf *conf; - void *opaque; - bool peer_deleted; -} NICState; - -NetClientState *qemu_find_netdev(const char *id); -NetClientState *qemu_new_net_client(NetClientInfo *info, - NetClientState *peer, - const char *model, - const char *name); -NICState *qemu_new_nic(NetClientInfo *info, - NICConf *conf, - const char *model, - const char *name, - void *opaque); -void qemu_del_net_client(NetClientState *nc); -NetClientState *qemu_find_vlan_client_by_name(Monitor *mon, int vlan_id, - const char *client_str); -typedef void (*qemu_nic_foreach)(NICState *nic, void *opaque); -void qemu_foreach_nic(qemu_nic_foreach func, void *opaque); -int qemu_can_send_packet(NetClientState *nc); -ssize_t qemu_sendv_packet(NetClientState *nc, const struct iovec *iov, - int iovcnt); -ssize_t qemu_sendv_packet_async(NetClientState *nc, const struct iovec *iov, - int iovcnt, NetPacketSent *sent_cb); -void qemu_send_packet(NetClientState *nc, const uint8_t *buf, int size); -ssize_t qemu_send_packet_raw(NetClientState *nc, const uint8_t *buf, int size); -ssize_t qemu_send_packet_async(NetClientState *nc, const uint8_t *buf, - int size, NetPacketSent *sent_cb); -void qemu_purge_queued_packets(NetClientState *nc); -void qemu_flush_queued_packets(NetClientState *nc); -void qemu_format_nic_info_str(NetClientState *nc, uint8_t macaddr[6]); -void qemu_macaddr_default_if_unset(MACAddr *macaddr); -int qemu_show_nic_models(const char *arg, const char *const *models); -void qemu_check_nic_model(NICInfo *nd, const char *model); -int qemu_find_nic_model(NICInfo *nd, const char * const *models, - const char *default_model); - -ssize_t qemu_deliver_packet(NetClientState *sender, - unsigned flags, - const uint8_t *data, - size_t size, - void *opaque); -ssize_t qemu_deliver_packet_iov(NetClientState *sender, - unsigned flags, - const struct iovec *iov, - int iovcnt, - void *opaque); - -void print_net_client(Monitor *mon, NetClientState *nc); -void do_info_network(Monitor *mon); - -/* NIC info */ - -#define MAX_NICS 8 - -struct NICInfo { - MACAddr macaddr; - char *model; - char *name; - char *devaddr; - NetClientState *netdev; - int used; /* is this slot in nd_table[] being used? */ - int instantiated; /* does this NICInfo correspond to an instantiated NIC? */ - int nvectors; -}; - -extern int nb_nics; -extern NICInfo nd_table[MAX_NICS]; -extern int default_net; - -/* from net.c */ -extern const char *legacy_tftp_prefix; -extern const char *legacy_bootp_filename; - -int net_client_init(QemuOpts *opts, int is_netdev, Error **errp); -int net_client_parse(QemuOptsList *opts_list, const char *str); -int net_init_clients(void); -void net_check_clients(void); -void net_cleanup(void); -void net_host_device_add(Monitor *mon, const QDict *qdict); -void net_host_device_remove(Monitor *mon, const QDict *qdict); -void netdev_add(QemuOpts *opts, Error **errp); -int qmp_netdev_add(Monitor *mon, const QDict *qdict, QObject **ret); - -#define DEFAULT_NETWORK_SCRIPT "/etc/qemu-ifup" -#define DEFAULT_NETWORK_DOWN_SCRIPT "/etc/qemu-ifdown" -#define DEFAULT_BRIDGE_HELPER CONFIG_QEMU_HELPERDIR "/qemu-bridge-helper" -#define DEFAULT_BRIDGE_INTERFACE "br0" - -void qdev_set_nic_properties(DeviceState *dev, NICInfo *nd); - -#define POLYNOMIAL 0x04c11db6 -unsigned compute_mcast_idx(const uint8_t *ep); - -#define vmstate_offset_macaddr(_state, _field) \ - vmstate_offset_array(_state, _field.a, uint8_t, \ - sizeof(typeof_field(_state, _field))) - -#define VMSTATE_MACADDR(_field, _state) { \ - .name = (stringify(_field)), \ - .size = sizeof(MACAddr), \ - .info = &vmstate_info_buffer, \ - .flags = VMS_BUFFER, \ - .offset = vmstate_offset_macaddr(_state, _field), \ -} - -#endif diff --git a/net/checksum.h b/net/checksum.h deleted file mode 100644 index 1f05298..0000000 --- a/net/checksum.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * IP checksumming functions. - * (c) 2008 Gerd Hoffmann - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 2 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, see . - */ - -#ifndef QEMU_NET_CHECKSUM_H -#define QEMU_NET_CHECKSUM_H - -#include - -uint32_t net_checksum_add(int len, uint8_t *buf); -uint16_t net_checksum_finish(uint32_t sum); -uint16_t net_checksum_tcpudp(uint16_t length, uint16_t proto, - uint8_t *addrs, uint8_t *buf); -void net_checksum_calculate(uint8_t *data, int length); - -#endif /* QEMU_NET_CHECKSUM_H */ diff --git a/net/clients.h b/net/clients.h index c58cc60..7793294 100644 --- a/net/clients.h +++ b/net/clients.h @@ -24,7 +24,7 @@ #ifndef QEMU_NET_CLIENTS_H #define QEMU_NET_CLIENTS_H -#include "net.h" +#include "net/net.h" #include "qapi-types.h" int net_init_dump(const NetClientOptions *opts, const char *name, diff --git a/net/hub.c b/net/hub.c index be41301..8508ecf 100644 --- a/net/hub.c +++ b/net/hub.c @@ -13,7 +13,7 @@ */ #include "monitor.h" -#include "net.h" +#include "net/net.h" #include "clients.h" #include "hub.h" #include "iov.h" diff --git a/net/hub.h b/net/hub.h index 4cbfdb1..583ada8 100644 --- a/net/hub.h +++ b/net/hub.h @@ -20,8 +20,6 @@ NetClientState *net_hub_add_port(int hub_id, const char *name); NetClientState *net_hub_find_client_by_name(int hub_id, const char *name); void net_hub_info(Monitor *mon); -int net_hub_id_for_client(NetClientState *nc, int *id); void net_hub_check_clients(void); -NetClientState *net_hub_port_find(int hub_id); #endif /* NET_HUB_H */ diff --git a/net/net.c b/net/net.c index 7b1600f..a4395be 100644 --- a/net/net.c +++ b/net/net.c @@ -23,10 +23,10 @@ */ #include "config-host.h" -#include "net.h" +#include "net/net.h" #include "clients.h" #include "hub.h" -#include "slirp.h" +#include "net/slirp.h" #include "util.h" #include "monitor.h" diff --git a/net/queue.c b/net/queue.c index 254f280..542c549 100644 --- a/net/queue.c +++ b/net/queue.c @@ -23,7 +23,7 @@ #include "net/queue.h" #include "qemu-queue.h" -#include "net.h" +#include "net/net.h" /* The delivery handler may only return zero if it will call * qemu_net_queue_flush() when it determines that it is once again able diff --git a/net/queue.h b/net/queue.h deleted file mode 100644 index fc02b33..0000000 --- a/net/queue.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 2003-2008 Fabrice Bellard - * Copyright (c) 2009 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#ifndef QEMU_NET_QUEUE_H -#define QEMU_NET_QUEUE_H - -#include "qemu-common.h" - -typedef struct NetPacket NetPacket; -typedef struct NetQueue NetQueue; - -typedef void (NetPacketSent) (NetClientState *sender, ssize_t ret); - -#define QEMU_NET_PACKET_FLAG_NONE 0 -#define QEMU_NET_PACKET_FLAG_RAW (1<<0) - -NetQueue *qemu_new_net_queue(void *opaque); - -void qemu_del_net_queue(NetQueue *queue); - -ssize_t qemu_net_queue_send(NetQueue *queue, - NetClientState *sender, - unsigned flags, - const uint8_t *data, - size_t size, - NetPacketSent *sent_cb); - -ssize_t qemu_net_queue_send_iov(NetQueue *queue, - NetClientState *sender, - unsigned flags, - const struct iovec *iov, - int iovcnt, - NetPacketSent *sent_cb); - -void qemu_net_queue_purge(NetQueue *queue, NetClientState *from); -bool qemu_net_queue_flush(NetQueue *queue); - -#endif /* QEMU_NET_QUEUE_H */ diff --git a/net/slirp.c b/net/slirp.c index f117412..5a11ac5 100644 --- a/net/slirp.c +++ b/net/slirp.c @@ -29,7 +29,7 @@ #include #include #endif -#include "net.h" +#include "net/net.h" #include "clients.h" #include "hub.h" #include "monitor.h" diff --git a/net/slirp.h b/net/slirp.h deleted file mode 100644 index 2ca09b6..0000000 --- a/net/slirp.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * QEMU System Emulator - * - * Copyright (c) 2003-2008 Fabrice Bellard - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -#ifndef QEMU_NET_SLIRP_H -#define QEMU_NET_SLIRP_H - -#include "qemu-common.h" -#include "qdict.h" -#include "qemu-option.h" -#include "qapi-types.h" - -#ifdef CONFIG_SLIRP - -void net_slirp_hostfwd_add(Monitor *mon, const QDict *qdict); -void net_slirp_hostfwd_remove(Monitor *mon, const QDict *qdict); - -int net_slirp_redir(const char *redir_str); - -int net_slirp_parse_legacy(QemuOptsList *opts_list, const char *optarg, int *ret); - -int net_slirp_smb(const char *exported_dir); - -void do_info_usernet(Monitor *mon); - -#endif - -#endif /* QEMU_NET_SLIRP_H */ diff --git a/net/socket.c b/net/socket.c index cf309cd..8430f1a 100644 --- a/net/socket.c +++ b/net/socket.c @@ -23,7 +23,7 @@ */ #include "config-host.h" -#include "net.h" +#include "net/net.h" #include "clients.h" #include "monitor.h" #include "qemu-common.h" diff --git a/net/tap-aix.c b/net/tap-aix.c index f27c177..aff6c52 100644 --- a/net/tap-aix.c +++ b/net/tap-aix.c @@ -22,7 +22,7 @@ * THE SOFTWARE. */ -#include "net/tap.h" +#include "tap_int.h" #include int tap_open(char *ifname, int ifname_size, int *vnet_hdr, int vnet_hdr_required) diff --git a/net/tap-bsd.c b/net/tap-bsd.c index a3b717d..a1c55ad 100644 --- a/net/tap-bsd.c +++ b/net/tap-bsd.c @@ -22,7 +22,7 @@ * THE SOFTWARE. */ -#include "net/tap.h" +#include "tap_int.h" #include "qemu-common.h" #include "sysemu.h" #include "qemu-error.h" diff --git a/net/tap-haiku.c b/net/tap-haiku.c index 34739d1..08cc034 100644 --- a/net/tap-haiku.c +++ b/net/tap-haiku.c @@ -22,7 +22,7 @@ * THE SOFTWARE. */ -#include "net/tap.h" +#include "tap_int.h" #include int tap_open(char *ifname, int ifname_size, int *vnet_hdr, int vnet_hdr_required) diff --git a/net/tap-linux.c b/net/tap-linux.c index 3eaedc4..3de7b3b 100644 --- a/net/tap-linux.c +++ b/net/tap-linux.c @@ -23,8 +23,9 @@ * THE SOFTWARE. */ +#include "tap_int.h" +#include "tap-linux.h" #include "net/tap.h" -#include "net/tap-linux.h" #include #include diff --git a/net/tap-linux.h b/net/tap-linux.h index 659e981..cb2a6d4 100644 --- a/net/tap-linux.h +++ b/net/tap-linux.h @@ -13,8 +13,8 @@ * GNU General Public License for more details. */ -#ifndef QEMU_TAP_H -#define QEMU_TAP_H +#ifndef QEMU_TAP_LINUX_H +#define QEMU_TAP_LINUX_H #include #ifdef __linux__ @@ -44,20 +44,4 @@ #define TUN_F_TSO_ECN 0x08 /* I can handle TSO with ECN bits. */ #define TUN_F_UFO 0x10 /* I can handle UFO packets */ -struct virtio_net_hdr -{ - uint8_t flags; - uint8_t gso_type; - uint16_t hdr_len; - uint16_t gso_size; - uint16_t csum_start; - uint16_t csum_offset; -}; - -struct virtio_net_hdr_mrg_rxbuf -{ - struct virtio_net_hdr hdr; - uint16_t num_buffers; /* Number of merged rx buffers */ -}; - #endif /* QEMU_TAP_H */ diff --git a/net/tap-solaris.c b/net/tap-solaris.c index 5d6ac42..f228fff 100644 --- a/net/tap-solaris.c +++ b/net/tap-solaris.c @@ -22,7 +22,7 @@ * THE SOFTWARE. */ -#include "net/tap.h" +#include "tap_int.h" #include "sysemu.h" #include diff --git a/net/tap-win32.c b/net/tap-win32.c index f9bd741..e37d8ee 100644 --- a/net/tap-win32.c +++ b/net/tap-win32.c @@ -26,11 +26,11 @@ * distribution); if not, see . */ -#include "tap.h" +#include "tap_int.h" #include "qemu-common.h" #include "clients.h" /* net_init_tap */ -#include "net.h" +#include "net/net.h" #include "sysemu.h" #include "qemu-error.h" #include diff --git a/net/tap.c b/net/tap.c index 5ff7893..f8cabc4 100644 --- a/net/tap.c +++ b/net/tap.c @@ -23,7 +23,7 @@ * THE SOFTWARE. */ -#include "tap.h" +#include "tap_int.h" #include "config-host.h" @@ -33,14 +33,14 @@ #include #include -#include "net.h" +#include "net/net.h" #include "clients.h" #include "monitor.h" #include "sysemu.h" #include "qemu-common.h" #include "qemu-error.h" -#include "net/tap-linux.h" +#include "net/tap.h" #include "hw/vhost_net.h" diff --git a/net/tap.h b/net/tap.h deleted file mode 100644 index d44d83a..0000000 --- a/net/tap.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * QEMU System Emulator - * - * Copyright (c) 2003-2008 Fabrice Bellard - * Copyright (c) 2009 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#ifndef QEMU_NET_TAP_H -#define QEMU_NET_TAP_H - -#include "qemu-common.h" -#include "qapi-types.h" - -#define DEFAULT_NETWORK_SCRIPT "/etc/qemu-ifup" -#define DEFAULT_NETWORK_DOWN_SCRIPT "/etc/qemu-ifdown" - -int tap_open(char *ifname, int ifname_size, int *vnet_hdr, int vnet_hdr_required); - -ssize_t tap_read_packet(int tapfd, uint8_t *buf, int maxlen); - -int tap_has_ufo(NetClientState *nc); -int tap_has_vnet_hdr(NetClientState *nc); -int tap_has_vnet_hdr_len(NetClientState *nc, int len); -void tap_using_vnet_hdr(NetClientState *nc, int using_vnet_hdr); -void tap_set_offload(NetClientState *nc, int csum, int tso4, int tso6, int ecn, int ufo); -void tap_set_vnet_hdr_len(NetClientState *nc, int len); - -int tap_set_sndbuf(int fd, const NetdevTapOptions *tap); -int tap_probe_vnet_hdr(int fd); -int tap_probe_vnet_hdr_len(int fd, int len); -int tap_probe_has_ufo(int fd); -void tap_fd_set_offload(int fd, int csum, int tso4, int tso6, int ecn, int ufo); -void tap_fd_set_vnet_hdr_len(int fd, int len); - -int tap_get_fd(NetClientState *nc); - -struct vhost_net; -struct vhost_net *tap_get_vhost_net(NetClientState *nc); - -#endif /* QEMU_NET_TAP_H */ diff --git a/net/tap_int.h b/net/tap_int.h new file mode 100644 index 0000000..1dffe12 --- /dev/null +++ b/net/tap_int.h @@ -0,0 +1,46 @@ +/* + * QEMU System Emulator + * + * Copyright (c) 2003-2008 Fabrice Bellard + * Copyright (c) 2009 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef QEMU_TAP_H +#define QEMU_TAP_H + +#include "qemu-common.h" +#include "qapi-types.h" + +#define DEFAULT_NETWORK_SCRIPT "/etc/qemu-ifup" +#define DEFAULT_NETWORK_DOWN_SCRIPT "/etc/qemu-ifdown" + +int tap_open(char *ifname, int ifname_size, int *vnet_hdr, int vnet_hdr_required); + +ssize_t tap_read_packet(int tapfd, uint8_t *buf, int maxlen); + +int tap_set_sndbuf(int fd, const NetdevTapOptions *tap); +int tap_probe_vnet_hdr(int fd); +int tap_probe_vnet_hdr_len(int fd, int len); +int tap_probe_has_ufo(int fd); +void tap_fd_set_offload(int fd, int csum, int tso4, int tso6, int ecn, int ufo); +void tap_fd_set_vnet_hdr_len(int fd, int len); + +#endif /* QEMU_TAP_H */ diff --git a/net/util.c b/net/util.c index 1e9afbc..7e95076 100644 --- a/net/util.c +++ b/net/util.c @@ -22,7 +22,7 @@ * THE SOFTWARE. */ -#include "net/util.h" +#include "util.h" #include #include diff --git a/net/vde.c b/net/vde.c index cc5a07d..52d4f19 100644 --- a/net/vde.c +++ b/net/vde.c @@ -25,7 +25,7 @@ #include -#include "net.h" +#include "net/net.h" #include "clients.h" #include "qemu-common.h" #include "qemu-option.h" diff --git a/savevm.c b/savevm.c index f5886ce..ae87878 100644 --- a/savevm.c +++ b/savevm.c @@ -72,7 +72,7 @@ #include "qemu-common.h" #include "hw/hw.h" #include "hw/qdev.h" -#include "net.h" +#include "net/net.h" #include "monitor.h" #include "sysemu.h" #include "qemu-timer.h" diff --git a/vl.c b/vl.c index 571a49b..a7eeafc 100644 --- a/vl.c +++ b/vl.c @@ -127,7 +127,7 @@ int main(int argc, char **argv) #include "hw/qdev.h" #include "hw/loader.h" #include "bt-host.h" -#include "net.h" +#include "net/net.h" #include "net/slirp.h" #include "monitor.h" #include "console.h" -- cgit v1.1