Coverage Report

Created: 2026-10-17 06:38

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/barebox/commands/dhcp.c
Line
Count
Source
1
// SPDX-License-Identifier: GPL-2.0-only
2
// SPDX-FileCopyrightText: © 2015 PHYTEC Messtechnik GmbH
3
4
/*
5
 * Author: Wadim Egorov <w.egorov@phytec.de>
6
 * Based on work of Sascha Hauer <s.hauer@pengutronix.de>.
7
 */
8
9
#include <common.h>
10
#include <command.h>
11
#include <complete.h>
12
#include <environment.h>
13
#include <getopt.h>
14
#include <dhcp.h>
15
#include <net.h>
16
17
static int do_dhcp(int argc, char *argv[])
18
0
{
19
0
  int ret, opt;
20
0
  struct dhcp_req_param dhcp_param = {};
21
0
  struct eth_device *edev;
22
0
  const char *edevname;
23
24
0
  while ((opt = getopt(argc, argv, "H:v:c:u:U:r:o:")) > 0) {
25
0
    switch (opt) {
26
0
    case 'H':
27
0
      dhcp_param.hostname = optarg;
28
0
      break;
29
0
    case 'v':
30
0
      dhcp_param.vendor_id = optarg;
31
0
      break;
32
0
    case 'c':
33
0
      dhcp_param.client_id = optarg;
34
0
      break;
35
0
    case 'u':
36
0
      dhcp_param.client_uuid = optarg;
37
0
      break;
38
0
    case 'U':
39
0
      dhcp_param.user_class = optarg;
40
0
      break;
41
0
    case 'r':
42
0
      dhcp_param.retries = simple_strtoul(optarg, NULL, 10);
43
0
      break;
44
0
    case 'o':
45
0
      dhcp_param.option224 = optarg;
46
0
      break;
47
0
    default:
48
0
      return COMMAND_ERROR_USAGE;
49
0
    }
50
0
  }
51
52
0
  switch (argc - optind) {
53
0
  case 0:
54
0
    edevname = "eth0";
55
0
    puts("Defaulting to eth0\n");
56
0
    break;
57
0
  case 1:
58
0
    edevname = argv[optind];
59
0
    break;
60
0
  default:
61
0
    return COMMAND_ERROR_USAGE;
62
0
  }
63
64
0
  edev = eth_get_byname(edevname);
65
0
  if (!edev) {
66
0
    printf("No such network device: %s\n", edevname);
67
0
    return 1;
68
0
  }
69
70
0
  ret = dhcp(edev, &dhcp_param);
71
72
0
  return ret;
73
0
}
74
75
BAREBOX_CMD_HELP_START(dhcp)
76
BAREBOX_CMD_HELP_TEXT("Options:")
77
BAREBOX_CMD_HELP_OPT("-H HOSTNAME", "hostname to send to the DHCP server")
78
BAREBOX_CMD_HELP_OPT("-v ID\t", "DHCP Vendor ID (code 60) submitted in DHCP requests")
79
BAREBOX_CMD_HELP_OPT("-c ID\t", "DHCP Client ID (code 61) submitted in DHCP requests")
80
BAREBOX_CMD_HELP_OPT("-u UUID\t", "DHCP Client UUID (code 97) submitted in DHCP requests")
81
BAREBOX_CMD_HELP_OPT("-U CLASS", "DHCP User class (code 77) submitted in DHCP requests")
82
BAREBOX_CMD_HELP_OPT("-r RETRY", "retry limit (default 20)")
83
BAREBOX_CMD_HELP_OPT("-o PRIVATE DATA", "private data (code 224) submitted in DHCP requests")
84
BAREBOX_CMD_HELP_END
85
86
BAREBOX_CMD_START(dhcp)
87
  .cmd    = do_dhcp,
88
  BAREBOX_CMD_DESC("DHCP client to obtain IP or boot params")
89
  BAREBOX_CMD_OPTS("[-HvcuUro] [device]")
90
  BAREBOX_CMD_GROUP(CMD_GRP_NET)
91
  BAREBOX_CMD_HELP(cmd_dhcp_help)
92
  BAREBOX_CMD_COMPLETE(eth_complete)
93
BAREBOX_CMD_END