3 This code is not copyright, and is placed in the public domain. Feel free to
4 use and modify. Please send modifications and/or suggestions + bug fixes to
6 Klas Heggemann <klas@nada.kth.se>
11 * $FreeBSD: src/usr.sbin/bootparamd/bootparamd/main.c,v 1.9 1999/08/28 01:15:39 peter Exp $
12 * $DragonFly: src/usr.sbin/bootparamd/bootparamd/main.c,v 1.2 2003/06/17 04:29:52 dillon Exp $
23 #include <rpc/pmap_clnt.h>
24 #include <sys/ioctl.h>
25 #include <sys/socket.h>
27 #include <sys/types.h>
28 #include <netinet/in.h>
29 #include <arpa/inet.h>
30 #include "bootparam_prot.h"
34 unsigned long route_addr = -1;
35 struct sockaddr_in my_addr;
36 char *bootpfile = "/etc/bootparams";
38 extern void bootparamprog_1();
39 static void usage __P((void));
52 while ((c = getopt(argc, argv,"dsr:f:")) != -1)
58 if ( isdigit( *optarg)) {
59 route_addr = inet_addr(optarg);
62 he = gethostbyname(optarg);
64 bcopy(he->h_addr, (char *)&route_addr, sizeof(route_addr));
67 errx(1, "no such host %s", argv[i]);
76 openlog("bootparamd", 0 , 0);
78 openlog("bootparamd", 0 , LOG_DAEMON);
79 setlogmask(LOG_UPTO(LOG_NOTICE));
86 if ( stat(bootpfile, &buf ) )
87 err(1, "%s", bootpfile);
89 if (route_addr == -1) {
90 get_myaddress(&my_addr);
91 bcopy(&my_addr.sin_addr.s_addr, &route_addr, sizeof (route_addr));
100 (void)pmap_unset(BOOTPARAMPROG, BOOTPARAMVERS);
102 transp = svcudp_create(RPC_ANYSOCK);
104 errx(1, "cannot create udp service");
105 if (!svc_register(transp, BOOTPARAMPROG, BOOTPARAMVERS, bootparamprog_1, IPPROTO_UDP))
106 errx(1, "unable to register (BOOTPARAMPROG, BOOTPARAMVERS, udp)");
109 errx(1, "svc_run returned");
116 "usage: bootparamd [-d] [-s] [-r router] [-f bootparmsfile]\n");