summary |
tags |
clone url |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
2019410)
SCCS-vsn: usr.bin/tftp/main.c 4.2
SCCS-vsn: libexec/tftpd/tftpd.c 4.3
-/* tftpd.c 4.2 82/08/19 */
+/* tftpd.c 4.3 82/10/08 */
/*
* Trivial file transfer protocol server.
/*
* Trivial file transfer protocol server.
#include <wait.h>
#include <errno.h>
#include <ctype.h>
#include <wait.h>
#include <errno.h>
#include <ctype.h>
#include "tftp.h"
extern int errno;
#include "tftp.h"
extern int errno;
-struct sockaddr_in sin = { AF_INET, IPPORT_TFTP };
+struct sockaddr_in sin = { AF_INET };
int f;
int options;
char buf[BUFSIZ];
int f;
int options;
char buf[BUFSIZ];
struct sockaddr_in from;
register struct tftphdr *tp;
register int n;
struct sockaddr_in from;
register struct tftphdr *tp;
register int n;
+ sp = getservbyname("tftp", "udp");
+ if (sp == 0) {
+ fprintf(stderr, "tftpd: udp/tftp: unknown service\n");
+ exit(1);
+ }
+ sin.sin_port = htons(sp->s_port);
#ifndef DEBUG
if (fork())
exit(0);
#ifndef DEBUG
if (fork())
exit(0);
-#endif
-#if vax || pdp11
- sin.sin_port = htons(sin.sin_port);
#endif
argc--, argv++;
if (argc > 0 && !strcmp(argv[0], "-d"))
#endif
argc--, argv++;
if (argc > 0 && !strcmp(argv[0], "-d"))
-/* main.c 4.1 82/08/16 */
+/* main.c 4.2 82/10/08 */
/*
* TFTP User Program -- Command Interface.
/*
* TFTP User Program -- Command Interface.
#include <errno.h>
#include <setjmp.h>
#include <ctype.h>
#include <errno.h>
#include <setjmp.h>
#include <ctype.h>
-struct sockaddr_in sin = { AF_INET, IPPORT_TFTP };
+struct sockaddr_in sin = { AF_INET };
int f;
int options;
int trace;
int f;
int options;
int trace;
char *prompt = "tftp";
jmp_buf toplevel;
int intr();
char *prompt = "tftp";
jmp_buf toplevel;
int intr();
int quit(), help(), setverbose(), settrace(), status();
int get(), put(), setpeer(), setmode();
int quit(), help(), setverbose(), settrace(), status();
int get(), put(), setpeer(), setmode();
main(argc, argv)
char *argv[];
{
main(argc, argv)
char *argv[];
{
- register struct requestpkt *tp;
- register int n;
-
+ sp = getservbyname("tftp", "udp");
+ if (sp == 0) {
+ fprintf(stderr, "tftp: udp/tftp: unknown service\n");
+ exit(1);
+ }
+ sin.sin_port = htons(sp->s_port);
if (argc > 1 && !strcmp(argv[1], "-d")) {
options |= SO_DEBUG;
argc--, argv++;
if (argc > 1 && !strcmp(argv[1], "-d")) {
options |= SO_DEBUG;
argc--, argv++;
perror("socket");
exit(3);
}
perror("socket");
exit(3);
}
-#if vax || pdp11
- sin.sin_port = htons(sin.sin_port);
-#endif
strcpy(mode, "netascii");
if (argc > 1) {
if (setjmp(toplevel) != 0)
strcpy(mode, "netascii");
if (argc > 1) {
if (setjmp(toplevel) != 0)
+char *hostname;
+char hnamebuf[32];
setpeer(argc, argv)
int argc;
char *argv[];
{
register int c;
setpeer(argc, argv)
int argc;
char *argv[];
{
register int c;
if (argc < 2) {
strcpy(line, "Connect ");
if (argc < 2) {
strcpy(line, "Connect ");
printf("usage: %s host-name [port]\n", argv[0]);
return;
}
printf("usage: %s host-name [port]\n", argv[0]);
return;
}
- sin.sin_addr.s_addr = rhost(&argv[1]);
- if (sin.sin_addr.s_addr == (u_long)-1) {
- printf("%s: unknown host\n", argv[1]);
- connected = 0;
- return;
+ host = gethostbyname(argv[1]);
+ if (host) {
+ bcopy(host->h_addr, &sin.sin_addr, host->h_length);
+ hostname = host->h_name;
+ } else {
+ sin.sin_addr.s_addr = inet_addr(argv[1]);
+ if (sin.sin_addr.s_addr == -1) {
+ connected = 0;
+ printf("%s: unknown host\n", argv[1]);
+ return;
+ }
+ strcpy(hnamebuf, argv[1]);
+ hostname = hnamebuf;
+ sin.sin_port = sp->s_port;
if (argc == 3) {
sin.sin_port = atoi(argv[2]);
if (sin.sin_port < 0) {
if (argc == 3) {
sin.sin_port = atoi(argv[2]);
if (sin.sin_port < 0) {
- sin.sin_port = htons(sin.sin_port);
+ sin.sin_port = htons(sin.sin_port);
- }
- strcpy(host_name, argv[1]);
}
targ = argv[argc - 1];
if (index(argv[argc - 1], ':')) {
}
targ = argv[argc - 1];
if (index(argv[argc - 1], ':')) {
+ char *cp;
+ struct hostent *hp;
for (n = 1; n < argc - 1; n++)
if (index(argv[n], ':')) {
putusage(argv[0]);
return;
}
for (n = 1; n < argc - 1; n++)
if (index(argv[n], ':')) {
putusage(argv[0]);
return;
}
- hostname = argv[argc - 1];
- targ = index(hostname, ':');
+ cp = argv[argc - 1];
+ targ = index(cp, ':');
- addr = rhost(&hostname);
- if (addr == -1) {
- printf("%s: Unknown host.\n", hostname);
+ hp = gethostbyname(cp);
+ if (hp == 0) {
+ printf("%s: Unknown host.\n", cp);
- sin.sin_addr.s_addr = addr;
+ bcopy(hp->h_addr, &sin.sin_addr, hp->h_length);
+ sin.sin_family = hp->h_addrtype;
- strcpy(host_name, hostname);
}
if (!connected) {
printf("No target machine specified.\n");
}
if (!connected) {
printf("No target machine specified.\n");
if (src == NULL)
src = argv[n];
else {
if (src == NULL)
src = argv[n];
else {
- addr = rhost(&argv[n]);
- if (addr == -1) {
+ hp = gethostbyname(argv[n]);
+ if (hp == 0) {
printf("%s: Unknown host.\n", argv[n]);
continue;
}
printf("%s: Unknown host.\n", argv[n]);
continue;
}
- sin.sin_addr.s_addr = addr;
+ bcopy(hp->h_addr, &sin.sin_addr, hp->h_length);
+ sin.sin_family = hp->h_addrtype;
- strcpy(host_name, argv[n]);
}
if (argc < 4) {
cp = argc == 3 ? argv[2] : tail(src);
}
if (argc < 4) {
cp = argc == 3 ? argv[2] : tail(src);
char *argv[];
{
if (connected)
char *argv[];
{
if (connected)
- printf("Connected to %s.\n", host_name);
+ printf("Connected to %s.\n", hostname);
else
printf("Not connected.\n");
printf("Mode: %s Verbose: %s Tracing: %s\n", mode,
else
printf("Not connected.\n");
printf("Mode: %s Verbose: %s Tracing: %s\n", mode,
verbose = !verbose;
printf("Verbose mode %s.\n", verbose ? "on" : "off");
}
verbose = !verbose;
printf("Verbose mode %s.\n", verbose ? "on" : "off");
}