2296a43f57457dc3d28e2374ced503fb0800e748
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.5 2004/12/18 22:48:02 swildner 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(void);
42 main(int argc
, char **argv
)
50 while ((c
= getopt(argc
, argv
,"dsr:f:")) != -1)
56 if ( isdigit( *optarg
)) {
57 route_addr
= inet_addr(optarg
);
60 he
= gethostbyname(optarg
);
62 bcopy(he
->h_addr
, (char *)&route_addr
, sizeof(route_addr
));
65 errx(1, "no such host %s", argv
[i
]);
74 openlog("bootparamd", 0 , 0);
76 openlog("bootparamd", 0 , LOG_DAEMON
);
77 setlogmask(LOG_UPTO(LOG_NOTICE
));
84 if ( stat(bootpfile
, &buf
) )
85 err(1, "%s", bootpfile
);
87 if (route_addr
== -1) {
88 get_myaddress(&my_addr
);
89 bcopy(&my_addr
.sin_addr
.s_addr
, &route_addr
, sizeof (route_addr
));
98 pmap_unset(BOOTPARAMPROG
, BOOTPARAMVERS
);
100 transp
= svcudp_create(RPC_ANYSOCK
);
102 errx(1, "cannot create udp service");
103 if (!svc_register(transp
, BOOTPARAMPROG
, BOOTPARAMVERS
, bootparamprog_1
, IPPROTO_UDP
))
104 errx(1, "unable to register (BOOTPARAMPROG, BOOTPARAMVERS, udp)");
107 errx(1, "svc_run returned");
114 "usage: bootparamd [-d] [-s] [-r router] [-f bootparmsfile]\n");