mirror of
https://git.hardenedbsd.org/hardenedbsd/HardenedBSD.git
synced 2024-11-22 11:14:18 +01:00
Add 'netserver' command to EFI loader.
In some environments is difficult to access bootp/dhcp configuration as "standard user". Add a command that allows to set or display the URI of the network server used as "net:" device. Currently only tftp and nfs protocols are supported. Typical usage pattern is: netserver tftp://192.168.168.1/path_to_obj_dir/arm.armv7/sys/GENERIC/ boot net:kernel Reviewed by: imp, kevans MFC after: 4 weeks Differential Revision: https://reviews.freebsd.org/D26736
This commit is contained in:
parent
a525283161
commit
5b5438c6f3
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=366700
@ -40,10 +40,14 @@ __FBSDID("$FreeBSD$");
|
||||
#include <sys/zfs_bootenv.h>
|
||||
#endif
|
||||
#include <paths.h>
|
||||
#include <netinet/in.h>
|
||||
#include <netinet/in_systm.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <setjmp.h>
|
||||
#include <disk.h>
|
||||
#include <dev_net.h>
|
||||
#include <net.h>
|
||||
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
@ -1594,3 +1598,34 @@ command_chain(int argc, char *argv[])
|
||||
}
|
||||
|
||||
COMMAND_SET(chain, "chain", "chain load file", command_chain);
|
||||
|
||||
extern struct in_addr servip;
|
||||
static int
|
||||
command_netserver(int argc, char *argv[])
|
||||
{
|
||||
char *proto;
|
||||
n_long rootaddr;
|
||||
|
||||
if (argc > 2) {
|
||||
command_errmsg = "wrong number of arguments";
|
||||
return (CMD_ERROR);
|
||||
}
|
||||
if (argc < 2) {
|
||||
proto = netproto == NET_TFTP ? "tftp://" : "nfs://";
|
||||
printf("Netserver URI: %s%s%s\n", proto, intoa(rootip.s_addr),
|
||||
rootpath);
|
||||
return (CMD_OK);
|
||||
}
|
||||
if (argc == 2) {
|
||||
strncpy(rootpath, argv[1], sizeof(rootpath));
|
||||
rootpath[sizeof(rootpath) -1] = '\0';
|
||||
if ((rootaddr = net_parse_rootpath()) != INADDR_NONE)
|
||||
servip.s_addr = rootip.s_addr = rootaddr;
|
||||
return (CMD_OK);
|
||||
}
|
||||
return (CMD_ERROR); /* not reached */
|
||||
|
||||
}
|
||||
|
||||
COMMAND_SET(netserver, "netserver", "change or display netserver URI",
|
||||
command_netserver);
|
||||
|
Loading…
Reference in New Issue
Block a user