[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox
Subject: Re: [RESEND] Re: [PATCH] udhcpd: Handle auto_time timeout overflow
From: Tim Hentenaar <tim () hentenaar ! com>
Date: 2015-01-27 15:47:41
Message-ID: 20150127154741.GE5419 () gmail ! com
[Download RAW message or body]
[Attachment #2 (multipart/signed)]
[Attachment #4 (multipart/mixed)]
On Tue, Jan 27, 2015 at 02:13:38PM +0100, Denys Vlasenko wrote:
> On Tue, Jan 27, 2015 at 1:28 PM, Tim Hentenaar <tim@hentenaar.com> wrote:
> > call monotonic_sec #
> > movl 24(%rsp), %ecx # %sfp, D.9844
> > movl 52+bb_common_bufsiz1(%rip), %r14d # MEM[(struct server_config_t * \
> > {ref-all})&bb_common_bufsiz1].auto_time, movq $0, 88(%rsp) #, tv.tv_usec
> > subl %eax, %ecx # D.9836, D.9844
> > testl %r14d, %r14d #
> > movq %rcx, 80(%rsp) # D.9844, tv.tv_sec
> > je .L88 #,
> > testq %rcx, %rcx # D.9844
> > je .L179 #,
> > leaq 80(%rsp), %r8 #, iftmp.12
> > jmp .L87 #
> >
> > Are you using a 32-bit x86 arch? If not, what do you get if you compile
> > it in 64-bit mode?
>
> With gcc 4.7.2:
>
> call udhcp_sp_fd_set #
> cmpl $0, bb_common_bufsiz1+52(%rip) #, MEM[(struct
> server_config_t * {ref-all})&bb_common_bufsiz1].auto_time
> movl %eax, %ebx #, max_sock
> je .L71 #,
> call monotonic_sec #
> movl 24(%rsp), %edx # %sfp,
> movq $0, 56(%rsp) #, tv.tv_usec
> subl %eax, %edx # D.8343,
> movl %edx, %eax #,
> movq %rax, 48(%rsp) #, tv.tv_sec
> .L71:
> xorl %r8d, %r8d # iftmp.11
> cmpl $0, bb_common_bufsiz1+52(%rip) #, MEM[(struct
> server_config_t * {ref-all})&bb_common_bufsiz1].auto_time
> je .L72 #,
> cmpq $0, 48(%rsp) #, tv.tv_sec
> jg .L110 #,
> jmp .L166 #
> .L110:
> leaq 48(%rsp), %r8 #, iftmp.11
> .L72:
> leal 1(%rbx), %edi #, tmp216
> leaq 104(%rsp), %rsi #,
> xorl %ecx, %ecx #
> xorl %edx, %edx #
> call select #
With gcc 4.7.4:
call monotonic_sec #
movl 16(%rsp), %edx # %sfp,
movl 52+bb_common_bufsiz1(%rip), %r13d # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].auto_time, movq $0, 72(%rsp) #, tv.tv_usec
subl %eax, %edx # D.8069,
testl %r13d, %r13d #
movq %rdx, 64(%rsp) # D.8071, tv.tv_sec
je .L100 #,
testq %rdx, %rdx # D.8071
je .L196 #,
leaq 64(%rsp), %r8 #, iftmp.13
jmp .L99 #
With gcc 4.9.2:
call monotonic_sec #
movl -948(%rbp), %edx # %sfp, D.8524
movl 52+bb_common_bufsiz1(%rip), %r15d # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].auto_time, movq $0, -872(%rbp) #, tv.tv_usec
subl %eax, %edx # D.8513, D.8524
testl %r15d, %r15d #
movq %rdx, -880(%rbp) # D.8524, tv.tv_sec
je .L98 #,
testq %rdx, %rdx # D.8524
je .L190 #,
leaq -880(%rbp), %r8 #, D.8510
jmp .L97 #
Basically identical to what I got initially. I also double-checked that
the file was freshly regenerated each time. I'm at a loss to explain
gcc's choice of opcode in this case. I could be missing something,
though. I've attached the full .s file.
Here's the md5sum of the source file I'm using (from git rev.
9de69c024c7c47f3f8733dbc7c9522966fcd73a9), in case there's any
difference:
6497bc6e9038ad587e557a8ee59214d2 networking/udhcp/dhcpd.c
Tim
["dhcpd.s" (text/x-asm)]
.file "dhcpd.c"
# GNU C (Gentoo Hardened 4.7.4 p1.2, pie-0.5.5) version 4.7.4 \
(x86_64-gentoo-linux-uclibc) # compiled by GNU C version 4.7.4, GMP version 5.1.3, \
MPFR version 3.1.2, MPC version 1.0.1 # GGC heuristics: --param ggc-min-expand=30 \
--param ggc-min-heapsize=4096 # options passed: -I include -I libbb -D _GNU_SOURCE \
-D NDEBUG # -D _LARGEFILE_SOURCE -D _LARGEFILE64_SOURCE -D _FILE_OFFSET_BITS=64
# -D BB_VER=KBUILD_STR(1.23.0) -D BB_BT=AUTOCONF_TIMESTAMP
# -D KBUILD_STR(s)=#s -D KBUILD_BASENAME=KBUILD_STR(dhcpd)
# -D KBUILD_MODNAME=KBUILD_STR(dhcpd) -include include/autoconf.h
# -MD networking/udhcp/.dhcpd.s.d networking/udhcp/dhcpd.c
# -fno-strict-overflow -mtune=generic -march=x86-64
# -auxbase-strip networking/udhcp/dhcpd.s -Os -O2 -Wall -Wshadow
# -Wwrite-strings -Wundef -Wstrict-prototypes -Wunused -Wunused-parameter
# -Wunused-function -Wunused-value -Wmissing-prototypes
# -Wmissing-declarations -Wno-format-security -Wdeclaration-after-statement
# -Wold-style-definition -std=gnu99 -fno-builtin-strlen -finline-limit=0
# -fomit-frame-pointer -ffunction-sections -fdata-sections
# -fno-guess-branch-probability -funsigned-char -falign-functions=1
# -falign-jumps=1 -falign-labels=1 -falign-loops=1 -fno-unwind-tables
# -fno-asynchronous-unwind-tables -fpie -fPIE -fverbose-asm
# -fstack-protector-all
# options enabled: -fPIC -fPIE -fauto-inc-dec -fbranch-count-reg
# -fcaller-saves -fcombine-stack-adjustments -fcommon -fcompare-elim
# -fcprop-registers -fcrossjumping -fcse-follow-jumps -fdata-sections
# -fdebug-types-section -fdefer-pop -fdelete-null-pointer-checks
# -fdevirtualize -fdwarf2-cfi-asm -fearly-inlining
# -feliminate-unused-debug-types -fexpensive-optimizations
# -fforward-propagate -ffunction-cse -ffunction-sections -fgcse -fgcse-lm
# -fgnu-runtime -fident -fif-conversion -fif-conversion2
# -findirect-inlining -finline -finline-atomics
# -finline-functions-called-once -finline-small-functions -fipa-cp
# -fipa-profile -fipa-pure-const -fipa-reference -fipa-sra
# -fira-share-save-slots -fira-share-spill-slots -fivopts
# -fkeep-static-consts -fleading-underscore -fmath-errno -fmerge-constants
# -fmerge-debug-strings -fmove-loop-invariants -fomit-frame-pointer
# -foptimize-register-move -foptimize-sibling-calls -foptimize-strlen
# -fpartial-inlining -fpeephole -fpeephole2 -fprefetch-loop-arrays -free
# -freg-struct-return -fregmove -freorder-blocks -freorder-functions
# -frerun-cse-after-loop -fsched-critical-path-heuristic
# -fsched-dep-count-heuristic -fsched-group-heuristic -fsched-interblock
# -fsched-last-insn-heuristic -fsched-rank-heuristic -fsched-spec
# -fsched-spec-insn-heuristic -fsched-stalled-insns-dep -fschedule-insns2
# -fshow-column -fshrink-wrap -fsigned-zeros -fsplit-ivs-in-unroller
# -fsplit-wide-types -fstack-protector-all -fstrict-aliasing
# -fstrict-volatile-bitfields -fthread-jumps -ftoplevel-reorder
# -ftrapping-math -ftree-bit-ccp -ftree-builtin-call-dce -ftree-ccp
# -ftree-ch -ftree-copy-prop -ftree-copyrename -ftree-cselim -ftree-dce
# -ftree-dominator-opts -ftree-dse -ftree-forwprop -ftree-fre
# -ftree-loop-if-convert -ftree-loop-im -ftree-loop-ivcanon
# -ftree-loop-optimize -ftree-parallelize-loops= -ftree-phiprop -ftree-pre
# -ftree-pta -ftree-reassoc -ftree-scev-cprop -ftree-sink
# -ftree-slp-vectorize -ftree-sra -ftree-switch-conversion
# -ftree-tail-merge -ftree-ter -ftree-vect-loop-version -ftree-vrp
# -funit-at-a-time -fvect-cost-model -fverbose-asm
# -fzero-initialized-in-bss -m128bit-long-double -m64 -m80387
# -maccumulate-outgoing-args -malign-stringops -mfancy-math-387
# -mfp-ret-in-387 -mieee-fp -mmmx -mno-sse4 -mpush-args -mred-zone -msse
# -msse2 -mtls-direct-seg-refs -muclibc
.section .text.select_lease_time,"ax",@progbits
.type select_lease_time, @function
select_lease_time:
pushq %rbx #
movl $51, %esi #,
subq $16, %rsp #,
movl 40+bb_common_bufsiz1(%rip), %ebx # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].max_lease_sec, lease_time_sec movq %fs:40, %rax #,
movq %rax, 8(%rsp) #, D.8389
xorl %eax, %eax #
call udhcp_get_option #
testq %rax, %rax # lease_time_opt
je .L2 #,
movl 40+bb_common_bufsiz1(%rip), %edx # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].max_lease_sec, lease_time_sec movl (%rax), %eax # \
MEM[(bb__aliased_uint32_t * {ref-all})lease_time_opt_7], __v #APP
# 138 "networking/udhcp/dhcpd.c" 1
bswap %eax # __v
# 0 "" 2
#NO_APP
cmpl %edx, %eax # lease_time_sec, __v
cmova %edx, %eax # __v,, lease_time_sec, lease_time_sec
movl 44+bb_common_bufsiz1(%rip), %edx # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].min_lease_sec, lease_time_sec cmpl %edx, %eax # \
lease_time_sec, lease_time_sec movl %edx, %ebx # lease_time_sec, lease_time_sec
cmovae %eax, %ebx # lease_time_sec,, lease_time_sec
.L2:
movq 8(%rsp), %rdx # D.8389,
xorq %fs:40, %rdx #,
movl %ebx, %eax # lease_time_sec,
jne .L9 #,
addq $16, %rsp #,
popq %rbx #
ret
.L9:
call __stack_chk_fail@PLT #
.size select_lease_time, .-select_lease_time
.section .text.init_packet,"ax",@progbits
.type init_packet, @function
init_packet:
pushq %rbp #
movq %rsi, %rbp # oldpacket, oldpacket
movl %edx, %esi # type, type
pushq %rbx #
movq %rdi, %rbx # packet, packet
subq $24, %rsp #,
movq %fs:40, %rax #,
movq %rax, 8(%rsp) #, D.8395
xorl %eax, %eax #
call udhcp_init_header #
movl 4(%rbp), %eax # oldpacket_4(D)->xid, D.8255
movl %eax, 4(%rbx) # D.8255, packet_3(D)->xid
movq 28(%rbp), %rax # oldpacket_4(D)->chaddr, oldpacket_4(D)->chaddr
movq %rax, 28(%rbx) # oldpacket_4(D)->chaddr, packet_3(D)->chaddr
movq 36(%rbp), %rax # oldpacket_4(D)->chaddr, oldpacket_4(D)->chaddr
movq %rax, 36(%rbx) # oldpacket_4(D)->chaddr, packet_3(D)->chaddr
movzwl 10(%rbp), %eax # oldpacket_4(D)->flags, D.8258
movw %ax, 10(%rbx) # D.8258, packet_3(D)->flags
movl 24(%rbp), %eax # oldpacket_4(D)->gateway_nip, D.8259
movl %eax, 24(%rbx) # D.8259, packet_3(D)->gateway_nip
movl 12(%rbp), %eax # oldpacket_4(D)->ciaddr, D.8260
movl %eax, 12(%rbx) # D.8260, packet_3(D)->ciaddr
movq 8(%rsp), %rax # D.8395,
xorq %fs:40, %rax #,
jne .L14 #,
movl 12+bb_common_bufsiz1(%rip), %edx # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].server_nip, addq $24, %rsp #,
movq %rbx, %rdi # packet,
popq %rbx #
popq %rbp #
movl $54, %esi #,
jmp udhcp_add_simple_option #
.L14:
call __stack_chk_fail@PLT #
.size init_packet, .-init_packet
.section .text.add_server_options,"ax",@progbits
.type add_server_options, @function
add_server_options:
pushq %rbp #
movq %rdi, %rbp # packet, packet
pushq %rbx #
subq $24, %rsp #,
movq 24+bb_common_bufsiz1(%rip), %rbx # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].options, curr movq %fs:40, %rax #,
movq %rax, 8(%rsp) #, D.8400
xorl %eax, %eax #
testq %rbx, %rbx # curr
je .L21 #,
.L25:
movq (%rbx), %rsi # curr_32->data, D.8287
cmpb $51, (%rsi) #, *D.8287_4
je .L19 #,
movq %rbp, %rdi # packet,
call udhcp_add_binary_option #
.L19:
movq 8(%rbx), %rbx # curr_32->next, curr
testq %rbx, %rbx # curr
jne .L25 #,
.L21:
movl 68+bb_common_bufsiz1(%rip), %eax # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].siaddr_nip, D.8291 movl %eax, 20(%rbp) # D.8291, \
packet_7(D)->siaddr_nip movq 96+bb_common_bufsiz1(%rip), %rsi # MEM[(struct \
server_config_t * {ref-all})&bb_common_bufsiz1].sname, D.8292 testq %rsi, %rsi # \
D.8292 je .L18 #,
leaq 44(%rbp), %rdi #, tmp74
movl $63, %edx #,
call strncpy@PLT #
.L18:
movq 104+bb_common_bufsiz1(%rip), %rsi # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].boot_file, D.8296 testq %rsi, %rsi # D.8296
je .L15 #,
movq 8(%rsp), %rax # D.8400,
xorq %fs:40, %rax #,
jne .L28 #,
addq $24, %rsp #,
leaq 108(%rbp), %rdi #, tmp77
movl $127, %edx #,
popq %rbx #
popq %rbp #
jmp strncpy@PLT #
.L15:
movq 8(%rsp), %rax # D.8400,
xorq %fs:40, %rax #,
jne .L28 #,
addq $24, %rsp #,
popq %rbx #
popq %rbp #
ret
.L28:
call __stack_chk_fail@PLT #
.size add_server_options, .-add_server_options
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "Forwarding packet to relay"
.LC1:
.string "Broadcasting packet to client"
.section .rodata.str1.8,"aMS",@progbits,1
.align 8
.LC2:
.string "Unicasting packet to client ciaddr"
.section .text.send_packet,"ax",@progbits
.type send_packet, @function
send_packet:
pushq %r12 #
pushq %rbp #
pushq %rbx #
movq %rdi, %rbx # dhcp_pkt, dhcp_pkt
subq $32, %rsp #,
movl 24(%rdi), %ecx # dhcp_pkt_1(D)->gateway_nip, prephitmp.56
movq %fs:40, %rax #,
movq %rax, 24(%rsp) #, D.8427
xorl %eax, %eax #
testl %ecx, %ecx # prephitmp.56
je .L30 #,
movl dhcp_verbose(%rip), %esi # dhcp_verbose,
testl %esi, %esi #
je .L31 #,
leaq .LC0(%rip), %rdi #,
call bb_info_msg #
movl 24(%rbx), %ecx # dhcp_pkt_1(D)->gateway_nip, prephitmp.56
.L31:
movq 24(%rsp), %rax # D.8427,
xorq %fs:40, %rax #,
movzwl 16+bb_common_bufsiz1(%rip), %edx # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].port, D.8404 jne .L40 #,
movl 12+bb_common_bufsiz1(%rip), %esi # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].server_nip, addq $32, %rsp #,
movq %rbx, %rdi # dhcp_pkt,
popq %rbx #
popq %rbp #
popq %r12 #
movl %edx, %r8d # D.8404,
jmp udhcp_send_kernel_packet #
.L30:
testl %esi, %esi # force_broadcast
je .L41 #,
.L33:
movl dhcp_verbose(%rip), %edx # dhcp_verbose,
movl $-1, %ebp #, ciaddr
leaq MAC_BCAST_ADDR(%rip), %r12 #, chaddr
testl %edx, %edx #
je .L35 #,
leaq .LC1(%rip), %rdi #,
xorl %eax, %eax #
call bb_info_msg #
.L35:
movl 8+bb_common_bufsiz1(%rip), %eax # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].ifindex, MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].ifindex movzwl 2054+bb_common_bufsiz1(%rip), %r8d # \
MEM[(struct client_config_t * {ref-all})&bb_common_bufsiz1 + 2048B].port, MEM[(struct \
client_config_t * {ref-all})&bb_common_bufsiz1 + 2048B].port movq %r12, %r9 # \
chaddr, movzwl 16+bb_common_bufsiz1(%rip), %edx # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].port, MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].port movl 12+bb_common_bufsiz1(%rip), %esi # \
MEM[(struct server_config_t * {ref-all})&bb_common_bufsiz1].server_nip, movl %ebp, \
%ecx # ciaddr, movq %rbx, %rdi # dhcp_pkt,
movl %eax, (%rsp) # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].ifindex, call udhcp_send_raw_packet #
movq 24(%rsp), %rax # D.8427,
xorq %fs:40, %rax #,
jne .L40 #,
addq $32, %rsp #,
popq %rbx #
popq %rbp #
popq %r12 #
ret
.L40:
call __stack_chk_fail@PLT #
.L41:
testb $-128, 10(%rdi) #, dhcp_pkt_1(D)->flags
jne .L33 #,
movl 12(%rdi), %ebp # dhcp_pkt_1(D)->ciaddr, ciaddr
testl %ebp, %ebp # ciaddr
je .L33 #,
movl dhcp_verbose(%rip), %eax # dhcp_verbose,
testl %eax, %eax #
je .L36 #,
leaq .LC2(%rip), %rdi #,
xorl %eax, %eax #
call bb_info_msg #
movl 12(%rbx), %ebp # dhcp_pkt_1(D)->ciaddr, ciaddr
.L36:
leaq 28(%rbx), %r12 #, chaddr
jmp .L35 #
.size send_packet, .-send_packet
.section .rodata.str1.8
.align 8
.LC3:
.string "no free IP addresses. OFFER abandoned"
.section .rodata.str1.1
.LC4:
.string "Sending OFFER of %s"
.section .text.send_offer,"ax",@progbits
.type send_offer, @function
send_offer:
pushq %r14 #
movq %rcx, %r14 # requested_ip_opt, requested_ip_opt
pushq %r13 #
movl %r8d, %r13d # arpping_ms, arpping_ms
pushq %r12 #
movl %esi, %r12d # static_lease_nip, static_lease_nip
movq %rdi, %rsi # oldpacket,
pushq %rbp #
movq %rdi, %rbp # oldpacket, oldpacket
pushq %rbx #
movq %rdx, %rbx # lease, lease
movl $2, %edx #,
subq $640, %rsp #,
movq %rsp, %rdi #,
movq %fs:40, %rax #,
movq %rax, 632(%rsp) #, D.8434
xorl %eax, %eax #
call init_packet #
testl %r12d, %r12d # static_lease_nip
movl %r12d, 16(%rsp) # static_lease_nip, packet.yiaddr
je .L66 #,
.L65:
movq %rbp, %rdi # oldpacket,
call select_lease_time #
movl $51, %esi #,
movq %rsp, %rdi #,
movl %eax, %edx # lease_time_sec, __v
#APP
# 213 "networking/udhcp/dhcpd.c" 1
bswap %edx # __v
# 0 "" 2
#NO_APP
call udhcp_add_simple_option #
movq %rsp, %rdi #,
call add_server_options #
movl 16(%rsp), %edi # packet.yiaddr,
call inet_ntoa@PLT #
leaq .LC4(%rip), %rdi #,
movq %rax, %rsi # D.8250,
xorl %eax, %eax #
call bb_info_msg #
xorl %esi, %esi #
movq %rsp, %rdi #,
call send_packet #
.L42:
movq 632(%rsp), %rax # D.8434,
xorq %fs:40, %rax #,
jne .L67 #,
addq $640, %rsp #,
popq %rbx #
popq %rbp #
popq %r12 #
popq %r13 #
popq %r14 #
ret
.L66:
testq %rbx, %rbx # lease
je .L44 #,
movl 4(%rbx), %ebx # lease_7(D)->lease_nip, req_nip
movl %ebx, 16(%rsp) # req_nip, packet.yiaddr
.L45:
testl %ebx, %ebx # req_nip
jne .L49 #,
.L52:
leaq .LC3(%rip), %rdi #,
xorl %eax, %eax #
call bb_error_msg #
jmp .L42 #
.L44:
testq %r14, %r14 # requested_ip_opt
jne .L68 #,
.L46:
leaq 28(%rbp), %rdi #, tmp89
movl %r13d, %esi # arpping_ms,
call find_free_or_expired_nip #
movl %eax, %ebx #, req_nip
.L64:
movl %ebx, 16(%rsp) # req_nip, packet.yiaddr
jmp .L45 #
.L68:
movl (%r14), %ebx # MEM[(bb__aliased_uint32_t * {ref-all})requested_ip_opt_9(D)], \
req_nip movl %ebx, %eax # req_nip, __v
#APP
# 181 "networking/udhcp/dhcpd.c" 1
bswap %eax # __v
# 0 "" 2
#NO_APP
cmpl 32+bb_common_bufsiz1(%rip), %eax # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].start_ip, __v jb .L46 #,
cmpl 36+bb_common_bufsiz1(%rip), %eax # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].end_ip, __v ja .L46 #,
movl %ebx, %edi # req_nip,
call find_lease_by_nip #
testq %rax, %rax # lease
je .L64 #,
movq %rax, %rdi # lease,
call is_expired_lease #
testl %eax, %eax # D.8223
jne .L64 #,
.p2align 4,,3
jmp .L46 #
.L67:
.p2align 4,,9
call __stack_chk_fail@PLT #
.L49:
movl $12, %esi #,
movq %rbp, %rdi # oldpacket,
call udhcp_get_option #
xorl %r8d, %r8d # iftmp.19
testq %rax, %rax # p_host_name
je .L51 #,
movzbl -1(%rax), %r8d # MEM[(const char *)p_host_name_51 + -1B], iftmp.19
.L51:
movl 64+bb_common_bufsiz1(%rip), %edx # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].offer_time, movl 16(%rsp), %esi # packet.yiaddr,
leaq 28(%rsp), %rdi #, tmp93
movq %rax, %rcx # p_host_name,
call add_lease #
testq %rax, %rax # lease
je .L52 #,
jmp .L65 #
.size send_offer, .-send_offer
.section .rodata.str1.1
.LC5:
.string "Sending ACK to %s"
.section .text.send_ACK,"ax",@progbits
.type send_ACK, @function
send_ACK:
pushq %r12 #
movl $5, %edx #,
pushq %rbp #
movl %esi, %ebp # yiaddr, yiaddr
movq %rdi, %rsi # oldpacket,
pushq %rbx #
movq %rdi, %rbx # oldpacket, oldpacket
subq $640, %rsp #,
movq %rsp, %rdi #,
movq %fs:40, %rax #,
movq %rax, 632(%rsp) #, D.8442
xorl %eax, %eax #
call init_packet #
movq %rbx, %rdi # oldpacket,
movl %ebp, 16(%rsp) # yiaddr, packet.yiaddr
call select_lease_time #
movl $51, %esi #,
movq %rsp, %rdi #,
movl %eax, %edx # lease_time_sec, __v
movl %eax, %r12d #, lease_time_sec
#APP
# 245 "networking/udhcp/dhcpd.c" 1
bswap %edx # __v
# 0 "" 2
#NO_APP
call udhcp_add_simple_option #
movq %rsp, %rdi #,
call add_server_options #
movl %ebp, %edi # yiaddr,
call inet_ntoa@PLT #
leaq .LC5(%rip), %rdi #,
movq %rax, %rsi # D.8350,
xorl %eax, %eax #
call bb_info_msg #
xorl %esi, %esi #
movq %rsp, %rdi #,
call send_packet #
movl $12, %esi #,
movq %rbx, %rdi # oldpacket,
call udhcp_get_option #
xorl %r8d, %r8d # iftmp.32
testq %rax, %rax # p_host_name
movq %rax, %rcx #, p_host_name
je .L70 #,
movzbl -1(%rax), %r8d # MEM[(const char *)p_host_name_22 + -1B], iftmp.32
.L70:
movl 16(%rsp), %esi # packet.yiaddr,
leaq 28(%rsp), %rdi #, tmp77
movl %r12d, %edx # lease_time_sec,
call add_lease #
call write_leases #
movq 632(%rsp), %rax # D.8442,
xorq %fs:40, %rax #,
jne .L75 #,
addq $640, %rsp #,
popq %rbx #
popq %rbp #
popq %r12 #
ret
.L75:
call __stack_chk_fail@PLT #
.size send_ACK, .-send_ACK
.section .rodata.str1.1
.LC6:
.string "Sending NAK"
.section .text.send_NAK,"ax",@progbits
.type send_NAK, @function
send_NAK:
subq $648, %rsp #,
movq %rdi, %rsi # oldpacket, oldpacket
movl $6, %edx #,
movq %rsp, %rdi #,
movq %fs:40, %rax #,
movq %rax, 632(%rsp) #, D.8447
xorl %eax, %eax #
call init_packet #
movl dhcp_verbose(%rip), %eax # dhcp_verbose,
testl %eax, %eax #
je .L77 #,
leaq .LC6(%rip), %rdi #,
xorl %eax, %eax #
call bb_info_msg #
.L77:
movl $1, %esi #,
movq %rsp, %rdi #,
call send_packet #
movq 632(%rsp), %rax # D.8447,
xorq %fs:40, %rax #,
jne .L80 #,
addq $648, %rsp #,
ret
.L80:
call __stack_chk_fail@PLT #
.size send_NAK, .-send_NAK
.section .text.send_inform,"ax",@progbits
.type send_inform, @function
send_inform:
subq $648, %rsp #,
movq %rdi, %rsi # oldpacket, oldpacket
movl $5, %edx #,
movq %rsp, %rdi #,
movq %fs:40, %rax #,
movq %rax, 632(%rsp) #, D.8451
xorl %eax, %eax #
call init_packet #
movq %rsp, %rdi #,
call add_server_options #
xorl %esi, %esi #
movq %rsp, %rdi #,
call send_packet #
movq 632(%rsp), %rax # D.8451,
xorq %fs:40, %rax #,
jne .L84 #,
addq $648, %rsp #,
ret
.L84:
call __stack_chk_fail@PLT #
.size send_inform, .-send_inform
.section .rodata.str1.1
.LC7:
.string "/etc/udhcpd.conf"
.LC8:
.string "2000"
.LC9:
.string "vv"
.LC10:
.string "fSI:va:P:"
.LC11:
.string "%s (v1.23.0) started"
.section .rodata.str1.8
.align 8
.LC12:
.string "max_leases=%u is too big, setting to %u"
.section .rodata.str1.1
.LC13:
.string "Error on select"
.LC14:
.string "Received SIGUSR1"
.LC15:
.string "Received SIGTERM"
.section .rodata.str1.8
.align 8
.LC16:
.string "Read error: %s, reopening socket"
.align 8
.LC17:
.string "MAC length != 6, ignoring packet"
.align 8
.LC18:
.string "not a REQUEST, ignoring packet"
.align 8
.LC19:
.string "no or bad message type option, ignoring packet"
.align 8
.LC20:
.string "server ID doesn't match, ignoring"
.section .rodata.str1.1
.LC21:
.string "Found static lease: %x"
.LC22:
.string "Received DISCOVER"
.LC23:
.string "Received REQUEST"
.section .rodata.str1.8
.align 8
.LC24:
.string "no requested IP and no ciaddr, ignoring"
.section .rodata.str1.1
.LC25:
.string "Received DECLINE"
.LC26:
.string "Received RELEASE"
.LC27:
.string "Received INFORM"
.section .text.udhcpd_main,"ax",@progbits
.globl udhcpd_main
.type udhcpd_main, @function
udhcpd_main:
pushq %r15 #
leaq .LC8(%rip), %rdx #,
leaq dhcp_verbose(%rip), %r9 #,
pushq %r14 #
pushq %r13 #
pushq %r12 #
pushq %rbp #
movq %rsi, %rbp # argv, argv
leaq .LC10(%rip), %rsi #,
movq %rbp, %rdi # argv,
pushq %rbx #
subq $904, %rsp #,
movw $67, 16+bb_common_bufsiz1(%rip) #, MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].port movw $68, 2054+bb_common_bufsiz1(%rip) #, \
MEM[(struct client_config_t * {ref-all})&bb_common_bufsiz1 + 2048B].port \
movq %fs:40, %rax #, movq %rax, 888(%rsp) #, D.8469
xorl %eax, %eax #
leaq .LC9(%rip), %rax #,
movq %rdx, 48(%rsp) #, str_a
leaq 56(%rsp), %r8 #,
leaq 48(%rsp), %rcx #,
leaq 40(%rsp), %rdx #,
movq %rax, opt_complementary(%rip) #, opt_complementary
xorl %eax, %eax #
call getopt32 #
testb $1, %al #, opt
movl %eax, %ebx #, opt
jne .L86 #,
xorl %edi, %edi #
call bb_daemonize_or_rexec #
movb $0, logmode(%rip) #, logmode
.L86:
movq optind@GOTPCREL(%rip), %rax #, tmp186
testb $2, %bl #, opt
movslq (%rax), %rax # optind, optind
leaq 0(%rbp,%rax,8), %rbp #, argv
je .L87 #,
movq applet_name(%rip), %rdi # applet_name,
movl $24, %edx #,
movl $1, %esi #,
call openlog@PLT #
orb $2, logmode(%rip) #, logmode
.L87:
testb $4, %bl #, opt
je .L88 #,
movq 40(%rsp), %rdi # str_I,
xorl %esi, %esi #
call xhost2sockaddr #
movl 8(%rax), %edx # lsa_35->u.sin.sin_addr.s_addr, lsa_35->u.sin.sin_addr.s_addr
movq %rax, %rdi # tmp194,
movl %edx, 12+bb_common_bufsiz1(%rip) # lsa_35->u.sin.sin_addr.s_addr, MEM[(struct \
server_config_t * {ref-all})&bb_common_bufsiz1].server_nip call free@PLT #
.L88:
andl $32, %ebx #, opt
je .L89 #,
movq 56(%rsp), %rdi # str_P,
call xatou16 #
movw %ax, 16+bb_common_bufsiz1(%rip) # D.8015, MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].port addl $1, %eax #, tmp201
movw %ax, 2054+bb_common_bufsiz1(%rip) # tmp201, MEM[(struct client_config_t * \
{ref-all})&bb_common_bufsiz1 + 2048B].port
.L89:
movq 48(%rsp), %rdi # str_a,
call xatou #
movq 0(%rbp), %rdi # *argv_28, iftmp.8
movl %eax, 20(%rsp) #, %sfp
leaq .LC7(%rip), %rax #, tmp287
testq %rdi, %rdi # iftmp.8
cmove %rax, %rdi # iftmp.8,, tmp287, iftmp.8
call read_config #
call bb_sanitize_stdio #
movq stdout@GOTPCREL(%rip), %rax #, tmp203
movq (%rax), %rdi # stdout,
call setlinebuf@PLT #
movq applet_name(%rip), %rsi # applet_name,
leaq .LC11(%rip), %rdi #,
xorl %eax, %eax #
call bb_info_msg #
movq 24+bb_common_bufsiz1(%rip), %rdi # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].options, movl $51, %esi #,
call udhcp_find_option #
testq %rax, %rax # option
movl $864000, 40+bb_common_bufsiz1(%rip) #, MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].max_lease_sec je .L91 #,
movq (%rax), %rax # option_55->data, option_55->data
movl 2(%rax), %eax # MEM[(bb__aliased_uint32_t * {ref-all})D.8028_58 + 2B], __v
#APP
# 370 "networking/udhcp/dhcpd.c" 1
bswap %eax # __v
# 0 "" 2
#NO_APP
movl %eax, 40+bb_common_bufsiz1(%rip) # __v, MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].max_lease_sec
.L91:
movl 36+bb_common_bufsiz1(%rip), %ebx # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].end_ip, num_ips movl 48+bb_common_bufsiz1(%rip), \
%esi # MEM[(struct server_config_t * {ref-all})&bb_common_bufsiz1].max_leases, \
addl $1, %ebx #, num_ips subl 32+bb_common_bufsiz1(%rip), %ebx # MEM[(struct \
server_config_t * {ref-all})&bb_common_bufsiz1].start_ip, num_ips cmpl %esi, %ebx # \
num_ips, num_ips jae .L92 #,
leaq .LC12(%rip), %rdi #,
movl %ebx, %edx # num_ips,
xorl %eax, %eax #
call bb_error_msg #
movl %ebx, 48+bb_common_bufsiz1(%rip) # num_ips, MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].max_leases movl %ebx, %esi # num_ips,
.L92:
leaq (%rsi,%rsi,8), %rdi #, tmp220
salq $2, %rdi #, tmp221
call xzalloc #
movq 72+bb_common_bufsiz1(%rip), %rdi # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].lease_file, movq %rax, g_leases(%rip) # tmp222, \
g_leases call read_leases #
movl 12+bb_common_bufsiz1(%rip), %r15d # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].server_nip, leaq 12+bb_common_bufsiz1(%rip), %rax #, \
tmp288 movq bb_common_bufsiz1(%rip), %rdi # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].interface, xorl %edx, %edx # iftmp.12
leaq 18+bb_common_bufsiz1(%rip), %rcx #,
leaq 8+bb_common_bufsiz1(%rip), %rsi #,
testl %r15d, %r15d #
cmove %rax, %rdx # tmp288,, iftmp.12
call udhcp_read_interface #
testl %eax, %eax # D.8059
movl $1, %edx #, retval
je .L197 #,
.L94:
movl %edx, %eax # retval,
movq 888(%rsp), %rdx # D.8469,
xorq %fs:40, %rdx #,
jne .L198 #,
addq $904, %rsp #,
popq %rbx #
popq %rbp #
popq %r12 #
popq %r13 #
popq %r14 #
popq %r15 #
ret
.L197:
call udhcp_sp_setup #
movq bb_errno(%rip), %rax # bb_errno,
leaq 284(%rsp), %rdx #,
movl $-1, %ebp #, server_socket
movq %rdx, 8(%rsp) #, %sfp
movq %rax, 24(%rsp) #, %sfp
.L193:
call monotonic_sec #
movl 52+bb_common_bufsiz1(%rip), %edx # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].auto_time, addl %edx, %eax #,
movl %eax, 16(%rsp) #, %sfp
.L192:
testl %ebp, %ebp # server_socket
jns .L97 #,
.L194:
movzwl 16+bb_common_bufsiz1(%rip), %edi # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].port, MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].port movq bb_common_bufsiz1(%rip), %rsi # MEM[(struct \
server_config_t * {ref-all})&bb_common_bufsiz1].interface, \
call udhcp_listen_socket # movl %eax, %ebp #, server_socket
.L97:
leaq 128(%rsp), %rdi #,
movl %ebp, %esi # server_socket,
call udhcp_sp_fd_set #
movl 52+bb_common_bufsiz1(%rip), %r14d # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].auto_time, movl %eax, %ebx #, max_sock
testl %r14d, %r14d #
jne .L98 #,
.L100:
xorl %r8d, %r8d # iftmp.13
.L99:
leal 1(%rbx), %edi #, tmp236
leaq 128(%rsp), %rsi #,
xorl %ecx, %ecx #
xorl %edx, %edx #
call select@PLT #
cmpl $0, %eax #, retval
jne .L199 #,
.L196:
.L95:
call write_leases #
.p2align 4,,5
jmp .L193 #
.L198:
.p2align 4,,8
call __stack_chk_fail@PLT #
.L98:
.p2align 4,,8
call monotonic_sec #
movl 16(%rsp), %edx # %sfp,
movl 52+bb_common_bufsiz1(%rip), %r13d # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].auto_time, movq $0, 72(%rsp) #, tv.tv_usec
subl %eax, %edx # D.8069,
testl %r13d, %r13d #
movq %rdx, 64(%rsp) # D.8071, tv.tv_sec
je .L100 #,
testq %rdx, %rdx # D.8071
je .L196 #,
leaq 64(%rsp), %r8 #, iftmp.13
jmp .L99 #
.L199:
.p2align 4,,3
jge .L103 #,
movq 24(%rsp), %rax # %sfp,
cmpl $4, (%rax) #, *bb_errno.14_132
je .L103 #,
movl dhcp_verbose(%rip), %r11d # dhcp_verbose,
testl %r11d, %r11d #
je .L192 #,
leaq .LC13(%rip), %rdi #,
xorl %eax, %eax #
call bb_info_msg #
jmp .L192 #
.L103:
leaq 128(%rsp), %rdi #,
call udhcp_sp_read #
cmpl $10, %eax #, D.8092
jne .L200 #,
leaq .LC14(%rip), %rdi #,
xorl %eax, %eax #
call bb_info_msg #
jmp .L196 #
.L200:
cmpl $15, %eax #, D.8092
jne .L201 #,
leaq .LC15(%rip), %rdi #,
xorl %eax, %eax #
call bb_info_msg #
call write_leases #
xorl %edx, %edx # retval
jmp .L94 #
.L201:
testl %eax, %eax # D.8092
.p2align 4,,4
jne .L192 #,
leaq 256(%rsp), %rdi #,
movl %ebp, %esi # server_socket,
call udhcp_recv_kernel_packet #
testl %eax, %eax # bytes
jns .L108 #,
cmpl $-1, %eax #, bytes
jne .L192 #,
movq bb_errno(%rip), %rdx # bb_errno,
movl (%rdx), %edi # *bb_errno.14_138, D.8086
cmpl $4, %edi #, D.8086
je .L192 #,
movl dhcp_verbose(%rip), %r10d # dhcp_verbose,
testl %r10d, %r10d #
je .L109 #,
call strerror@PLT #
leaq .LC16(%rip), %rdi #,
movq %rax, %rsi # D.8101,
xorl %eax, %eax #
call bb_info_msg #
.L109:
movl %ebp, %edi # server_socket,
call close@PLT #
jmp .L194 #
.L108:
cmpb $6, 258(%rsp) #, packet.hlen
je .L110 #,
leaq .LC17(%rip), %rdi #,
xorl %eax, %eax #
call bb_error_msg #
jmp .L192 #
.L110:
cmpb $1, 256(%rsp) #, packet.op
je .L111 #,
leaq .LC18(%rip), %rdi #,
xorl %eax, %eax #
call bb_error_msg #
jmp .L192 #
.L111:
leaq 256(%rsp), %rdi #,
movl $53, %esi #,
call udhcp_get_option #
testq %rax, %rax # state
movq %rax, %r15 #, state
jne .L202 #,
.L112:
leaq .LC19(%rip), %rdi #,
xorl %eax, %eax #
call bb_error_msg #
jmp .L192 #
.L202:
movzbl (%rax), %eax # *state_147, D.8111
testb %al, %al # D.8111
je .L112 #,
cmpb $8, %al #, D.8111
.p2align 4,,4
ja .L112 #,
leaq 256(%rsp), %rdi #,
movl $54, %esi #,
call udhcp_get_option #
testq %rax, %rax # server_id_opt
movq %rax, %r13 #, server_id_opt
je .L114 #,
movl (%rax), %eax # MEM[(bb__aliased_uint32_t * {ref-all})server_id_opt_150],
cmpl %eax, 12+bb_common_bufsiz1(%rip) #, MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].server_nip je .L114 #,
movl dhcp_verbose(%rip), %r9d # dhcp_verbose,
testl %r9d, %r9d #
je .L192 #,
leaq .LC20(%rip), %rdi #,
xorl %eax, %eax #
call bb_info_msg #
jmp .L192 #
.L114:
movq 8(%rsp), %rsi # %sfp,
movq 112+bb_common_bufsiz1(%rip), %rdi # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].static_leases, call get_static_nip_by_mac #
testl %eax, %eax #
movl %eax, 4(%rsp) #, %sfp
je .L115 #,
leaq .LC21(%rip), %rdi #,
movl %eax, %esi #,
xorl %eax, %eax #
leaq 80(%rsp), %rbx #, lease
call bb_info_msg #
movl 284(%rsp), %eax # MEM[(char * {ref-all})&packet + 28B], MEM[(char * \
{ref-all})&packet + 28B] movl $0, 80(%rsp) #, fake_lease.expires
movl %eax, 88(%rsp) # MEM[(char * {ref-all})&packet + 28B], MEM[(char * \
{ref-all})&fake_lease + 8B] movzwl 288(%rsp), %eax # MEM[(char * {ref-all})&packet + \
28B], MEM[(char * {ref-all})&packet + 28B] movw %ax, 92(%rsp) # MEM[(char * \
{ref-all})&packet + 28B], MEM[(char * {ref-all})&fake_lease + 8B] movl 4(%rsp), \
%eax # %sfp, movl %eax, 84(%rsp) #, fake_lease.lease_nip
.L116:
leaq 256(%rsp), %rdi #,
movl $50, %esi #,
call udhcp_get_option #
testq %rax, %rax # requested_ip_opt
movq %rax, %r14 #, requested_ip_opt
je .L117 #,
movl (%rax), %r12d # MEM[(bb__aliased_uint32_t * {ref-all})requested_ip_opt_160], \
requested_nip
.L117:
cmpb $8, (%r15) #, *state_147
ja .L192 #,
movzbl (%r15), %edx # *state_147, *state_147
leaq .L124(%rip), %rax #, tmp254
movslq (%rax,%rdx,4), %rdx #, tmp256
addq %rdx, %rax # tmp256, tmp257
jmp *%rax # tmp257
.section .rodata.udhcpd_main,"a",@progbits
.align 4
.align 4
.L124:
.long .L192-.L124
.long .L119-.L124
.long .L192-.L124
.long .L120-.L124
.long .L121-.L124
.long .L192-.L124
.long .L192-.L124
.long .L122-.L124
.long .L123-.L124
.section .text.udhcpd_main
.L115:
movq 8(%rsp), %rdi # %sfp,
call find_lease_by_mac #
movq %rax, %rbx #, lease
jmp .L116 #
.L119:
movl dhcp_verbose(%rip), %r8d # dhcp_verbose,
testl %r8d, %r8d #
je .L125 #,
leaq .LC22(%rip), %rdi #,
xorl %eax, %eax #
call bb_info_msg #
.L125:
movl 20(%rsp), %r8d # %sfp,
movl 4(%rsp), %esi # %sfp,
leaq 256(%rsp), %rdi #,
movq %r14, %rcx # requested_ip_opt,
movq %rbx, %rdx # lease,
call send_offer #
jmp .L192 #
.L123:
movl dhcp_verbose(%rip), %eax # dhcp_verbose,
testl %eax, %eax #
je .L132 #,
leaq .LC27(%rip), %rdi #,
xorl %eax, %eax #
call bb_info_msg #
.L132:
leaq 256(%rsp), %rdi #,
call send_inform #
jmp .L192 #
.L122:
movl dhcp_verbose(%rip), %edx # dhcp_verbose,
testl %edx, %edx #
je .L131 #,
leaq .LC26(%rip), %rdi #,
xorl %eax, %eax #
call bb_info_msg #
.L131:
testq %rbx, %rbx # lease
je .L192 #,
testq %r13, %r13 # server_id_opt
je .L192 #,
movl 4(%rbx), %edx # lease_14->lease_nip,
cmpl %edx, 268(%rsp) #, packet.ciaddr
jne .L192 #,
xorl %edi, %edi #
call time@PLT #
movl %eax, (%rbx) # D.8169, lease_14->expires
jmp .L192 #
.L121:
movl dhcp_verbose(%rip), %ecx # dhcp_verbose,
testl %ecx, %ecx #
je .L130 #,
leaq .LC25(%rip), %rdi #,
xorl %eax, %eax #
call bb_info_msg #
.L130:
testq %r14, %r14 # requested_ip_opt
je .L192 #,
testq %r13, %r13 # server_id_opt
je .L192 #,
testq %rbx, %rbx # lease
.p2align 4,,2
je .L192 #,
cmpl %r12d, 4(%rbx) # requested_nip, lease_14->lease_nip
jne .L192 #,
movl $0, 8(%rbx) #, lease_14->lease_mac
movw $0, 12(%rbx) #, lease_14->lease_mac
xorl %edi, %edi #
call time@PLT #
addl 56+bb_common_bufsiz1(%rip), %eax # MEM[(struct server_config_t * \
{ref-all})&bb_common_bufsiz1].decline_time, tmp273 movl %eax, (%rbx) # tmp273, \
lease_14->expires jmp .L192 #
.L120:
movl dhcp_verbose(%rip), %edi # dhcp_verbose,
testl %edi, %edi #
je .L126 #,
leaq .LC23(%rip), %rdi #,
xorl %eax, %eax #
call bb_info_msg #
.L126:
testq %r14, %r14 # requested_ip_opt
jne .L127 #,
movl 268(%rsp), %r12d # packet.ciaddr, requested_nip
testl %r12d, %r12d # requested_nip
jne .L127 #,
movl dhcp_verbose(%rip), %esi # dhcp_verbose,
testl %esi, %esi #
je .L192 #,
leaq .LC24(%rip), %rdi #,
xorl %eax, %eax #
call bb_info_msg #
jmp .L192 #
.L127:
testq %rbx, %rbx # lease
je .L128 #,
cmpl %r12d, 4(%rbx) # requested_nip, lease_14->lease_nip
.p2align 4,,4
jne .L128 #,
leaq 256(%rsp), %rdi #,
movl %r12d, %esi # requested_nip,
call send_ACK #
jmp .L192 #
.L128:
testq %r14, %r14 # requested_ip_opt
je .L203 #,
.L138:
leaq 256(%rsp), %rdi #,
call send_NAK #
jmp .L192 #
.L203:
testq %r13, %r13 # server_id_opt
je .L192 #,
.p2align 4,,8
jmp .L138 #
.size udhcpd_main, .-udhcpd_main
.hidden g_leases
.comm g_leases,8,8
.hidden find_lease_by_mac
.hidden get_static_nip_by_mac
.hidden udhcp_recv_kernel_packet
.hidden udhcp_sp_read
.hidden udhcp_sp_fd_set
.hidden udhcp_listen_socket
.hidden monotonic_sec
.hidden bb_errno
.hidden udhcp_sp_setup
.hidden udhcp_read_interface
.hidden read_leases
.hidden xzalloc
.hidden udhcp_find_option
.hidden bb_sanitize_stdio
.hidden read_config
.hidden xatou
.hidden xatou16
.hidden xhost2sockaddr
.hidden applet_name
.hidden logmode
.hidden bb_daemonize_or_rexec
.hidden getopt32
.hidden opt_complementary
.hidden write_leases
.hidden add_lease
.hidden is_expired_lease
.hidden find_lease_by_nip
.hidden find_free_or_expired_nip
.hidden bb_error_msg
.hidden udhcp_send_raw_packet
.hidden udhcp_send_kernel_packet
.hidden bb_info_msg
.hidden dhcp_verbose
.hidden MAC_BCAST_ADDR
.hidden udhcp_add_binary_option
.hidden udhcp_add_simple_option
.hidden udhcp_init_header
.hidden udhcp_get_option
.hidden bb_common_bufsiz1
.ident "GCC: (Gentoo Hardened 4.7.4 p1.2, pie-0.5.5) 4.7.4"
.section .note.GNU-stack,"",@progbits
[Attachment #8 (application/pgp-signature)]
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic