From e51bb90d354881ef3bdf6fa98c1270e3710221dd Mon Sep 17 00:00:00 2001 From: Craig Small Date: Thu, 3 May 2001 02:05:20 +0000 Subject: fixed sockaddr problem and moved b* to mem* functions --- tcpip/Makefile | 457 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ tcpip/rip98d.c | 12 +- tcpip/rip98r.c | 18 +-- tcpip/rip98t.c | 4 +- tcpip/ttylinkd.c | 43 +++--- 5 files changed, 498 insertions(+), 36 deletions(-) create mode 100644 tcpip/Makefile diff --git a/tcpip/Makefile b/tcpip/Makefile new file mode 100644 index 0000000..19fee17 --- /dev/null +++ b/tcpip/Makefile @@ -0,0 +1,457 @@ +# Generated automatically from Makefile.in by configure. +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/ax25-tools +pkglibdir = $(libdir)/ax25-tools +pkgincludedir = $(includedir)/ax25-tools + +top_builddir = .. + +ACLOCAL = aclocal +AUTOCONF = autoconf +AUTOMAKE = automake +AUTOHEADER = autoheader + +INSTALL = /usr/bin/install -c +INSTALL_PROGRAM = ${INSTALL} $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_SCRIPT = ${INSTALL_PROGRAM} +transform = s,x,x, + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +AWK = mawk +AX25IO_LIB = +AX25_LIB = -lax25 +CC = gcc +CXX = c++ +DMASCC = +FLTK_LIB = -lfltk -lGL -lSM -lICE -lXi -lXext -lX11 +MAKEINFO = /home/csmall/ax25/ax25-tools/missing makeinfo +NCURSES_LIB = -lncurses +PACKAGE = ax25-tools +UTIL_LIB = -lutil +VERSION = 0.0.8cvs +Z_LIB = -lz + +etcfiles = rip98d.conf ttylinkd.conf + +sbin_PROGRAMS = rip98d ttylinkd + +man_MANS = rip98d.conf.5 rip98d.8 ttylinkd.conf.5 ttylinkd.8 + +docdir = ${datadir}/doc/ax25-tools +doc_DATA = ttylinkd.README ttylinkd.INSTALL + +EXTRA_DIST = $(man_MANS) $(etcfiles) $(doc_DATA) + +rip98d_SOURCES = rip98d.c rip98r.c rip98t.c rip98d.h + + +rip98d_LDADD = $(AX25_LIB) + +INCLUDES = -DAX25_SYSCONFDIR=\""$(AX25_SYSCONFDIR)"\" -DAX25_LOCALSTATEDIR=\""$(AX25_LOCALSTATEDIR)"\" + + +AX25_SYSCONFDIR = ${sysconfdir}/ax25/ +AX25_LOCALSTATEDIR = ${localstatedir}/ax25/ +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = ../config.h +CONFIG_CLEAN_FILES = +PROGRAMS = $(sbin_PROGRAMS) + + +DEFS = -DHAVE_CONFIG_H -I. -I$(srcdir) -I.. +CPPFLAGS = +LDFLAGS = +LIBS = +X_CFLAGS = -I/usr/X11R6/include +X_LIBS = -L/usr/X11R6/lib +X_EXTRA_LIBS = +X_PRE_LIBS = -lSM -lICE +rip98d_OBJECTS = rip98d.o rip98r.o rip98t.o +rip98d_DEPENDENCIES = +rip98d_LDFLAGS = +ttylinkd_SOURCES = ttylinkd.c +ttylinkd_OBJECTS = ttylinkd.o +ttylinkd_LDADD = $(LDADD) +ttylinkd_DEPENDENCIES = +ttylinkd_LDFLAGS = +CFLAGS = -g -O2 -Wall +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ +man5dir = $(mandir)/man5 +man8dir = $(mandir)/man8 +MANS = $(man_MANS) + +NROFF = nroff +DATA = $(doc_DATA) + +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP_ENV = --best +DEP_FILES = .deps/rip98d.P .deps/rip98r.P .deps/rip98t.P \ +.deps/ttylinkd.P +SOURCES = $(rip98d_SOURCES) ttylinkd.c +OBJECTS = $(rip98d_OBJECTS) ttylinkd.o + +all: all-redirect +.SUFFIXES: +.SUFFIXES: .S .c .o .s +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu tcpip/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + + +mostlyclean-sbinPROGRAMS: + +clean-sbinPROGRAMS: + -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS) + +distclean-sbinPROGRAMS: + +maintainer-clean-sbinPROGRAMS: + +install-sbinPROGRAMS: $(sbin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(sbindir) + @list='$(sbin_PROGRAMS)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ + $(INSTALL_PROGRAM) $$p $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + else :; fi; \ + done + +uninstall-sbinPROGRAMS: + @$(NORMAL_UNINSTALL) + list='$(sbin_PROGRAMS)'; for p in $$list; do \ + rm -f $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + done + +.s.o: + $(COMPILE) -c $< + +.S.o: + $(COMPILE) -c $< + +mostlyclean-compile: + -rm -f *.o core *.core + +clean-compile: + +distclean-compile: + -rm -f *.tab.c + +maintainer-clean-compile: + +rip98d: $(rip98d_OBJECTS) $(rip98d_DEPENDENCIES) + @rm -f rip98d + $(LINK) $(rip98d_LDFLAGS) $(rip98d_OBJECTS) $(rip98d_LDADD) $(LIBS) + +ttylinkd: $(ttylinkd_OBJECTS) $(ttylinkd_DEPENDENCIES) + @rm -f ttylinkd + $(LINK) $(ttylinkd_LDFLAGS) $(ttylinkd_OBJECTS) $(ttylinkd_LDADD) $(LIBS) + +install-man5: + $(mkinstalldirs) $(DESTDIR)$(man5dir) + @list='$(man5_MANS)'; \ + l2='$(man_MANS)'; for i in $$l2; do \ + case "$$i" in \ + *.5*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man5dir)/$$inst"; \ + $(INSTALL_DATA) $$file $(DESTDIR)$(man5dir)/$$inst; \ + done + +uninstall-man5: + @list='$(man5_MANS)'; \ + l2='$(man_MANS)'; for i in $$l2; do \ + case "$$i" in \ + *.5*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f $(DESTDIR)$(man5dir)/$$inst"; \ + rm -f $(DESTDIR)$(man5dir)/$$inst; \ + done + +install-man8: + $(mkinstalldirs) $(DESTDIR)$(man8dir) + @list='$(man8_MANS)'; \ + l2='$(man_MANS)'; for i in $$l2; do \ + case "$$i" in \ + *.8*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst"; \ + $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst; \ + done + +uninstall-man8: + @list='$(man8_MANS)'; \ + l2='$(man_MANS)'; for i in $$l2; do \ + case "$$i" in \ + *.8*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f $(DESTDIR)$(man8dir)/$$inst"; \ + rm -f $(DESTDIR)$(man8dir)/$$inst; \ + done +install-man: $(MANS) + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-man5 install-man8 +uninstall-man: + @$(NORMAL_UNINSTALL) + $(MAKE) $(AM_MAKEFLAGS) uninstall-man5 uninstall-man8 + +install-docDATA: $(doc_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(docdir) + @list='$(doc_DATA)'; for p in $$list; do \ + if test -f $(srcdir)/$$p; then \ + echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(docdir)/$$p"; \ + $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(docdir)/$$p; \ + else if test -f $$p; then \ + echo " $(INSTALL_DATA) $$p $(DESTDIR)$(docdir)/$$p"; \ + $(INSTALL_DATA) $$p $(DESTDIR)$(docdir)/$$p; \ + fi; fi; \ + done + +uninstall-docDATA: + @$(NORMAL_UNINSTALL) + list='$(doc_DATA)'; for p in $$list; do \ + rm -f $(DESTDIR)$(docdir)/$$p; \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = tcpip + +distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + distdir=`cd $(distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu tcpip/Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + -rm -rf .deps + +maintainer-clean-depend: + +%.o: %.c + @echo '$(COMPILE) -c $<'; \ + $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-cp .deps/$(*F).pp .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm .deps/$(*F).pp + +%.lo: %.c + @echo '$(LTCOMPILE) -c $<'; \ + $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ + < .deps/$(*F).pp > .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm -f .deps/$(*F).pp +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: install-sbinPROGRAMS +install-exec: install-exec-am + +install-data-am: install-man install-docDATA +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: uninstall-sbinPROGRAMS uninstall-man uninstall-docDATA +uninstall: uninstall-am +all-am: Makefile $(PROGRAMS) $(MANS) $(DATA) +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + $(mkinstalldirs) $(DESTDIR)$(sbindir) $(DESTDIR)$(mandir)/man5 \ + $(DESTDIR)$(mandir)/man8 $(DESTDIR)$(docdir) + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-sbinPROGRAMS mostlyclean-compile \ + mostlyclean-tags mostlyclean-depend mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-sbinPROGRAMS clean-compile clean-tags clean-depend \ + clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-sbinPROGRAMS distclean-compile distclean-tags \ + distclean-depend distclean-generic clean-am + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-sbinPROGRAMS \ + maintainer-clean-compile maintainer-clean-tags \ + maintainer-clean-depend maintainer-clean-generic \ + distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: mostlyclean-sbinPROGRAMS distclean-sbinPROGRAMS \ +clean-sbinPROGRAMS maintainer-clean-sbinPROGRAMS uninstall-sbinPROGRAMS \ +install-sbinPROGRAMS mostlyclean-compile distclean-compile \ +clean-compile maintainer-clean-compile install-man5 uninstall-man5 \ +install-man8 uninstall-man8 install-man uninstall-man uninstall-docDATA \ +install-docDATA tags mostlyclean-tags distclean-tags clean-tags \ +maintainer-clean-tags distdir mostlyclean-depend distclean-depend \ +clean-depend maintainer-clean-depend info-am info dvi-am dvi check \ +check-am installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + +installconf: + $(mkinstalldirs) $(DESTDIR)$(AX25_SYSCONFDIR) + @list='$(etcfiles)'; for p in $$list; do \ + echo " $(INSTALL_DATA) $$p $(DESTDIR)$(AX25_SYSCONFDIR)/$$p"; \ + $(INSTALL_DATA) $$p $(DESTDIR)$(AX25_SYSCONFDIR)/$$p; \ + done + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/tcpip/rip98d.c b/tcpip/rip98d.c index 78851cd..9fffab6 100644 --- a/tcpip/rip98d.c +++ b/tcpip/rip98d.c @@ -1,3 +1,8 @@ + +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include #include @@ -5,10 +10,10 @@ #include #include #include +#include #include #include -#include #include #include @@ -18,7 +23,6 @@ #include -#include #include "../pathnames.h" #include "rip98d.h" @@ -246,7 +250,7 @@ static int load_dests(void) return FALSE; } - bcopy(host->h_addr, (char *)&dest_list[dest_count].dest_addr, host->h_length); + memcpy((char *)&dest_list[dest_count].dest_addr, host->h_addr, host->h_length); dest_count++; } @@ -309,7 +313,7 @@ int main(int argc, char **argv) return 1; } - bzero((char *)&loc_addr, sizeof(loc_addr)); + memset((char *)&loc_addr, 0, sizeof(loc_addr)); loc_addr.sin_family = AF_INET; loc_addr.sin_addr.s_addr = htonl(INADDR_ANY); loc_addr.sin_port = htons(RIP_PORT); diff --git a/tcpip/rip98r.c b/tcpip/rip98r.c index 765e786..25cb546 100644 --- a/tcpip/rip98r.c +++ b/tcpip/rip98r.c @@ -115,7 +115,7 @@ void receive_routes(int s) syslog(LOG_DEBUG, "RIP98 message received from %s\n", inet_ntoa(rem_addr.sin_addr)); for (p = message + RIP98_HEADER; p < message + mess_len; p += RIP98_ENTRY) { - bcopy((char *)p, (char *)&addr, sizeof(addr)); + memcpy((char *)&addr, (char *)p, sizeof(addr)); bits = p[4]; metric = p[5]; @@ -203,12 +203,12 @@ void receive_routes(int s) for (route = first_route; route != NULL; route = route->next) { if (route->action == DEL_ROUTE) { - bzero((char *)&rt, sizeof(rt)); + memset((char *)&rt, 0, sizeof(rt)); trg.sin_family = AF_INET; trg.sin_addr = route->addr; trg.sin_port = 0; - bcopy((char *)&trg, (char *)&rt.rt_dst, sizeof(struct sockaddr)); + memcpy((char *)&rt.rt_dst, (char *)&trg, sizeof(struct sockaddr)); if (ioctl(s, SIOCDELRT, &rt) < 0) { if (logging) @@ -219,12 +219,12 @@ void receive_routes(int s) for (route = first_route; route != NULL; route = route->next) { if (route->action == NEW_ROUTE) { - bzero((char *)&rt, sizeof(rt)); + memset((char *)&rt, 0, sizeof(rt)); trg.sin_family = AF_INET; trg.sin_addr = route->addr; trg.sin_port = 0; - bcopy((char *)&trg, (char *)&rt.rt_dst, sizeof(struct sockaddr)); + memcpy((char *)&rt.rt_dst, (char *)&trg, sizeof(struct sockaddr)); rt.rt_flags = RTF_UP | RTF_GATEWAY | RTF_DYNAMIC; @@ -234,17 +234,17 @@ void receive_routes(int s) netmask = bits2mask(route->bits); trg.sin_family = AF_INET; - bcopy((char *)&netmask, (char *)&trg.sin_addr, sizeof(struct in_addr)); + memcpy((char *)&trg.sin_addr, (char *)&netmask, sizeof(struct in_addr)); trg.sin_port = 0; - bcopy((char *)&trg, (char *)&rt.rt_genmask, sizeof(struct sockaddr)); + memcpy((char *)&rt.rt_genmask, (char *)&trg, sizeof(struct sockaddr)); } - rt.rt_metric = route->metric; + rt.rt_metric = route->metric + 1; trg.sin_family = AF_INET; trg.sin_addr = rem_addr.sin_addr; trg.sin_port = 0; - bcopy((char *)&trg, (char *)&rt.rt_gateway, sizeof(struct sockaddr)); + memcpy((char *)&rt.rt_gateway, (char *)&trg, sizeof(struct sockaddr)); if (ioctl(s, SIOCADDRT, &rt) < 0) { if (logging) diff --git a/tcpip/rip98t.c b/tcpip/rip98t.c index c227fc4..2441c49 100644 --- a/tcpip/rip98t.c +++ b/tcpip/rip98t.c @@ -42,7 +42,7 @@ void transmit_routes(int s) if (debug && logging) syslog(LOG_DEBUG, "transmit_routes: sending routing message to %s\n", inet_ntoa(dest_list[i].dest_addr)); - bzero((char *)&rem_addr, sizeof(rem_addr)); + memset((char *)&rem_addr, 0, sizeof(rem_addr)); rem_addr.sin_family = AF_INET; rem_addr.sin_addr = dest_list[i].dest_addr; rem_addr.sin_port = htons(RIP_PORT); @@ -55,7 +55,7 @@ void transmit_routes(int s) while (mess_len < 184 && route != NULL) { if (route->action != DEL_ROUTE) { - bcopy((char *)&route->addr, message + mess_len + 0, sizeof(struct in_addr)); + memcpy(message + mess_len + 0, (char *)&route->addr, sizeof(struct in_addr)); message[mess_len + 4] = route->bits; message[mess_len + 5] = route->metric; diff --git a/tcpip/ttylinkd.c b/tcpip/ttylinkd.c index 69642c5..032a5bd 100644 --- a/tcpip/ttylinkd.c +++ b/tcpip/ttylinkd.c @@ -38,7 +38,6 @@ #include -#define osockaddr sockaddr #include #include @@ -104,7 +103,7 @@ static char *Responses[] = { int main(int argc, char *argv[]) { - struct sockaddr_in sin, ctl_sin; + struct sockaddr_in ctl_sin; struct in_addr my_addr, rem_addr; int ctl_skt, skt, new_skt; int length; @@ -116,9 +115,9 @@ int main(int argc, char *argv[]) int local_id, remote_id; char buf[256]; char user[NAME_SIZE]; - struct sockaddr sa; + struct sockaddr sa, msg_sa; int sa_len, i; - struct sockaddr_in *peer_sin=NULL; + struct sockaddr_in *peer_sin=NULL, *msg_sin; struct sockaddr_ax25 *peer_sax; struct sockaddr_rose *peer_srose; @@ -129,7 +128,7 @@ int main(int argc, char *argv[]) /* Work out who is calling us */ userfamily = AF_UNSPEC; - bzero(user, NAME_SIZE); + memset(user, 0, NAME_SIZE); strcpy(sysop_addr, SYSOP_USER); strcpy(config_file, CONF_TTYLINKD_FILE); for(i=1 ; i < argc ; i++) @@ -260,7 +259,7 @@ int main(int argc, char *argv[]) exit(1); } } - bcopy(rhe->h_addr, (char*)&rem_addr, rhe->h_length); + memcpy((char*)&rem_addr, rhe->h_addr, rhe->h_length); /* Get our local address */ if ((phe = gethostbyname(hostname)) == NULL) @@ -268,14 +267,15 @@ int main(int argc, char *argv[]) syslog(LOG_DAEMON | LOG_CRIT, "main(): gethostbyname failed."); exit(1); } - bcopy(phe->h_addr, (char*)&my_addr, phe->h_length); + memcpy((char*)&my_addr, phe->h_addr, phe->h_length); /* Create local data socket */ - bzero((char*)&sin, sizeof(sin)); + memset((char*)&msg_sa, 0, sizeof(msg_sa)); - sin.sin_family = AF_INET; - sin.sin_port = htons(0); - bcopy(phe->h_addr, (char*)&sin.sin_addr, phe->h_length); + msg_sa.sa_family = AF_INET; + msg_sin = (struct sockaddr_in*)&msg_sa; + msg_sin->sin_port = htons(0); + memcpy((char*)&(msg_sin->sin_addr), phe->h_addr, phe->h_length); if ((skt = socket(PF_INET, SOCK_STREAM, 0)) < 0) { @@ -283,24 +283,24 @@ int main(int argc, char *argv[]) exit(1); } - if (bind( skt, (struct sockaddr*)&sin, sizeof(sin)) != 0) + if (bind( skt, &msg_sa, sizeof(msg_sa)) != 0) { syslog(LOG_DAEMON | LOG_CRIT, "main(): bind() failed."); exit(1); } - length = sizeof(sin); - if (getsockname(skt, (struct sockaddr*)&sin, &length) < 0) + length = sizeof(msg_sa); + if (getsockname(skt, &msg_sa, &length) < 0) { syslog(LOG_DAEMON | LOG_CRIT, "main(): getsockname() failed."); exit(1); } /* Create local control socket */ - bzero((char*)&ctl_sin, sizeof(ctl_sin)); + memset((char*)&ctl_sin, 0, sizeof(ctl_sin)); ctl_sin.sin_family = AF_INET; - bcopy(phe->h_addr, (char*)&ctl_sin.sin_addr, phe->h_length); + memcpy((char*)&ctl_sin.sin_addr, phe->h_addr, phe->h_length); ctl_sin.sin_port = htons(0); if ((ctl_skt = socket(PF_INET, SOCK_DGRAM, 0)) < 0) @@ -327,12 +327,13 @@ int main(int argc, char *argv[]) } /* Start talking to the talk daemon */ - bzero((char*)&msg, sizeof(msg)); + memset((char*)&msg, 0, sizeof(msg)); msg.vers = TALK_VERSION; msg.id_num = htonl(0); msg.addr.sa_family = ntohs(AF_INET); - msg.ctl_addr = *(struct sockaddr*)&ctl_sin; - msg.ctl_addr = *(struct sockaddr*)&ctl_sin; + memcpy(&(msg.ctl_addr), &msg_sa, sizeof(struct osockaddr)); + /*msg.ctl_addr = *(struct sockaddr*)&ctl_sin; + msg.ctl_addr = *(struct sockaddr*)&ctl_sin;*/ msg.ctl_addr.sa_family = ntohs(AF_INET); msg.pid = htonl(getpid()); strncpy(msg.l_name, user, NAME_SIZE-1); @@ -345,7 +346,7 @@ int main(int argc, char *argv[]) /* The person not there? Send an announce and wake him up */ msg.type = ANNOUNCE; - msg.addr = *(struct sockaddr*)&sin; + memcpy((char*)&(msg.addr), (char*)&msg_sa, sizeof(struct osockaddr)); msg.addr.sa_family = htons(AF_INET); msg.id_num = -1; i = send_control(ctl_skt, rem_addr, msg, &resp); @@ -495,7 +496,7 @@ int send_control(int skt, struct in_addr addr, CTL_MSG msg, CTL_RESPONSE *resp) } /* Create the socket address */ - bzero((char*)&sin, sizeof(sin)); + memset((char*)&sin, 0, sizeof(sin)); sin.sin_addr = addr; sin.sin_family = AF_INET; sin.sin_port = talk_port; -- cgit v1.2.3