[libvirt] [PATCH 0/4] Add support for VirtualBox 4.3 APIs
by Ryota Ozaki
This patch set adds support for VirtualBox 4.3 APIs.
The first two patches clean up existing code to make it easy
to add new code. The third patch imports the header file of
4.3 APIs. The last patch actually adds code to support 4.3
APIs.
This patch set doesn't add any new features introduced by
new APIs, but just fixes incompatibilies since API 4.2.
This patch set is tested on Mac OS X 10.8.5 and Fedora 19.
ozaki-r
Ryota Ozaki (4):
vbox: cleanup vboxAttachUSB
vbox: pull vboxHostDeviceGetXMLDesc out from vboxDomainGetXMLDesc
vbox: import vbox_CAPI_v4_3.h from SDK
vbox: add support for 4.3 APIs
src/Makefile.am | 3 +-
src/vbox/vbox_CAPI_v4_3.h | 10210 ++++++++++++++++++++++++++++++++++++++++++++
src/vbox/vbox_V4_3.c | 13 +
src/vbox/vbox_driver.c | 8 +
src/vbox/vbox_tmpl.c | 414 +-
5 files changed, 10483 insertions(+), 165 deletions(-)
create mode 100644 src/vbox/vbox_CAPI_v4_3.h
create mode 100644 src/vbox/vbox_V4_3.c
--
1.8.4
11 years
[libvirt] [PATCH] maint: next release is 1.2.0
by Eric Blake
I didn't find any other instances with:
git grep '1\.1\.5'
* src/test/test_driver.c (testDriver): Tweak version info.
Signed-off-by: Eric Blake <eblake(a)redhat.com>
---
Pushing under the trivial rule.
src/test/test_driver.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/test/test_driver.c b/src/test/test_driver.c
index 469223e..c1f1cd4 100644
--- a/src/test/test_driver.c
+++ b/src/test/test_driver.c
@@ -7193,7 +7193,7 @@ static virDriver testDriver = {
.domainRevertToSnapshot = testDomainRevertToSnapshot, /* 1.1.4 */
.domainSnapshotDelete = testDomainSnapshotDelete, /* 1.1.4 */
- .connectBaselineCPU = testConnectBaselineCPU, /* 1.1.5 */
+ .connectBaselineCPU = testConnectBaselineCPU, /* 1.2.0 */
};
static virNetworkDriver testNetworkDriver = {
--
1.8.3.1
11 years
[libvirt] [PATCH] LXC: add securetty related note in Device nodes
by Gao feng
Tell user how to resolve the problem that fail to log in
the container.
Signed-off-by: Gao feng <gaofeng(a)cn.fujitsu.com>
---
docs/drvlxc.html.in | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/docs/drvlxc.html.in b/docs/drvlxc.html.in
index ca488f7..d5a4410 100644
--- a/docs/drvlxc.html.in
+++ b/docs/drvlxc.html.in
@@ -164,6 +164,14 @@ numbered incrementally from there.
</p>
<p>
+Since /dev/ttyN and /dev/console are linked to the pts devices. The
+tty device of login program is pts device. the pam module securetty
+may prevent root user from logging in container. If you want root
+user to log in container successfully, add the pts device to the file
+/etc/securetty of container.
+</p>
+
+<p>
Further block or character devices will be made available to containers
depending on their configuration.
</p>
--
1.8.3.1
11 years
[libvirt] [PATCH v2]lxc: don't do duplicate work when getting pagesize
by Chen Hanxiao
From: Chen Hanxiao <chenhanxiao(a)cn.fujitsu.com>
Don't do duplicate work when getting pagesize.
Signed-off-by: Chen Hanxiao <chenhanxiao(a)cn.fujitsu.com>
---
v2: remove redundant debug log
src/lxc/lxc_container.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
index 2bdf957..00bbaf7 100644
--- a/src/lxc/lxc_container.c
+++ b/src/lxc/lxc_container.c
@@ -144,6 +144,7 @@ int lxcContainerHasReboot(void)
int cmd, v;
int status;
char *tmp;
+ int stacksize = getpagesize() * 4;
if (virFileReadAll("/proc/sys/kernel/ctrl-alt-del", 10, &buf) < 0)
return -1;
@@ -160,10 +161,10 @@ int lxcContainerHasReboot(void)
VIR_FREE(buf);
cmd = v ? LINUX_REBOOT_CMD_CAD_ON : LINUX_REBOOT_CMD_CAD_OFF;
- if (VIR_ALLOC_N(stack, getpagesize() * 4) < 0)
+ if (VIR_ALLOC_N(stack, stacksize) < 0)
return -1;
- childStack = stack + (getpagesize() * 4);
+ childStack = stack + stacksize;
cpid = clone(lxcContainerRebootChild, childStack, flags, &cmd);
VIR_FREE(stack);
@@ -2031,6 +2032,7 @@ int lxcContainerStart(virDomainDefPtr def,
/* allocate a stack for the container */
if (VIR_ALLOC_N(stack, stacksize) < 0)
return -1;
+
stacktop = stack + stacksize;
cflags = CLONE_NEWPID|CLONE_NEWNS|CLONE_NEWUTS|CLONE_NEWIPC|SIGCHLD;
@@ -2078,6 +2080,7 @@ int lxcContainerAvailable(int features)
int cpid;
char *childStack;
char *stack;
+ int stacksize = getpagesize() * 4;
if (features & LXC_CONTAINER_FEATURE_USER)
flags |= CLONE_NEWUSER;
@@ -2085,12 +2088,10 @@ int lxcContainerAvailable(int features)
if (features & LXC_CONTAINER_FEATURE_NET)
flags |= CLONE_NEWNET;
- if (VIR_ALLOC_N(stack, getpagesize() * 4) < 0) {
- VIR_DEBUG("Unable to allocate stack");
+ if (VIR_ALLOC_N(stack, stacksize) < 0)
return -1;
- }
- childStack = stack + (getpagesize() * 4);
+ childStack = stack + stacksize;
cpid = clone(lxcContainerDummyChild, childStack, flags, NULL);
VIR_FREE(stack);
--
1.8.2.1
11 years
[libvirt] [test-API][PATCH] add new patch for testing pinemulator API
by Xuesong Zhang
---
cases/pinemulator.conf | 46 +++++++++++++++++++++++++
repos/domain/pinemulator.py | 84 +++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 130 insertions(+)
create mode 100755 cases/pinemulator.conf
create mode 100755 repos/domain/pinemulator.py
diff --git a/cases/pinemulator.conf b/cases/pinemulator.conf
new file mode 100755
index 0000000..2f270f3
--- /dev/null
+++ b/cases/pinemulator.conf
@@ -0,0 +1,46 @@
+domain:install_linux_cdrom
+ guestname
+ $defaultname
+ guestos
+ $defaultos
+ guestarch
+ $defaultarch
+ vcpu
+ $defaultvcpu
+ memory
+ $defaultmem
+ hddriver
+ $defaulthd
+ nicdriver
+ $defaultnic
+ imageformat
+ qcow2
+
+domain:pinemulator
+ guestname
+ $defaultname
+ cpulist
+ 0-2
+
+domain:pinemulator
+ guestname
+ $defaultname
+ cpulist
+ 3
+
+domain:pinemulator
+ guestname
+ $defaultname
+ cpulist
+ 0,2
+
+domain:destroy
+ guestname
+ $defaultname
+
+
+domain:undefine
+ guestname
+ $defaultname
+
+options cleanup=enable
\ No newline at end of file
diff --git a/repos/domain/pinemulator.py b/repos/domain/pinemulator.py
new file mode 100755
index 0000000..8d7b800
--- /dev/null
+++ b/repos/domain/pinemulator.py
@@ -0,0 +1,84 @@
+#!/usr/bin/env python
+""" Query or change the pinning of domain's emulator threads to
+ host physical CPUs."""
+
+
+import libvirt
+from libvirt import libvirtError
+
+from src import sharedmod
+from utils import utils
+
+required_params = ('guestname', 'cpulist',)
+optional_params = {}
+
+def check_pinemulator(guestname, maxcpu, pininfo_after):
+ """check emulator status of the running virtual machine
+ """
+
+ cmd = "cat /var/run/libvirt/qemu/%s.pid" % guestname
+ status, pid = utils.exec_cmd(cmd, shell=True)
+ if status:
+ logger.error("failed to get the pid of domain %s" % guestname)
+ return 1
+
+ cmd = "grep Cpus_allowed_list /proc/%s/task/%s/status" % (pid[0], pid[0])
+ status, output = utils.exec_cmd(cmd, shell=True)
+ if status:
+ logger.error("failed to get Cpus_allowed_list")
+ return 1
+
+ cpu_allowed_list = output[0]
+ cpulistcheck = cpu_allowed_list.split('\t')[1]
+ pininfo_in_process = str(utils.param_to_tuple(cpulistcheck, maxcpu))
+
+ if cmp(pininfo_in_process, pininfo_after):
+ logger.error("domain emulator pin failed")
+ return 1
+ else:
+ logger.info("domain emulator pin successed")
+ return 0
+
+
+def pinemulator(params):
+ """Dynamically change the real CPUs which can be allocated to the
+ emulator process of a domain. This function requires privileged
+ access to the hypervisor. """
+ global logger
+ logger = params['logger']
+ guestname = params['guestname']
+ cpulist = params['cpulist']
+
+ logger.info("the name of virtual machine is %s" % guestname)
+ logger.info("the given cpulist is %s" % cpulist)
+
+ maxcpu = utils.get_host_cpus()
+ logger.info("%s physical cpu on host" % maxcpu)
+
+ cpumap = utils.param_to_tuple(cpulist, maxcpu)
+ if not cpumap:
+ logger.error("cpulist: Invalid format")
+ return 1
+
+ conn = sharedmod.libvirtobj['conn']
+
+ try:
+ domobj = conn.lookupByName(guestname)
+
+ pininfo_original = str(domobj.emulatorPinInfo())
+ logger.info("the original emulator pin of the domain is: %s" % \
+ pininfo_original)
+
+ logger.info("pin domain emulator to host cpu %s" % cpulist)
+ domobj.pinEmulator(cpumap)
+
+ pininfo_after = str(domobj.emulatorPinInfo())
+ logger.info("the revised emulator pin of the domain is: %s" % \
+ pininfo_after)
+
+ ret = check_pinemulator(guestname, maxcpu, pininfo_after)
+ return ret
+
+ except libvirtError, e:
+ logger.error("libvirt call failed: " + str(e))
+ return 1
--
1.8.3.1
11 years
[libvirt] [PATCH libvirt-python v3 00/40] Split python binding into separate repo
by Daniel P. Berrange
From: "Daniel P. Berrange" <berrange(a)redhat.com>
This patch series is a followup to
https://www.redhat.com/archives/libvir-list/2013-November/msg00712.html
This series is what I consider ready to declare final, ready for the real
GIT repo split to be done.
Starting from libvirt GIT master as of
commit bae383f29194b9c61f9ab245f493ce7d654868d1
Author: Daniel P. Berrange <berrange(a)redhat.com>
Date: Fri Nov 22 14:32:23 2013 +0000
I did the following
$ git clone libvirt libvirt-python
$ cd libvirt-python
$ git mv examples/python python/examples
$ git mv examples/domain-events/events-python/event-test.py python/examples
$ git commit
$ git filter-branch --subdirectory-filter python --tag-name-filter cat -- --all
$ git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
$ git reflog expire --expire=now --all
$ git gc --prune=now
Then applied the following 40 patches using git am -3
You should now have a repo that's a couple of MB in size, showing only the
files from python/ dir, in the root.
The tags have been re-written to show content from the python/ directory.
All the GPG signatures from tags are removed, since they are invalid
after rewriting history. This was previously agreed to be the right
way to handle this.
The build system uses python distutils instead of autoconf/automake.
It still uses the code generator as before though, pulling the XML
files from /usr/share/libvirt/api (or whever you installed libvirt,
as indicated by pkg-config).
created a simple autobuild.sh to do an end-to-end build, including
the RPM generation. Or you can just do
python setup.py build ('make' equiv)
python setup.py test ('make check' equiv)
python setup.py rpm ('make rpm' equiv)
python setup.py clean ('make clean' equiv)
Historically libvirt python only worked with the exact matching libvirt
binary. With this series, it is now possible to compile against any
version back to 0.9.11.
It is not possible to go back further than this, since the libvirt-api.xml
file we need was not installed into /usr/share prior to 0.9.11. As such I
removed Doug's patches which dealt with 0.9.6->0.9.10 Fortunately it seems
0.9.11 is in fact sufficient for OpenStack's targetted distros.
The full GIT tree is
git clone git://fedorapeople.org/~berrange/libvirt-python-v9.git
Please take a moment to examine this. Unless bugs are found, this
GIT repo will be moved as-is onto libvirt.org GIT.
For doing releases, the following process would be needed
...build and install the new libvirt release RPM first...
$ cd libvirt-python.git
$ git tag -s -m 'Release 1.2.0' v1.2.0
$ ./autobuild.sh
$ git push master v1.2.0
Now the 'dist/libvirt-python-X.y.z.tar.gz' file should be copied
to http://libvirt.org/sources/python/ and also uploaded to PyPI
Distutils can do the upload, but is deprecated since it passes
your passwd in cleartext over the net :-( Instead OpenStack
guys recommend use of twine
https://pypi.python.org/pypi/twine
eg
$ twine upload dist/libvirt-python-x.y.z.tar.gz
Unfortunately 'twine' isn't in Fedora repos, but is easy to
install it locally using 'pip install twine'
Daniel
Daniel P. Berrange (20):
Remove obsolete Makefile.am
Update generator for new code layout
Update header file includes
Import STREQ macro from libvirt
Add decl of MIN macro
Import gnulib's xalloc_oversized macro
Import gnulib's ignore_value macro
Import code annotation macros from libvirt
Import VIR_ALLOC / VIR_ALLOC_N / VIR_REALLOC_N functions
Remove use of virStrcpyStatic
Import VIR_FORCE_CLOSE macro from libvirt
Add build/ to python module path for sanitytest.py
Add execute permission for sanitytest.py
Setup distutils build system
VIR_DOMAIN_EVENT_ID_BALLOON_CHANGED appeared in 0.10.0
virDomainQemuAgentCommand appeared in 0.10.0
VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK appeared in 1.0.0
VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED appeared in 1.1.1
Relax min required libvirt to version 0.9.11
Ensure API overrides only used if API exists
Doug Goldstein (20):
Import LIBVIR_CHECK_VERSION macro from libvirt
Import some virTypedParams* APIs from libvirt
Break generator.py to be called per module
Create array of modules to be built
Don't build LXC module when building less than 1.0.2
virDomainListAllSnapshots API appeared in 0.9.13
virConnectListAllDomains API appeared in 0.9.13
virDomainSnapshotListAllChildren API appeared in 0.9.13
virConnect{Unr,R}egisterCloseCallback API appeared in 0.10.0
virDomainPinEmulator and virDomainGetEmulatorPinInfo APIs appeared in
0.10.0
virConnectListAll* APIs appeared in 0.10.2
virNode{Get,Set}MemoryParameters API appeared in 0.10.2
virStoragePoolListAllVolumes API appeared in 0.10.2
virNodeGetCPUMap API appeared in 1.0.0
virDomainGetJobStats API appeared in 1.0.3
virDomainMigrateGetCompressionCache API appeared in 1.0.3
virTypedParams* API appeared in 1.0.2 and used in 1.1.0
virDomainMigrate3 and virDomainMigrateToURI3 appeared in 1.1.0
virDomainCreateXMLWithFiles and virDomainCreateWithFiles APIs appeared
in 1.1.1
virConnectGetCPUModelNames API appeared in 1.1.3
.gitignore | 4 +
AUTHORS.in | 12 ++
COPYING | 339 ++++++++++++++++++++++++++++++++
COPYING.LESSER | 502 ++++++++++++++++++++++++++++++++++++++++++++++++
MANIFEST.in | 35 ++++
Makefile.am | 173 -----------------
NEWS | 9 +
autobuild.sh | 24 +++
examples/Makefile.am | 21 --
generator.py | 94 +++++----
libvirt-lxc-override.c | 9 +-
libvirt-override.c | 222 ++++++++++++++-------
libvirt-python.spec.in | 34 ++++
libvirt-qemu-override.c | 13 +-
libvirt-utils.c | 186 ++++++++++++++++++
libvirt-utils.h | 209 ++++++++++++++++++++
sanitytest.py | 4 +
setup.py | 296 ++++++++++++++++++++++++++++
typewrappers.c | 5 +-
19 files changed, 1866 insertions(+), 325 deletions(-)
create mode 100644 .gitignore
create mode 100644 AUTHORS.in
create mode 100644 COPYING
create mode 100644 COPYING.LESSER
create mode 100644 MANIFEST.in
delete mode 100644 Makefile.am
create mode 100644 NEWS
create mode 100755 autobuild.sh
delete mode 100644 examples/Makefile.am
create mode 100644 libvirt-python.spec.in
create mode 100644 libvirt-utils.c
create mode 100644 libvirt-utils.h
mode change 100644 => 100755 sanitytest.py
create mode 100644 setup.py
--
1.8.3.1
11 years
[libvirt] [PATCH]lxc: don't do duplicate work when getting pagesize
by Chen Hanxiao
From: Chen Hanxiao <chenhanxiao(a)cn.fujitsu.com>
Don't do duplicate work when getting pagesize.
With some debug logs added.
Signed-off-by: Chen Hanxiao <chenhanxiao(a)cn.fujitsu.com>
---
src/lxc/lxc_container.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
index 255c711..e85d01c 100644
--- a/src/lxc/lxc_container.c
+++ b/src/lxc/lxc_container.c
@@ -144,6 +144,7 @@ int lxcContainerHasReboot(void)
int cmd, v;
int status;
char *tmp;
+ int stacksize = getpagesize() * 4;
if (virFileReadAll("/proc/sys/kernel/ctrl-alt-del", 10, &buf) < 0)
return -1;
@@ -160,10 +161,12 @@ int lxcContainerHasReboot(void)
VIR_FREE(buf);
cmd = v ? LINUX_REBOOT_CMD_CAD_ON : LINUX_REBOOT_CMD_CAD_OFF;
- if (VIR_ALLOC_N(stack, getpagesize() * 4) < 0)
+ if (VIR_ALLOC_N(stack, stacksize) < 0) {
+ VIR_DEBUG("Unable to allocate stack");
return -1;
+ }
- childStack = stack + (getpagesize() * 4);
+ childStack = stack + stacksize;
cpid = clone(lxcContainerRebootChild, childStack, flags, &cmd);
VIR_FREE(stack);
@@ -2011,8 +2014,10 @@ int lxcContainerStart(virDomainDefPtr def,
};
/* allocate a stack for the container */
- if (VIR_ALLOC_N(stack, stacksize) < 0)
+ if (VIR_ALLOC_N(stack, stacksize) < 0) {
+ VIR_DEBUG("Unable to allocate stack");
return -1;
+ }
stacktop = stack + stacksize;
cflags = CLONE_NEWPID|CLONE_NEWNS|CLONE_NEWUTS|CLONE_NEWIPC|SIGCHLD;
@@ -2060,6 +2065,7 @@ int lxcContainerAvailable(int features)
int cpid;
char *childStack;
char *stack;
+ int stacksize = getpagesize() * 4;
if (features & LXC_CONTAINER_FEATURE_USER)
flags |= CLONE_NEWUSER;
@@ -2067,12 +2073,12 @@ int lxcContainerAvailable(int features)
if (features & LXC_CONTAINER_FEATURE_NET)
flags |= CLONE_NEWNET;
- if (VIR_ALLOC_N(stack, getpagesize() * 4) < 0) {
+ if (VIR_ALLOC_N(stack, stacksize) < 0) {
VIR_DEBUG("Unable to allocate stack");
return -1;
}
- childStack = stack + (getpagesize() * 4);
+ childStack = stack + stacksize;
cpid = clone(lxcContainerDummyChild, childStack, flags, NULL);
VIR_FREE(stack);
--
1.8.2.1
11 years
[libvirt] [PATCH 1/1] qemu: Remove default memory balloon for PPC64
by Li Zhang
From: Li Zhang <zhlcindy(a)linux.vnet.ibm.com>
It doesn't need to add a default memory balloon for PPC64.
Only if users want it, it can be added explicitly.
Signed-off-by: Li Zhang <zhlcindy(a)linux.vnet.ibm.com>
---
src/qemu/qemu_command.c | 12 ------------
src/qemu/qemu_domain.c | 12 ++++++++----
2 files changed, 8 insertions(+), 16 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 8dc7e43..a1e5387 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -11989,18 +11989,6 @@ qemuParseCommandLine(virCapsPtr qemuCaps,
def->videos[def->nvideos++] = vid;
}
- /*
- * having a balloon is the default, define one with type="none" to avoid it
- */
- if (!def->memballoon) {
- virDomainMemballoonDefPtr memballoon;
- if (VIR_ALLOC(memballoon) < 0)
- goto error;
- memballoon->model = VIR_DOMAIN_MEMBALLOON_MODEL_VIRTIO;
-
- def->memballoon = memballoon;
- }
-
VIR_FREE(nics);
if (virDomainDefAddImplicitControllers(def) < 0)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 346fec3..0744e89 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -724,13 +724,17 @@ qemuDomainDefPostParse(virDomainDefPtr def,
break;
case VIR_ARCH_ARMV7L:
- addDefaultUSB = false;
- addDefaultMemballoon = false;
- break;
+ addDefaultUSB = false;
+ addDefaultMemballoon = false;
+ break;
+
+ case VIR_ARCH_PPC64:
+ addPCIRoot = true;
+ addDefaultMemballoon = false;
+ break;
case VIR_ARCH_ALPHA:
case VIR_ARCH_PPC:
- case VIR_ARCH_PPC64:
case VIR_ARCH_PPCEMB:
case VIR_ARCH_SH4:
case VIR_ARCH_SH4EB:
--
1.8.2.1
11 years
[libvirt] [PATCH] maint: update to latest gnulib
by Eric Blake
Among others, this fixes getgroups for MacOS and fpending for Cygwin.
* .gnulib: Update to latest.
Signed-off-by: Eric Blake <eblake(a)redhat.com>
---
Pushing prior to freeze under the gnulib rule.
* .gnulib 8f74258...831b84c (16):
> quotearg: don't attempt to store 1 << 31 into an "int"
> error: depend on stdio
> doc: Improve wording in relocatable-maint.texi.
> Fix indentation in previous patch.
> * lib/getgroups.c (posix_getgroups, getgroups) [__APPLE__]:
> base64: provide a fast path for encoding well sized buffers
> extern-inline: port better to OS X 10.9
> fpending: fix typo
> fpending: fix regression on DragonFly BSD
> hash: relax license to LGPLv2+, for libguestfs
> intprops: port to Oracle Studio c99
> obstack: pacify HP C
> maint.mk: prefer gpgv2 over gpgv
> isnan: port to VAX
> gnulib-tool: protect against CDPATH
> maint.mk: restore functionality removed by recent change
.gnulib | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.gnulib b/.gnulib
index 8f74258..831b84c 160000
--- a/.gnulib
+++ b/.gnulib
@@ -1 +1 @@
-Subproject commit 8f7425866463f994538584d1dd7211603b8b0550
+Subproject commit 831b84c59ef413c57a36b67344467d66a8a2ba70
--
1.8.3.1
11 years
[libvirt] Libvirt, nwfilter, openvswitch
by Jan De Landtsheer
Hello,
I _was_ trying to set up an nwfilter for our networking set-up with VXLAN
and openvswitch, where we use VXLAN as carrier for separate networks
(unlike OpenStack gre-tunnels).
But with OVS, ebtables do not work, and the basic setup of nwfilter rules
are based on this premise... or so I understand...
Now..
Is there a way to define nwfilter rules _without_ ebtables ?
What I would like to do is quite simple (block out dhcp{4,6} services from
VM's, and ipv6 router advertisements )
Thanks
11 years