# Programas
targets=ip
-tests=test_send test_recv test_ipaddr test_ipin test_ipout test_devtcp test_poll
+tests=test_send test_recv test_ipaddr test_ipin test_ipout test_devtcp \
+ test_poll test_resolvprotos test_resolvprotoc
# Fuentes
fuentes ?= $(wildcard *.cpp) $(wildcard *.c)
test_poll: test_poll.o libtcp.o
+test_resolvprotos: test_resolvprotos.o libtcp.o ipaddr.o resolvproto.o
+
+test_resolvprotoc: test_resolvprotoc.o libtcp.o ipaddr.o resolvproto.o
+
ip: ip.o ipout.o ipin.o ipaddr.o ipheader.o devque.o devtcp.o routetable.o libtcp.o
depend:
devtcp.o: /usr/include/bits/fcntl.h /usr/include/sys/ipc.h
devtcp.o: /usr/include/bits/ipctypes.h /usr/include/bits/ipc.h
devtcp.o: /usr/include/sys/msg.h /usr/include/bits/msq.h
-ip.o: ipout.h ipaddr.h ipheader.h /usr/include/stdint.h
-ip.o: /usr/include/features.h /usr/include/sys/cdefs.h
-ip.o: /usr/include/gnu/stubs.h /usr/include/bits/wchar.h
-ip.o: /usr/include/bits/wordsize.h routetable.h dev.h ipin.h devtcp.h
-ip.o: /usr/include/sys/poll.h /usr/include/bits/poll.h devque.h
-ip.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-ip.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
-ip.o: /usr/include/bits/confname.h /usr/include/getopt.h /usr/include/fcntl.h
-ip.o: /usr/include/bits/fcntl.h /usr/include/sys/types.h /usr/include/time.h
-ip.o: /usr/include/endian.h /usr/include/bits/endian.h
-ip.o: /usr/include/sys/select.h /usr/include/bits/select.h
-ip.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
-ip.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h
-ip.o: /usr/include/bits/sched.h /usr/include/sys/wait.h /usr/include/signal.h
+ip.o: ipout.h ipaddr.h /usr/include/stdint.h /usr/include/features.h
+ip.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
+ip.o: /usr/include/bits/wchar.h /usr/include/bits/wordsize.h ipheader.h
+ip.o: routetable.h dev.h ipin.h devtcp.h /usr/include/sys/poll.h
+ip.o: /usr/include/bits/poll.h devque.h /usr/include/unistd.h
+ip.o: /usr/include/bits/posix_opt.h /usr/include/bits/types.h
+ip.o: /usr/include/bits/typesizes.h /usr/include/bits/confname.h
+ip.o: /usr/include/getopt.h /usr/include/fcntl.h /usr/include/bits/fcntl.h
+ip.o: /usr/include/sys/types.h /usr/include/time.h /usr/include/endian.h
+ip.o: /usr/include/bits/endian.h /usr/include/sys/select.h
+ip.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
+ip.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
+ip.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h
+ip.o: /usr/include/sys/wait.h /usr/include/signal.h
ip.o: /usr/include/bits/signum.h /usr/include/bits/siginfo.h
ip.o: /usr/include/bits/sigaction.h /usr/include/bits/sigcontext.h
ip.o: /usr/include/asm/sigcontext.h /usr/include/asm-i486/sigcontext.h
ip.o: /usr/include/bits/waitstatus.h /usr/include/sys/ipc.h
ip.o: /usr/include/bits/ipctypes.h /usr/include/bits/ipc.h
ip.o: /usr/include/sys/msg.h /usr/include/bits/msq.h
-ipaddr.o: ipaddr.h
+ipaddr.o: ipaddr.h /usr/include/stdint.h /usr/include/features.h
+ipaddr.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
+ipaddr.o: /usr/include/bits/wchar.h /usr/include/bits/wordsize.h
ipheader.o: ipheader.h ipaddr.h /usr/include/stdint.h /usr/include/features.h
ipheader.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
ipheader.o: /usr/include/bits/wchar.h /usr/include/bits/wordsize.h
-ipin.o: ipin.h ipaddr.h ipheader.h /usr/include/stdint.h
-ipin.o: /usr/include/features.h /usr/include/sys/cdefs.h
-ipin.o: /usr/include/gnu/stubs.h /usr/include/bits/wchar.h
-ipin.o: /usr/include/bits/wordsize.h dev.h
-ipout.o: ipout.h ipaddr.h ipheader.h /usr/include/stdint.h
-ipout.o: /usr/include/features.h /usr/include/sys/cdefs.h
-ipout.o: /usr/include/gnu/stubs.h /usr/include/bits/wchar.h
-ipout.o: /usr/include/bits/wordsize.h routetable.h dev.h
-ipout.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-ipout.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
-ipout.o: /usr/include/bits/confname.h /usr/include/getopt.h
-ipout.o: /usr/include/fcntl.h /usr/include/bits/fcntl.h
+ipin.o: ipin.h ipaddr.h /usr/include/stdint.h /usr/include/features.h
+ipin.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
+ipin.o: /usr/include/bits/wchar.h /usr/include/bits/wordsize.h ipheader.h
+ipin.o: dev.h
+ipout.o: ipout.h ipaddr.h /usr/include/stdint.h /usr/include/features.h
+ipout.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
+ipout.o: /usr/include/bits/wchar.h /usr/include/bits/wordsize.h ipheader.h
+ipout.o: routetable.h dev.h /usr/include/unistd.h
+ipout.o: /usr/include/bits/posix_opt.h /usr/include/bits/types.h
+ipout.o: /usr/include/bits/typesizes.h /usr/include/bits/confname.h
+ipout.o: /usr/include/getopt.h /usr/include/fcntl.h /usr/include/bits/fcntl.h
ipout.o: /usr/include/sys/types.h /usr/include/time.h /usr/include/endian.h
ipout.o: /usr/include/bits/endian.h /usr/include/sys/select.h
ipout.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
ipout.o: /usr/include/sys/ipc.h /usr/include/bits/ipctypes.h
ipout.o: /usr/include/bits/ipc.h /usr/include/sys/msg.h
ipout.o: /usr/include/bits/msq.h
-routetable.o: routetable.h dev.h ipaddr.h
-test_devtcp.o: ipaddr.h devtcp.h dev.h /usr/include/stdint.h
-test_devtcp.o: /usr/include/features.h /usr/include/sys/cdefs.h
-test_devtcp.o: /usr/include/gnu/stubs.h /usr/include/bits/wchar.h
-test_devtcp.o: /usr/include/bits/wordsize.h /usr/include/sys/poll.h
+resolvproto.o: resolvproto.h ipaddr.h /usr/include/stdint.h
+resolvproto.o: /usr/include/features.h /usr/include/sys/cdefs.h
+resolvproto.o: /usr/include/gnu/stubs.h /usr/include/bits/wchar.h
+resolvproto.o: /usr/include/bits/wordsize.h libtcp.h /usr/include/stdio.h
+resolvproto.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
+resolvproto.o: /usr/include/libio.h /usr/include/_G_config.h
+resolvproto.o: /usr/include/wchar.h /usr/include/gconv.h
+resolvproto.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
+resolvproto.o: /usr/include/stdlib.h /usr/include/sys/types.h
+resolvproto.o: /usr/include/time.h /usr/include/endian.h
+resolvproto.o: /usr/include/bits/endian.h /usr/include/sys/select.h
+resolvproto.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
+resolvproto.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
+resolvproto.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h
+resolvproto.o: /usr/include/alloca.h /usr/include/unistd.h
+resolvproto.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
+resolvproto.o: /usr/include/getopt.h /usr/include/signal.h
+resolvproto.o: /usr/include/bits/signum.h /usr/include/bits/siginfo.h
+resolvproto.o: /usr/include/bits/sigaction.h /usr/include/bits/sigcontext.h
+resolvproto.o: /usr/include/asm/sigcontext.h
+resolvproto.o: /usr/include/asm-i486/sigcontext.h
+resolvproto.o: /usr/include/linux/compiler.h /usr/include/bits/sigstack.h
+resolvproto.o: /usr/include/bits/sigthread.h /usr/include/sys/wait.h
+resolvproto.o: /usr/include/sys/resource.h /usr/include/bits/resource.h
+resolvproto.o: /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h
+resolvproto.o: /usr/include/string.h /usr/include/sys/socket.h
+resolvproto.o: /usr/include/sys/uio.h /usr/include/bits/uio.h
+resolvproto.o: /usr/include/bits/socket.h /usr/include/limits.h
+resolvproto.o: /usr/include/bits/posix1_lim.h /usr/include/bits/local_lim.h
+resolvproto.o: /usr/include/linux/limits.h /usr/include/bits/posix2_lim.h
+resolvproto.o: /usr/include/bits/sockaddr.h /usr/include/asm/socket.h
+resolvproto.o: /usr/include/asm-i486/socket.h /usr/include/asm/sockios.h
+resolvproto.o: /usr/include/asm-i486/sockios.h /usr/include/netinet/in.h
+resolvproto.o: /usr/include/bits/in.h /usr/include/bits/byteswap.h
+resolvproto.o: /usr/include/arpa/inet.h /usr/include/netdb.h
+resolvproto.o: /usr/include/rpc/netdb.h /usr/include/bits/netdb.h
+routetable.o: routetable.h dev.h ipaddr.h /usr/include/stdint.h
+routetable.o: /usr/include/features.h /usr/include/sys/cdefs.h
+routetable.o: /usr/include/gnu/stubs.h /usr/include/bits/wchar.h
+routetable.o: /usr/include/bits/wordsize.h
+test_devtcp.o: ipaddr.h /usr/include/stdint.h /usr/include/features.h
+test_devtcp.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
+test_devtcp.o: /usr/include/bits/wchar.h /usr/include/bits/wordsize.h
+test_devtcp.o: devtcp.h dev.h /usr/include/sys/poll.h
test_devtcp.o: /usr/include/bits/poll.h /usr/include/unistd.h
test_devtcp.o: /usr/include/bits/posix_opt.h /usr/include/bits/types.h
test_devtcp.o: /usr/include/bits/typesizes.h /usr/include/bits/confname.h
test_devtcp.o: /usr/include/bits/waitstatus.h /usr/include/sys/ipc.h
test_devtcp.o: /usr/include/bits/ipctypes.h /usr/include/bits/ipc.h
test_devtcp.o: /usr/include/sys/msg.h /usr/include/bits/msq.h
-test_ipaddr.o: ipaddr.h ipheader.h /usr/include/stdint.h
-test_ipaddr.o: /usr/include/features.h /usr/include/sys/cdefs.h
-test_ipaddr.o: /usr/include/gnu/stubs.h /usr/include/bits/wchar.h
-test_ipaddr.o: /usr/include/bits/wordsize.h
-test_ipin.o: ipin.h ipaddr.h ipheader.h /usr/include/stdint.h
-test_ipin.o: /usr/include/features.h /usr/include/sys/cdefs.h
-test_ipin.o: /usr/include/gnu/stubs.h /usr/include/bits/wchar.h
-test_ipin.o: /usr/include/bits/wordsize.h dev.h devque.h
-test_ipin.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-test_ipin.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
-test_ipin.o: /usr/include/bits/confname.h /usr/include/getopt.h
-test_ipin.o: /usr/include/fcntl.h /usr/include/bits/fcntl.h
-test_ipin.o: /usr/include/sys/types.h /usr/include/time.h
-test_ipin.o: /usr/include/endian.h /usr/include/bits/endian.h
-test_ipin.o: /usr/include/sys/select.h /usr/include/bits/select.h
-test_ipin.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
-test_ipin.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h
-test_ipin.o: /usr/include/bits/sched.h /usr/include/sys/ipc.h
-test_ipin.o: /usr/include/bits/ipctypes.h /usr/include/bits/ipc.h
-test_ipin.o: /usr/include/sys/msg.h /usr/include/bits/msq.h
-test_ipout.o: ipout.h ipaddr.h ipheader.h /usr/include/stdint.h
-test_ipout.o: /usr/include/features.h /usr/include/sys/cdefs.h
-test_ipout.o: /usr/include/gnu/stubs.h /usr/include/bits/wchar.h
-test_ipout.o: /usr/include/bits/wordsize.h routetable.h dev.h devque.h
-test_ipout.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-test_ipout.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
-test_ipout.o: /usr/include/bits/confname.h /usr/include/getopt.h
-test_ipout.o: /usr/include/fcntl.h /usr/include/bits/fcntl.h
-test_ipout.o: /usr/include/sys/types.h /usr/include/time.h
-test_ipout.o: /usr/include/endian.h /usr/include/bits/endian.h
-test_ipout.o: /usr/include/sys/select.h /usr/include/bits/select.h
-test_ipout.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
-test_ipout.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h
-test_ipout.o: /usr/include/bits/sched.h /usr/include/sys/ipc.h
-test_ipout.o: /usr/include/bits/ipctypes.h /usr/include/bits/ipc.h
-test_ipout.o: /usr/include/sys/msg.h /usr/include/bits/msq.h
+test_ipaddr.o: ipaddr.h /usr/include/stdint.h /usr/include/features.h
+test_ipaddr.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
+test_ipaddr.o: /usr/include/bits/wchar.h /usr/include/bits/wordsize.h
+test_ipaddr.o: ipheader.h
+test_ipin.o: ipin.h ipaddr.h /usr/include/stdint.h /usr/include/features.h
+test_ipin.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
+test_ipin.o: /usr/include/bits/wchar.h /usr/include/bits/wordsize.h
+test_ipin.o: ipheader.h dev.h devque.h /usr/include/unistd.h
+test_ipin.o: /usr/include/bits/posix_opt.h /usr/include/bits/types.h
+test_ipin.o: /usr/include/bits/typesizes.h /usr/include/bits/confname.h
+test_ipin.o: /usr/include/getopt.h /usr/include/fcntl.h
+test_ipin.o: /usr/include/bits/fcntl.h /usr/include/sys/types.h
+test_ipin.o: /usr/include/time.h /usr/include/endian.h
+test_ipin.o: /usr/include/bits/endian.h /usr/include/sys/select.h
+test_ipin.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
+test_ipin.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
+test_ipin.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h
+test_ipin.o: /usr/include/sys/ipc.h /usr/include/bits/ipctypes.h
+test_ipin.o: /usr/include/bits/ipc.h /usr/include/sys/msg.h
+test_ipin.o: /usr/include/bits/msq.h
+test_ipout.o: ipout.h ipaddr.h /usr/include/stdint.h /usr/include/features.h
+test_ipout.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
+test_ipout.o: /usr/include/bits/wchar.h /usr/include/bits/wordsize.h
+test_ipout.o: ipheader.h routetable.h dev.h devque.h /usr/include/unistd.h
+test_ipout.o: /usr/include/bits/posix_opt.h /usr/include/bits/types.h
+test_ipout.o: /usr/include/bits/typesizes.h /usr/include/bits/confname.h
+test_ipout.o: /usr/include/getopt.h /usr/include/fcntl.h
+test_ipout.o: /usr/include/bits/fcntl.h /usr/include/sys/types.h
+test_ipout.o: /usr/include/time.h /usr/include/endian.h
+test_ipout.o: /usr/include/bits/endian.h /usr/include/sys/select.h
+test_ipout.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
+test_ipout.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
+test_ipout.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h
+test_ipout.o: /usr/include/sys/ipc.h /usr/include/bits/ipctypes.h
+test_ipout.o: /usr/include/bits/ipc.h /usr/include/sys/msg.h
+test_ipout.o: /usr/include/bits/msq.h
test_recv.o: devque.h dev.h /usr/include/unistd.h /usr/include/features.h
test_recv.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
test_recv.o: /usr/include/bits/posix_opt.h /usr/include/bits/types.h
test_recv.o: /usr/include/bits/sched.h /usr/include/sys/ipc.h
test_recv.o: /usr/include/bits/ipctypes.h /usr/include/bits/ipc.h
test_recv.o: /usr/include/sys/msg.h /usr/include/bits/msq.h
+test_resolvprotoc.o: resolvproto.h ipaddr.h /usr/include/stdint.h
+test_resolvprotoc.o: /usr/include/features.h /usr/include/sys/cdefs.h
+test_resolvprotoc.o: /usr/include/gnu/stubs.h /usr/include/bits/wchar.h
+test_resolvprotoc.o: /usr/include/bits/wordsize.h libtcp.h
+test_resolvprotoc.o: /usr/include/stdio.h /usr/include/bits/types.h
+test_resolvprotoc.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+test_resolvprotoc.o: /usr/include/_G_config.h /usr/include/wchar.h
+test_resolvprotoc.o: /usr/include/gconv.h /usr/include/bits/stdio_lim.h
+test_resolvprotoc.o: /usr/include/bits/sys_errlist.h /usr/include/stdlib.h
+test_resolvprotoc.o: /usr/include/sys/types.h /usr/include/time.h
+test_resolvprotoc.o: /usr/include/endian.h /usr/include/bits/endian.h
+test_resolvprotoc.o: /usr/include/sys/select.h /usr/include/bits/select.h
+test_resolvprotoc.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
+test_resolvprotoc.o: /usr/include/sys/sysmacros.h
+test_resolvprotoc.o: /usr/include/bits/pthreadtypes.h
+test_resolvprotoc.o: /usr/include/bits/sched.h /usr/include/alloca.h
+test_resolvprotoc.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
+test_resolvprotoc.o: /usr/include/bits/confname.h /usr/include/getopt.h
+test_resolvprotoc.o: /usr/include/signal.h /usr/include/bits/signum.h
+test_resolvprotoc.o: /usr/include/bits/siginfo.h
+test_resolvprotoc.o: /usr/include/bits/sigaction.h
+test_resolvprotoc.o: /usr/include/bits/sigcontext.h
+test_resolvprotoc.o: /usr/include/asm/sigcontext.h
+test_resolvprotoc.o: /usr/include/asm-i486/sigcontext.h
+test_resolvprotoc.o: /usr/include/linux/compiler.h
+test_resolvprotoc.o: /usr/include/bits/sigstack.h
+test_resolvprotoc.o: /usr/include/bits/sigthread.h /usr/include/sys/wait.h
+test_resolvprotoc.o: /usr/include/sys/resource.h /usr/include/bits/resource.h
+test_resolvprotoc.o: /usr/include/bits/waitflags.h
+test_resolvprotoc.o: /usr/include/bits/waitstatus.h /usr/include/string.h
+test_resolvprotoc.o: /usr/include/sys/socket.h /usr/include/sys/uio.h
+test_resolvprotoc.o: /usr/include/bits/uio.h /usr/include/bits/socket.h
+test_resolvprotoc.o: /usr/include/limits.h /usr/include/bits/posix1_lim.h
+test_resolvprotoc.o: /usr/include/bits/local_lim.h
+test_resolvprotoc.o: /usr/include/linux/limits.h
+test_resolvprotoc.o: /usr/include/bits/posix2_lim.h
+test_resolvprotoc.o: /usr/include/bits/sockaddr.h /usr/include/asm/socket.h
+test_resolvprotoc.o: /usr/include/asm-i486/socket.h
+test_resolvprotoc.o: /usr/include/asm/sockios.h
+test_resolvprotoc.o: /usr/include/asm-i486/sockios.h
+test_resolvprotoc.o: /usr/include/netinet/in.h /usr/include/bits/in.h
+test_resolvprotoc.o: /usr/include/bits/byteswap.h /usr/include/arpa/inet.h
+test_resolvprotoc.o: /usr/include/netdb.h /usr/include/rpc/netdb.h
+test_resolvprotoc.o: /usr/include/bits/netdb.h
+test_resolvprotos.o: resolvproto.h ipaddr.h /usr/include/stdint.h
+test_resolvprotos.o: /usr/include/features.h /usr/include/sys/cdefs.h
+test_resolvprotos.o: /usr/include/gnu/stubs.h /usr/include/bits/wchar.h
+test_resolvprotos.o: /usr/include/bits/wordsize.h libtcp.h
+test_resolvprotos.o: /usr/include/stdio.h /usr/include/bits/types.h
+test_resolvprotos.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+test_resolvprotos.o: /usr/include/_G_config.h /usr/include/wchar.h
+test_resolvprotos.o: /usr/include/gconv.h /usr/include/bits/stdio_lim.h
+test_resolvprotos.o: /usr/include/bits/sys_errlist.h /usr/include/stdlib.h
+test_resolvprotos.o: /usr/include/sys/types.h /usr/include/time.h
+test_resolvprotos.o: /usr/include/endian.h /usr/include/bits/endian.h
+test_resolvprotos.o: /usr/include/sys/select.h /usr/include/bits/select.h
+test_resolvprotos.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
+test_resolvprotos.o: /usr/include/sys/sysmacros.h
+test_resolvprotos.o: /usr/include/bits/pthreadtypes.h
+test_resolvprotos.o: /usr/include/bits/sched.h /usr/include/alloca.h
+test_resolvprotos.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
+test_resolvprotos.o: /usr/include/bits/confname.h /usr/include/getopt.h
+test_resolvprotos.o: /usr/include/signal.h /usr/include/bits/signum.h
+test_resolvprotos.o: /usr/include/bits/siginfo.h
+test_resolvprotos.o: /usr/include/bits/sigaction.h
+test_resolvprotos.o: /usr/include/bits/sigcontext.h
+test_resolvprotos.o: /usr/include/asm/sigcontext.h
+test_resolvprotos.o: /usr/include/asm-i486/sigcontext.h
+test_resolvprotos.o: /usr/include/linux/compiler.h
+test_resolvprotos.o: /usr/include/bits/sigstack.h
+test_resolvprotos.o: /usr/include/bits/sigthread.h /usr/include/sys/wait.h
+test_resolvprotos.o: /usr/include/sys/resource.h /usr/include/bits/resource.h
+test_resolvprotos.o: /usr/include/bits/waitflags.h
+test_resolvprotos.o: /usr/include/bits/waitstatus.h /usr/include/string.h
+test_resolvprotos.o: /usr/include/sys/socket.h /usr/include/sys/uio.h
+test_resolvprotos.o: /usr/include/bits/uio.h /usr/include/bits/socket.h
+test_resolvprotos.o: /usr/include/limits.h /usr/include/bits/posix1_lim.h
+test_resolvprotos.o: /usr/include/bits/local_lim.h
+test_resolvprotos.o: /usr/include/linux/limits.h
+test_resolvprotos.o: /usr/include/bits/posix2_lim.h
+test_resolvprotos.o: /usr/include/bits/sockaddr.h /usr/include/asm/socket.h
+test_resolvprotos.o: /usr/include/asm-i486/socket.h
+test_resolvprotos.o: /usr/include/asm/sockios.h
+test_resolvprotos.o: /usr/include/asm-i486/sockios.h
+test_resolvprotos.o: /usr/include/netinet/in.h /usr/include/bits/in.h
+test_resolvprotos.o: /usr/include/bits/byteswap.h /usr/include/arpa/inet.h
+test_resolvprotos.o: /usr/include/netdb.h /usr/include/rpc/netdb.h
+test_resolvprotos.o: /usr/include/bits/netdb.h
test_send.o: devque.h dev.h /usr/include/unistd.h /usr/include/features.h
test_send.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
test_send.o: /usr/include/bits/posix_opt.h /usr/include/bits/types.h
--- /dev/null
+#include "resolvproto.h"
+#include "libtcp.h"
+#include <cstdlib>
+#include <algorithm>
+#include <iterator>
+
+/// Constructor
+ResolvProtoRequest::ResolvProtoRequest(int fd)
+{
+ recv(fd);
+}
+
+/// Constructor
+ResolvProtoRequest::ResolvProtoRequest(std::string name, uint8_t type):
+ type(type), name(name)
+{}
+
+/// Envía por socket
+void ResolvProtoRequest::send(int sockfd) const
+ throw (std::runtime_error)
+{
+ if (libtcp_send(sockfd, &type, sizeof(uint8_t)) != sizeof(uint8_t))
+ throw std::runtime_error("Error al enviar type por socket");
+ uint16_t size = name.size();
+ if (libtcp_send(sockfd, &size, sizeof(uint16_t)) != sizeof(uint16_t))
+ throw std::runtime_error("Error al enviar size por socket");
+ if (libtcp_send(sockfd, name.c_str(), size) != size)
+ throw std::runtime_error("Error al enviar name por socket");
+}
+
+/// Recibe por socket
+void ResolvProtoRequest::recv(int sockfd)
+ throw (std::runtime_error)
+{
+ if (libtcp_receive_bin(sockfd, &type, sizeof(uint8_t)) != sizeof(uint8_t))
+ throw std::runtime_error("Error al recibir type por socket");
+ uint16_t size;
+ if (libtcp_receive_bin(sockfd, &size, sizeof(uint16_t)) != sizeof(uint16_t))
+ throw std::runtime_error("Error al recibir size por socket");
+ char* buf = (char*) malloc(size);
+ if (libtcp_receive_bin(sockfd, buf, size) != size)
+ {
+ free(buf);
+ throw std::runtime_error("Error al recibir name por socket");
+ }
+ name.assign(buf, size);
+ free(buf);
+}
+
+/// Impresión de request
+std::ostream& operator<< (std::ostream& os, const ResolvProtoRequest& rpr)
+{
+ return os << "ResolvProtoRequest(type=" << unsigned(rpr.type) << ", name="
+ << rpr.name << ")";
+}
+
+/// Constructor
+ResolvProtoResponse::ResolvProtoResponse(int fd)
+{
+ recv(fd);
+}
+
+/// Constructor
+ResolvProtoResponse::ResolvProtoResponse(ret_t ret):
+ ret(ret)
+{}
+
+/// Envía por socket
+void ResolvProtoResponse::send(int sockfd) const
+ throw (std::runtime_error)
+{
+ if (libtcp_send(sockfd, &ret, sizeof(uint8_t)) != sizeof(uint8_t))
+ throw std::runtime_error("Error al enviar ret por socket");
+ uint8_t count = ips.size();
+ if (libtcp_send(sockfd, &count, sizeof(uint8_t)) != sizeof(uint8_t))
+ throw std::runtime_error("Error al enviar count por socket");
+ for (ipvec_t::const_iterator i = ips.begin(); i != ips.end(); ++i)
+ {
+ uint32_t ip = *i;
+ if (libtcp_send(sockfd, &ip, sizeof(uint32_t)) != sizeof(uint32_t))
+ throw std::runtime_error("Error al enviar IPAddr por socket");
+ }
+}
+
+/// Recibe por socket
+void ResolvProtoResponse::recv(int sockfd)
+ throw (std::runtime_error)
+{
+ if (libtcp_receive_bin(sockfd, &ret, sizeof(uint8_t)) != sizeof(uint8_t))
+ throw std::runtime_error("Error al recibir ret por socket");
+ uint8_t count;
+ if (libtcp_send(sockfd, &count, sizeof(uint8_t)) != sizeof(uint8_t))
+ throw std::runtime_error("Error al recibir count por socket");
+ ips.clear();
+ ips.reserve(count);
+ for (uint8_t i = 0; i < count; ++i)
+ {
+ uint32_t ip;
+ if (libtcp_send(sockfd, &ip, sizeof(uint32_t)) != sizeof(uint32_t))
+ throw std::runtime_error("Error al recibir IPAddr por socket");
+ ips.push_back(ip);
+ }
+}
+
+/// Impresión de response
+std::ostream& operator<< (std::ostream& os, const ResolvProtoResponse& rpr)
+{
+ os << "ResolvProtoResponse(ret=" << unsigned(rpr.ret) << ", ";
+ std::copy(rpr.ips.begin(), rpr.ips.end(),
+ std::ostream_iterator< IPAddr >(os, ", "));
+ return os << ")";
+}
+
+// vim: set et sw=4 sts=4 :