[Bug 219803] [patch] PF: implement RFC 4787 REQ 1 and 3 (full cone NAT)

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Thu Jun 15 20:14:21 UTC 2017


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=219803

--- Comment #6 from Kristof Provost <kp at freebsd.org> ---
With this patch my gateway box (pf and vimage jails) panics pretty quickly
during boot.

#0  doadump (textdump=0) at pcpu.h:232
#1  0xffffffff803a4c2b in db_dump (dummy=<value optimized out>, dummy2=<value
optimized out>, dummy3=<value optimized out>, dummy4=<value optimized out>)
    at /usr/src/sys/ddb/db_command.c:546
#2  0xffffffff803a4a1f in db_command (cmd_table=<value optimized out>) at
/usr/src/sys/ddb/db_command.c:453
#3  0xffffffff803a4754 in db_command_loop () at
/usr/src/sys/ddb/db_command.c:506
#4  0xffffffff803a781f in db_trap (type=<value optimized out>, code=<value
optimized out>) at /usr/src/sys/ddb/db_main.c:248
#5  0xffffffff80a9bd33 in kdb_trap (type=12, code=0, tf=<value optimized out>)
at /usr/src/sys/kern/subr_kdb.c:654
#6  0xffffffff80efb4f2 in trap_fatal (frame=0xfffffe022fefaf50, eva=48) at
/usr/src/sys/amd64/amd64/trap.c:796
#7  0xffffffff80efb5a2 in trap_pfault (frame=0xfffffe022fefaf50, usermode=0) at
pcpu.h:232
#8  0xffffffff80efad3d in trap (frame=0xfffffe022fefaf50) at
/usr/src/sys/amd64/amd64/trap.c:421
#9  0xffffffff80edcf31 in calltrap () at
/usr/src/sys/amd64/amd64/exception.S:236
#10 0xffffffff8267409a in pf_addrcpy (dst=0x30, src=0xfffff8002d09f590, af=2
'\002') at pcpu.h:231
#11 0xffffffff82689ead in pf_get_translation (pd=0xfffffe022fefc351, m=<value
optimized out>, off=<value optimized out>, direction=2, kif=<value optimized
out>,
    sn=0xfffffe022fefb438, skp=<value optimized out>, nkp=<value optimized
out>, saddr=<value optimized out>, daddr=<value optimized out>, sport=<value
optimized out>,
    dport=<value optimized out>, anchor_stack=<value optimized out>) at
/usr/src/sys/netpfil/pf/pf_lb.c:262
#12 0xffffffff8267dd08 in pf_test_rule (rm=0xfffffe022fefb6d0,
sm=0xfffffe022fefb6e0, direction=2, kif=0xfffff80006dddb00,
m=0xfffff8002d23f000, off=20,
    pd=<value optimized out>, am=0xfffffe022fefb6a0, inp=<value optimized out>)
at /usr/src/sys/netpfil/pf/pf.c:3336
#13 0xffffffff8267af11 in pf_test (dir=<value optimized out>, ifp=<value
optimized out>, m0=<value optimized out>, inp=0x0) at
/usr/src/sys/netpfil/pf/pf.c:6088
#14 0xffffffff8268cd9d in pf_check_out (arg=<value optimized out>,
m=0xfffffe022fefb7c0, ifp=<value optimized out>, dir=<value optimized out>,
inp=<value optimized out>)
    at /usr/src/sys/netpfil/pf/pf_ioctl.c:3582
#15 0xffffffff80b74314 in pfil_run_hooks (ph=0xfffffe0000de7a18,
mp=0xfffffe022fefb818, ifp=0xfffff80006e1d800, dir=2, inp=0x0) at
/usr/src/sys/net/pfil.c:108
#16 0xffffffff80bdbf80 in ip_tryforward (m=0xfffff8002d23f000) at
/usr/src/sys/netinet/ip_fastfwd.c:306
#17 0xffffffff80bde9f1 in ip_input (m=0xfffff8002d23f000) at
/usr/src/sys/netinet/ip_input.c:570
#18 0xffffffff80b731bf in netisr_dispatch_src (proto=1, source=0,
m=0xfffff8002d23f000) at /usr/src/sys/net/netisr.c:1120
#19 0xffffffff80b593be in ether_demux (ifp=0xfffff80006e1c000, m=<value
optimized out>) at /usr/src/sys/net/if_ethersubr.c:848
#20 0xffffffff80b5a3f2 in ether_nh_input (m=<value optimized out>) at
/usr/src/sys/net/if_ethersubr.c:637
#21 0xffffffff80b731bf in netisr_dispatch_src (proto=5, source=0,
m=0xfffff8002d23f000) at /usr/src/sys/net/netisr.c:1120
#22 0xffffffff80b5977f in ether_input (ifp=0xfffff80006e1c000, m=0x0) at
/usr/src/sys/net/if_ethersubr.c:757
#23 0xffffffff80b54d6a in if_input (ifp=<value optimized out>, sendmp=<value
optimized out>) at /usr/src/sys/net/if.c:3993
#24 0xffffffff804ff9cc in bge_rxeof () at /usr/src/sys/dev/bge/if_bge.c:4424
#25 0xffffffff804fd0d2 in bge_intr_task (arg=0xfffffe0000fe5000, pending=<value
optimized out>) at /usr/src/sys/dev/bge/if_bge.c:4654
#26 0xffffffff80aae22d in taskqueue_run_locked (queue=0xfffff80005637400) at
/usr/src/sys/kern/subr_taskqueue.c:454
#27 0xffffffff80aaefe8 in taskqueue_thread_loop (arg=<value optimized out>) at
/usr/src/sys/kern/subr_taskqueue.c:746
#28 0xffffffff80a1ab44 in fork_exit (callout=0xffffffff80aaef60
<taskqueue_thread_loop>, arg=0xfffffe0000fec568, frame=0xfffffe022fefbc00) at
/usr/src/sys/kern/kern_fork.c:1038
#29 0xffffffff80edd46e in fork_trampoline () at
/usr/src/sys/amd64/amd64/exception.S:611
#30 0x0000000000000000 in ?? ()

...

#11 0xffffffff82689ead in pf_get_translation (pd=0xfffffe022fefc351, m=<value
optimized out>, off=<value optimized out>, direction=2, kif=<value optimized
out>,
    sn=0xfffffe022fefb438, skp=<value optimized out>, nkp=<value optimized
out>, saddr=<value optimized out>, daddr=<value optimized out>, sport=<value
optimized out>,
    dport=<value optimized out>, anchor_stack=<value optimized out>) at
/usr/src/sys/netpfil/pf/pf_lb.c:262
262                     PF_ACPY(&(*udp_mapping)->endpoints[1].addr, naddr, af);
(kgdb) p udp_mapping
Cannot access memory at address 0x0
(kgdb)

I'm not quite sure how that happens, but it's easy to reproduce.

My pf.conf is a pretty typical gateway config. A nat rule and a couple of rdr
rules (including for UDP).

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-pf mailing list