fprintf(fp,
"Usage: nmrpflash [OPTIONS...]\n"
"\n"
- "Options (-a, -i and -f and/or -c are mandatory):\n"
+ "Options (-i, -f and/or -c are mandatory):\n"
" -a <ipaddr> IP address to assign to target device\n"
+ " -A <ipaddr> IP address to assign to seleted interface\n"
" -c <command> Command to run before (or instead of) TFTP upload\n"
" -f <firmware> Firmware file\n"
" -F <filename> Remote filename to use during TFTP upload\n"
#endif
")\n\n"
#ifndef NMRPFLASH_WINDOWS
- "# nmrpflash -i eth0 -a 192.168.1.254 -f firmware.bin\n"
+ "# nmrpflash -i eth0 -f firmware.bin\n"
#else
- "C:\\> nmrpflash.exe -i net0 -a 192.168.1.254 -f firmware.bin\n"
+ "C:\\> nmrpflash.exe -i net0 -f firmware.bin\n"
#endif
+ "\n"
+ "When using -c, the environment variables IP, PORT, NETMASK\n"
+ "and MAC are set to the device IP address, TFTP port, subnet\n"
+ "mask and MAC address, respectively.\n"
"\n"
"nmrpflash %s, Copyright (C) 2016 Joseph C. Lehner\n"
"nmrpflash is free software, licensed under the GNU GPLv3.\n"
.tftpcmd = NULL,
.file_local = NULL,
.file_remote = NULL,
+ .ipaddr_intf = NULL,
.ipaddr = NULL,
.ipmask = "255.255.255.0",
.intf = NULL,
opterr = 0;
- while ((c = getopt(argc, argv, "a:c:f:F:i:m:M:p:R:t:T:hLVvU")) != -1) {
+ while ((c = getopt(argc, argv, "a:A:c:f:F:i:m:M:p:R:t:T:hLVvU")) != -1) {
max = 0x7fffffff;
switch (c) {
case 'a':
args.ipaddr = optarg;
break;
+ case 'A':
+ args.ipaddr_intf = optarg;
+ break;
case 'c':
args.tftpcmd = optarg;
break;
}
}
- if (!list && ((!args.file_local && !args.tftpcmd) || !args.intf || !args.ipaddr)) {
+ if (args.ipaddr_intf && !args.ipaddr) {
+ fprintf(stderr, "Error: cannot use -A <ipaddr> without using -a <ipaddr>.\n");
+ return 1;
+ }
+
+#ifndef NMRPFLASH_FUZZ
+ if (!list && ((!args.file_local && !args.tftpcmd) || !args.intf /*|| !args.ipaddr*/)) {
usage(stderr);
return 1;
}
require_admin();
+#endif
val = !list ? nmrp_do(&args) : ethsock_list_all();
out: