I think I can now narrow the problem down considerably.  When I run the image manually as

/usr/libexec/qemu-kvm -name test -enable-kvm -cpu host -m 4G -nographic -hda /home/kcli/images/podvm.qcow2 -device virtio-net,netdev=netdev0,id=net0 -netdev tap,br=virbr0,helper=/usr/libexec/qemu-bridge-helper,id=netdev0

it will correctly acquire an IP address via virbr0's DHCP, in other words it will do what I expect it to do.  I guess this means there's nothing wrong about the image and its DHCP setup.

For comparison, when launched from peer pods the command line is

/usr/libexec/qemu-kvm -name guest=podvm-podsandbox-totok-8f10756a,debug-threads=on -S -object {"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain-23-podvm-podsandbox-tot/master-key.aes"} -machine pc-i440fx-rhel10.0.0,usb=off,vmport=off,dump-guest-core=on,memory-backend=pc.ram,acpi=on -accel kvm -cpu Cascadelake-Server,vmx=on,pdcm=on,hypervisor=on,ss=on,tsc-adjust=on,fdp-excptn-only=on,zero-fcs-fds=on,mpx=on,umip=on,pku=on,md-clear=on,stibp=on,flush-l1d=on,arch-capabilities=on,xsaves=on,ibpb=on,ibrs=on,amd-stibp=on,amd-ssbd=on,rdctl-no=on,ibrs-all=on,skip-l1dfl-vmentry=on,mds-no=on,pschange-mc-no=on,tsx-ctrl=on,sbdr-ssdp-no=on,psdp-no=on,fb-clear=on,gds-no=on,rfds-no=on,vmx-ins-outs=on,vmx-true-ctls=on,vmx-store-lma=on,vmx-activity-hlt=on,vmx-activity-wait-sipi=on,vmx-vmwrite-vmexit-fields=on,vmx-apicv-xapic=on,vmx-ept=on,vmx-desc-exit=on,vmx-rdtscp-exit=on,vmx-apicv-x2apic=on,vmx-vpid=on,vmx-wbinvd-exit=on,vmx-unrestricted-guest=on,vmx-apicv-register=on,vmx-apicv-vid=on,vmx-rdrand-exit=on,vmx-invpcid-exit=on,vmx-vmfunc=on,vmx-shadow-vmcs=on,vmx-rdseed-exit=on,vmx-pml=on,vmx-xsaves=on,vmx-tsc-scaling=on,vmx-ept-execonly=on,vmx-page-walk-4=on,vmx-ept-2mb=on,vmx-ept-1gb=on,vmx-invept=on,vmx-eptad=on,vmx-invept-single-context=on,vmx-invept-all-context=on,vmx-invvpid=on,vmx-invvpid-single-addr=on,vmx-invvpid-all-context=on,vmx-invept-single-context-noglobals=on,vmx-intr-exit=on,vmx-nmi-exit=on,vmx-vnmi=on,vmx-preemption-timer=on,vmx-posted-intr=on,vmx-vintr-pending=on,vmx-tsc-offset=on,vmx-hlt-exit=on,vmx-invlpg-exit=on,vmx-mwait-exit=on,vmx-rdpmc-exit=on,vmx-rdtsc-exit=on,vmx-cr3-load-noexit=on,vmx-cr3-store-noexit=on,vmx-cr8-load-exit=on,vmx-cr8-store-exit=on,vmx-flexpriority=on,vmx-vnmi-pending=on,vmx-movdr-exit=on,vmx-io-exit=on,vmx-io-bitmap=on,vmx-mtf=on,vmx-msr-bitmap=on,vmx-monitor-exit=on,vmx-pause-exit=on,vmx-secondary-ctls=on,vmx-exit-nosave-debugctl=on,vmx-exit-load-perf-global-ctrl=on,vmx-exit-ack-intr=on,vmx-exit-save-pat=on,vmx-exit-load-pat=on,vmx-exit-save-efer=on,vmx-exit-load-efer=on,vmx-exit-save-preemption-timer=on,vmx-exit-clear-bndcfgs=on,vmx-entry-noload-debugctl=on,vmx-entry-ia32e-mode=on,vmx-entry-load-perf-global-ctrl=on,vmx-entry-load-pat=on,vmx-entry-load-efer=on,vmx-entry-load-bndcfgs=on,vmx-eptp-switching=on,hle=off,rtm=off -m size=65536k -object {"qom-type":"memory-backend-ram","id":"pc.ram","size":67108864} -overcommit mem-lock=off -smp 1,sockets=1,cores=1,threads=1 -uuid d71c1e97-5764-4ae4-a1bc-6470523f459c -display none -no-user-config -nodefaults -chardev socket,id=charmonitor,fd=61,server=on,wait=off -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -boot strict=on -device {"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"} -device {"driver":"ahci","id":"sata0","bus":"pci.0","addr":"0x3"} -blockdev {"driver":"file","filename":"/root/kcli/images/podvm.qcow2","node-name":"libvirt-3-storage","auto-read-only":true,"discard":"unmap"} -blockdev {"node-name":"libvirt-3-format","read-only":true,"driver":"qcow2","file":"libvirt-3-storage","backing":null} -blockdev {"driver":"file","filename":"/root/kcli/images/podvm-podsandbox-totok-8f10756a-root.qcow2","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"} -blockdev {"node-name":"libvirt-2-format","read-only":false,"driver":"qcow2","file":"libvirt-2-storage","backing":"libvirt-3-format"} -device {"driver":"ide-hd","bus":"sata0.0","drive":"libvirt-2-format","id":"sata0-0-0","bootindex":1} -blockdev {"driver":"file","filename":"/root/kcli/images/podvm-podsandbox-totok-8f10756a-cloudinit.iso","node-name":"libvirt-1-storage","read-only":true} -device {"driver":"ide-cd","bus":"ide.0","unit":0,"drive":"libvirt-1-storage","id":"ide0-0-0"} -netdev {"type":"tap","fd":"62","vhost":true,"vhostfd":"65","id":"hostnet0"} -device {"driver":"virtio-net-pci","netdev":"hostnet0","id":"net0","mac":"52:54:00:ed:06:2e","bus":"pci.0","addr":"0x2"} -chardev pty,id=charserial0 -device {"driver":"isa-serial","chardev":"charserial0","id":"serial0","index":0} -audiodev {"id":"audio1","driver":"none"} -device {"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x4"} -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny -msg timestamp=on

and the machine doesn't get its IP address.

Where's the important difference?  I include the whole domain xml(*) for completeness.

pvl

(*) # virsh dumpxml podvm-podsandbox-totok-8f10756a
<domain type='kvm' id='23'>
  <name>podvm-podsandbox-totok-8f10756a</name>
  <uuid>d71c1e97-5764-4ae4-a1bc-6470523f459c</uuid>
  <description>This Virtual Machine is the peer-pod VM</description>
  <memory dumpCore='on' unit='KiB'>65536</memory>
  <currentMemory unit='KiB'>65536</currentMemory>
  <vcpu placement='static'>1</vcpu>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-i440fx-rhel10.0.0'>hvm</type>
  </os>
  <features>
    <acpi/>
    <apic/>
    <vmport state='off'/>
  </features>
  <cpu mode='custom' match='exact' check='full'>
    <model fallback='forbid'>Cascadelake-Server</model>
    <vendor>Intel</vendor>
    <feature policy='require' name='vmx'/>
    <feature policy='require' name='pdcm'/>
    <feature policy='require' name='hypervisor'/>
    <feature policy='require' name='ss'/>
    <feature policy='require' name='tsc_adjust'/>
    <feature policy='require' name='fdp-excptn-only'/>
    <feature policy='require' name='zero-fcs-fds'/>
    <feature policy='require' name='mpx'/>
    <feature policy='require' name='umip'/>
    <feature policy='require' name='pku'/>
    <feature policy='require' name='md-clear'/>
    <feature policy='require' name='stibp'/>
    <feature policy='require' name='flush-l1d'/>
    <feature policy='require' name='arch-capabilities'/>
    <feature policy='require' name='xsaves'/>
    <feature policy='require' name='ibpb'/>
    <feature policy='require' name='ibrs'/>
    <feature policy='require' name='amd-stibp'/>
    <feature policy='require' name='amd-ssbd'/>
    <feature policy='require' name='rdctl-no'/>
    <feature policy='require' name='ibrs-all'/>
    <feature policy='require' name='skip-l1dfl-vmentry'/>
    <feature policy='require' name='mds-no'/>
    <feature policy='require' name='pschange-mc-no'/>
    <feature policy='require' name='tsx-ctrl'/>
    <feature policy='require' name='sbdr-ssdp-no'/>
    <feature policy='require' name='psdp-no'/>
    <feature policy='require' name='fb-clear'/>
    <feature policy='require' name='gds-no'/>
    <feature policy='require' name='rfds-no'/>
    <feature policy='require' name='vmx-ins-outs'/>
    <feature policy='require' name='vmx-true-ctls'/>
    <feature policy='require' name='vmx-store-lma'/>
    <feature policy='require' name='vmx-activity-hlt'/>
    <feature policy='require' name='vmx-activity-wait-sipi'/>
    <feature policy='require' name='vmx-vmwrite-vmexit-fields'/>
    <feature policy='require' name='vmx-apicv-xapic'/>
    <feature policy='require' name='vmx-ept'/>
    <feature policy='require' name='vmx-desc-exit'/>
    <feature policy='require' name='vmx-rdtscp-exit'/>
    <feature policy='require' name='vmx-apicv-x2apic'/>
    <feature policy='require' name='vmx-vpid'/>
    <feature policy='require' name='vmx-wbinvd-exit'/>
    <feature policy='require' name='vmx-unrestricted-guest'/>
    <feature policy='require' name='vmx-apicv-register'/>
    <feature policy='require' name='vmx-apicv-vid'/>
    <feature policy='require' name='vmx-rdrand-exit'/>
    <feature policy='require' name='vmx-invpcid-exit'/>
    <feature policy='require' name='vmx-vmfunc'/>
    <feature policy='require' name='vmx-shadow-vmcs'/>
    <feature policy='require' name='vmx-rdseed-exit'/>
    <feature policy='require' name='vmx-pml'/>
    <feature policy='require' name='vmx-xsaves'/>
    <feature policy='require' name='vmx-tsc-scaling'/>
    <feature policy='require' name='vmx-ept-execonly'/>
    <feature policy='require' name='vmx-page-walk-4'/>
    <feature policy='require' name='vmx-ept-2mb'/>
    <feature policy='require' name='vmx-ept-1gb'/>
    <feature policy='require' name='vmx-invept'/>
    <feature policy='require' name='vmx-eptad'/>
    <feature policy='require' name='vmx-invept-single-context'/>
    <feature policy='require' name='vmx-invept-all-context'/>
    <feature policy='require' name='vmx-invvpid'/>
    <feature policy='require' name='vmx-invvpid-single-addr'/>
    <feature policy='require' name='vmx-invvpid-all-context'/>
    <feature policy='require' name='vmx-invvpid-single-context-noglobals'/>
    <feature policy='require' name='vmx-intr-exit'/>
    <feature policy='require' name='vmx-nmi-exit'/>
    <feature policy='require' name='vmx-vnmi'/>
    <feature policy='require' name='vmx-preemption-timer'/>
    <feature policy='require' name='vmx-posted-intr'/>
    <feature policy='require' name='vmx-vintr-pending'/>
    <feature policy='require' name='vmx-tsc-offset'/>
    <feature policy='require' name='vmx-hlt-exit'/>
    <feature policy='require' name='vmx-invlpg-exit'/>
    <feature policy='require' name='vmx-mwait-exit'/>
    <feature policy='require' name='vmx-rdpmc-exit'/>
    <feature policy='require' name='vmx-rdtsc-exit'/>
    <feature policy='require' name='vmx-cr3-load-noexit'/>
    <feature policy='require' name='vmx-cr3-store-noexit'/>
    <feature policy='require' name='vmx-cr8-load-exit'/>
    <feature policy='require' name='vmx-cr8-store-exit'/>
    <feature policy='require' name='vmx-flexpriority'/>
    <feature policy='require' name='vmx-vnmi-pending'/>
    <feature policy='require' name='vmx-movdr-exit'/>
    <feature policy='require' name='vmx-io-exit'/>
    <feature policy='require' name='vmx-io-bitmap'/>
    <feature policy='require' name='vmx-mtf'/>
    <feature policy='require' name='vmx-msr-bitmap'/>
    <feature policy='require' name='vmx-monitor-exit'/>
    <feature policy='require' name='vmx-pause-exit'/>
    <feature policy='require' name='vmx-secondary-ctls'/>
    <feature policy='require' name='vmx-exit-nosave-debugctl'/>
    <feature policy='require' name='vmx-exit-load-perf-global-ctrl'/>
    <feature policy='require' name='vmx-exit-ack-intr'/>
    <feature policy='require' name='vmx-exit-save-pat'/>
    <feature policy='require' name='vmx-exit-load-pat'/>
    <feature policy='require' name='vmx-exit-save-efer'/>
    <feature policy='require' name='vmx-exit-load-efer'/>
    <feature policy='require' name='vmx-exit-save-preemption-timer'/>
    <feature policy='require' name='vmx-exit-clear-bndcfgs'/>
    <feature policy='require' name='vmx-entry-noload-debugctl'/>
    <feature policy='require' name='vmx-entry-ia32e-mode'/>
    <feature policy='require' name='vmx-entry-load-perf-global-ctrl'/>
    <feature policy='require' name='vmx-entry-load-pat'/>
    <feature policy='require' name='vmx-entry-load-efer'/>
    <feature policy='require' name='vmx-entry-load-bndcfgs'/>
    <feature policy='require' name='vmx-eptp-switching'/>
    <feature policy='disable' name='hle'/>
    <feature policy='disable' name='rtm'/>
  </cpu>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/root/kcli/images/podvm-podsandbox-totok-8f10756a-root.qcow2' index='2'/>
      <backingStore type='file' index='3'>
        <format type='qcow2'/>
        <source file='/root/kcli/images/podvm.qcow2'/>
        <backingStore/>
      </backingStore>
      <target dev='sda' bus='sata'/>
      <boot order='1'/>
      <alias name='sata0-0-0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/root/kcli/images/podvm-podsandbox-totok-8f10756a-cloudinit.iso' index='1'/>
      <backingStore/>
      <target dev='hda' bus='ide'/>
      <readonly/>
      <alias name='ide0-0-0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <controller type='usb' index='0' model='piix3-uhci'>
      <alias name='usb'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'>
      <alias name='pci.0'/>
    </controller>
    <controller type='ide' index='0'>
      <alias name='ide'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <controller type='sata' index='0'>
      <alias name='sata0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </controller>
    <interface type='network'>
      <mac address='52:54:00:ed:06:2e'/>
      <source network='default' portid='315baa97-2c37-46ad-a0ff-8be16fffb275' bridge='virbr0'/>
      <target dev='vnet21'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/0'/>
      <target type='isa-serial' port='0'>
        <model name='isa-serial'/>
      </target>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/0'>
      <source path='/dev/pts/0'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <input type='mouse' bus='ps2'>
      <alias name='input0'/>
    </input>
    <input type='keyboard' bus='ps2'>
      <alias name='input1'/>
    </input>
    <audio id='1' type='none'/>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </memballoon>
  </devices>
  <seclabel type='dynamic' model='selinux' relabel='yes'>
    <label>system_u:system_r:svirt_t:s0:c62,c325</label>
    <imagelabel>system_u:object_r:svirt_image_t:s0:c62,c325</imagelabel>
  </seclabel>
  <seclabel type='dynamic' model='dac' relabel='yes'>
    <label>+107:+107</label>
    <imagelabel>+107:+107</imagelabel>
  </seclabel>
</domain>


On Thu, Sep 18, 2025 at 11:55 AM Pavel Mores <pmores@redhat.com> wrote:
On Thu, Sep 18, 2025 at 11:29 AM Pavel Mores <pmores@redhat.com> wrote:
On Thu, Sep 18, 2025 at 10:25 AM Martin Kletzander <mkletzan@redhat.com> wrote:
On Wed, Sep 17, 2025 at 04:02:12PM +0200, Pavel Mores wrote:
>On Wed, Sep 17, 2025 at 3:05 PM Martin Kletzander <mkletzan@redhat.com>
>wrote:
>
>> On Wed, Sep 17, 2025 at 02:14:51PM +0200, Pavel Mores via Users wrote:
>> >Hi,
>> >
>> >I'm examining a domain that's connected to the 'default' network
>> >
>> ># virsh net-dumpxml default
>> ><network connections='1'>
>> >  <name>default</name>
>> >  <uuid>c757baa7-2b31-4794-9dfb-0df384575602</uuid>
>> >  <forward mode='nat'>
>> >    <nat>
>> >      <port start='1024' end='65535'/>
>> >    </nat>
>> >  </forward>
>> >  <bridge name='virbr0' stp='on' delay='0'/>
>> >  <mac address='52:54:00:37:b7:92'/>
>> >  <ip address='192.168.122.1' netmask='255.255.255.0'>
>> >    <dhcp>
>> >      <range start='192.168.122.2' end='192.168.122.254'/>
>> >    </dhcp>
>> >  </ip>
>> ></network>
>> >
>>
>> This is standard.
>>
>> >using a device as follows:
>> >
>> ><interface type='network'>
>> >  <mac address='52:54:00:ed:06:2e'/>
>> >  <source network='default' portid='83db8ca9-baed-47f3-ba0d-1a967ee86aa5'
>> >bridge='virbr0'/>
>> >  <target dev='vnet19'/>
>> >  <model type='virtio'/>
>> >  <alias name='net0'/>
>> >  <address type='pci' domain='0x0000' bus='0x00' slot='0x02'
>> >function='0x0'/>
>> ></interface>
>> >
>>
>> This looks fine.
>>
>> >The domain is running but apparently without an IP address:
>> >
>> ># virsh domifaddr podvm-podsandbox-totok-8f10756a
>> > Name       MAC address          Protocol     Address
>>
>> >-------------------------------------------------------------------------------
>> >
>>
>> This shows that libvirt does not know about any IP address.  Does adding
>> "--source agent", "--source arp" or "--source lease" change anything?
>>
>
>'arp' and 'lease' don't but
>
># virsh domifaddr --source agent podvm-podsandbox-totok-8f10756a
>error: Failed to query for interfaces addresses
>error: argument unsupported: QEMU guest agent is not configured
>
>This is surprising to me since this is a peer pods setup where the domain
>in question is a podvm running an image which I was told does have
>the qemu agent running.
>
>However the agent shouldn't be necessary for IP address acquisition I guess,
>right?
>
>>The requisite host-side interfaces look good (to me anyway :-)):
>> >
>> >10: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc htb state UP
>> >group default qlen 1000
>> >    link/ether 52:54:00:37:b7:92 brd ff:ff:ff:ff:ff:ff
>> >    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
>> >       valid_lft forever preferred_lft forever
>> >[...]
>> >35: vnet19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue
>> master
>> >virbr0 state UNKNOWN group default qlen 1000
>> >    link/ether fe:54:00:ed:06:2e brd ff:ff:ff:ff:ff:ff
>> >    inet6 fe80::fc54:ff:feed:62e/64 scope link proto kernel_ll
>> >       valid_lft forever preferred_lft forever
>> >
>> >I can share more information about the setup if necessary but I'll stop
>> >here for now since I feel this must be just a simple stupid oversight on
>> my
>> >part.  Please let me know if you'd like to have additional info.
>> >
>>
>> When this happens to me sometimes, it's most often a firewall issue and
>> the VM does not get any IP address or cannot communicate outside its
>> network.
>>
>
>I've seen a firewall suggested as a possible culprit, yes, however I don't
>quite
>know what it should look like.  iptables appear unconfigured:
>
># iptables -L -v -n
>Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
> pkts bytes target     prot opt in     out     source
>destination
>
>Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
> pkts bytes target     prot opt in     out     source
>destination
>
>Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
> pkts bytes target     prot opt in     out     source
>destination
>
>`nft list ruleset` lists only rules that look managed by libvirt
>itself(*).  At any
>rate the host machine has no specific hand-configured firewall that I know
>of.
>
>
>> What it can be here is that there are some access issues to the dnsmasq
>> lease file.
>>
>> What's in your /var/lib/libvirt/dnsmasq/virbr0.status file on the host?
>>
>
>It's empty.
>
>Thanks Martin!
>pvl
>
>(*) # nft list ruleset
>table ip libvirt_network {
>chain forward {
>type filter hook forward priority filter; policy accept;
>counter packets 85854914 bytes 398726525237 jump guest_cross
>counter packets 85854914 bytes 398726525237 jump guest_input
>counter packets 34777368 bytes 3386943972 jump guest_output
>}
>
>chain guest_output {
>ip saddr 192.168.122.0/24 iif "virbr0" counter packets 0 bytes 0 accept

This suggests there were no incoming packets from an IP address in the
range on the bridge.

>iif "virbr0" counter packets 0 bytes 0 reject

And no packets from outside of that range that would fall through to
this above rule.

[...]

>}
>
>chain guest_input {

[...]

>oif "virbr0" ip daddr 192.168.122.0/24 ct state established,related counter
>packets 0 bytes 0 accept

No packets sent to the address range on the bridge, but

>oif "virbr0" counter packets 0 bytes 0 reject

basically no packets sent at all.

>}
>
>chain guest_cross {
>iif "openshift-412" oif "openshift-412" counter packets 0 bytes 0 accept
>iif "openshift-419" oif "openshift-419" counter packets 0 bytes 0 accept
>iif "openshift-416" oif "openshift-416" counter packets 0 bytes 0 accept
>iif "openshift-415" oif "openshift-415" counter packets 0 bytes 0 accept
>iif "openshift-413" oif "openshift-413" counter packets 0 bytes 0 accept
>iif "virbr0" oif "virbr0" counter packets 0 bytes 0 accept

No intra-network communication

[...]

>chain guest_nat {
>type nat hook postrouting priority srcnat; policy accept;

[...]

>ip saddr 192.168.122.0/24 ip daddr 224.0.0.0/24 counter packets 50 bytes
>3676 return

There were some IPv4 multicast packets, but these could've originated
from the host.

>ip saddr 192.168.122.0/24 ip daddr 255.255.255.255 counter packets 0 bytes
>0 return

And no broadcast packets from the address space.

>meta l4proto tcp ip saddr 192.168.122.0/24 ip daddr != 192.168.122.0/24
>counter packets 0 bytes 0 masquerade to :1024-65535
>meta l4proto udp ip saddr 192.168.122.0/24 ip daddr != 192.168.122.0/24
>counter packets 0 bytes 0 masquerade to :1024-65535
>ip saddr 192.168.122.0/24 ip daddr != 192.168.122.0/24 counter packets 0
>bytes 0 masquerade

No NAT, anything.

[...]
>ip saddr 192.168.14.0/24 ip daddr 224.0.0.0/24 counter packets 50 bytes
>3675 return

These counters on another range are the same, so I would say all the
multicast packets on the range we are interested in are just the same,
hence having nothing to do with the guest.

>}
>}
>table ip6 libvirt_network {
>chain forward {
>type filter hook forward priority filter; policy accept;
>counter packets 0 bytes 0 jump guest_cross
>counter packets 0 bytes 0 jump guest_input
>counter packets 0 bytes 0 jump guest_output

And totally nothing with IPv6.

As a bit of context, this is a virtlab machine whose primary purpose is to run
kcli-based openshift clusters whose nodes are libvirt domains.  Those are the
"openshift-41[1-9]" networks and bridges.  They are unrelated to the setup I'm
looking into and most of them are actually obsolete (it's been years now since
a 4.11 cluster last ran on the host :-)).

My "guess" would be that the guest did not even get an IP address, maybe
did not eve try DHCP.  Are you sure the guest booted?
 
I think it is, based on

# virsh list
 Id   Name                              State
-------------------------------------------------
[...]
 20   podvm-podsandbox-totok-8f10756a   running

But now that you mention it, I'm not positively sure that it tried DHCP.  The zero
traffic on the virbr0 bridge you mention above is overall explainable by the domain
not having an address *but* if it did try DHCP those packets would show up in the
virbr0 stats I guess?

I did check out previously the DHCP leases on the 'default' network:

# virsh net-dhcp-leases default
 Expiry Time   MAC address   Protocol   IP address   Hostname   Client ID or DUID
-----------------------------------------------------------------------------------

and there are none but that doesn't rule out any other failure in DHCP.

The domain runs a peer pods podvm image which I don't have any control over and
frankly am not familiar with.  I assume that it does do DHCP to configure its interfaces
but as the guest agent example shows my information about the image might not be
always accurate.

I verified that the VM does do DHCP (there actually doesn't seem to be any other
means for a podvm to get its network configured in peer pods).

pvl
 
Is there a way to check if the domain attempts DHCP purely from the libvirt side, just
using libvirt means?

Thanks!
pvl