> void register_all_protocols(void) {
> {extern void proto_register_frame (void); proto_register_frame ();}
> {extern void proto_register_aarp (void); proto_register_aarp ();}
> {extern void proto_register_afs (void); proto_register_afs ();}
> }
...
> for f in packet.c packet-aarp.c packet-afs.c packet-afs.h packet-arp.c packet-ascend.c packet-atalk.c packet-atm.c packet-bgp.c packet-bootp.c packet-bpdu.c packet-cdp.c packet-clip.c packet-data.c packet-dns.c packet-dns.h packet-eth.c packet-fddi.c packet-ftp.c packet-giop.c packet-gre.c packet-http.c packet-icmpv6.c packet-icp.c packet-ip.c packet-ip.h packet-ipp.c packet-ipsec.c packet-ipv6.c packet-ipv6.h packet-ipx.c packet-ipx.h packet-isakmp.c packet-lapb.c packet-llc.c packet-lpd.c packet-nbipx.c packet-nbns.c packet-ncp.c packet-ncp.h packet-netbios.c packet-netbios.h packet-nntp.c packet-ntp.c packet-ntp.h packet-null.c packet-osi.c packet-ospf.c packet-ospf.h packet-pim.c packet-pop.c packet-ppp.c packet-pppoe.c packet-pptp.c packet-radius.c packet-raw.c packet-rip.c packet-rip.h packet-ripng.c packet-ripng.h packet-rsvp.c packet-rsvp.h packet-rtsp.c packet-rx.c packet-rx.h packet-sdp.c packet-smb.c packet-sna.c packet-tcp.c packet-telnet.c packet-tftp.c packet-tr.c packet-trmac.c packet-udp.c packet-vines.c packet-vines.h packet-vlan.c packet-x25.c packet-yhoo.c packet-yhoo.h packet-snmp.c; do grep '^proto_register_[a-z_0-9A-Z]* *(' ./$f 2>/dev/null; done | sed -e 's/^.*://' -e 's/^\([a-z_0-9A-Z]*\).*/ {extern void \1 (void); \1 ();}/' >>register.c-tmp
Hmm.
"proto_register_frame()" is declared in "packet.c",
"proto_register_aarp()" is declared in "packet-aarp.c", and
"proto_register_afs()" is declared in "packet-afs.c".
It looks as if it quit after "packet-afs.c"; "packet-afs.h" comes right
after that, and isn't a ".c" file, but that *shouldn't* make a
difference.
What happens if you add
echo "$$f" >>/tmp/list-of-files;
between the "do" and the "grep" in the "for" loops in the Makefile?
What shows up in "/tmp/list-of-files"?