Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
Please login to access the resource
home:Alexander_Naumov:SLE12
dhcp
0006-dhcp-4.2.5-dhclient-send-hostname-rml.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0006-dhcp-4.2.5-dhclient-send-hostname-rml.patch of Package dhcp
From 94cff63e89710f5e67944d57d76edaec968fe139 Mon Sep 17 00:00:00 2001 From: Marius Tomaschewski <mt@suse.de> Date: Thu, 18 Aug 2011 10:49:07 +0200 Subject: [PATCH] dhcp-4.2.5-dhclient-send-hostname-rml --- client/dhclient.8 | 8 ++++++++ client/dhclient.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/client/dhclient.8 b/client/dhclient.8 index 0aa1119..bc34c6a 100644 --- a/client/dhclient.8 +++ b/client/dhclient.8 @@ -60,6 +60,10 @@ dhclient - Dynamic Host Configuration Protocol Client .I LL|LLT ] [ +.B -H +.I hostname +] +[ .B -p .I port-number ] @@ -316,6 +320,10 @@ transmits these messages to 255.255.255.255 (the IP limited broadcast address). Overriding this is mostly useful for debugging purposes. This feature is not supported in DHCPv6 (\fB-6\fR) mode. .TP +.BI \-H \ hostname +This flag may be used to specify a client hostname that should be sent to +the DHCP server. Note, that this option is a SUSE/Novell extension. +.TP .BI \-g \ relay .\" mockup relay Set the giaddr field of all packets to the \fIrelay\fR IP address diff --git a/client/dhclient.c b/client/dhclient.c index 203d3d1..b7a14fe 100644 --- a/client/dhclient.c +++ b/client/dhclient.c @@ -119,6 +119,7 @@ main(int argc, char **argv) { int no_dhclient_db = 0; int no_dhclient_pid = 0; int no_dhclient_script = 0; + char *dhclient_hostname = NULL; #ifdef DHCPv6 int local_family_set = 0; #endif /* DHCPv6 */ @@ -231,6 +232,22 @@ main(int argc, char **argv) { if (++i == argc) usage(); mockup_relay = argv[i]; + } else if (!strcmp (argv[i], "-H")) { + size_t len; + if (++i == argc || !argv[i] || *(argv[i]) == '\0') + usage (); + len = strlen (argv[i]); + if (len > HOST_NAME_MAX) { + log_error("-H option host-name string \"%s\" is too long:" + "maximum length is %d characters", + argv[i], HOST_NAME_MAX); + exit(1); + } else if(check_domain_name(argv[i], len, 0) != 0) { + log_error("suspect host-name in -H \"%s\"", + argv[i]); + exit(1); + } + dhclient_hostname = argv [i]; } else if (!strcmp(argv[i], "-nw")) { nowait = 1; } else if (!strcmp(argv[i], "-n")) { @@ -491,6 +508,35 @@ main(int argc, char **argv) { /* Parse the dhclient.conf file. */ read_client_conf(); + /* If the user specified a hostname, send it here and now */ + if ((dhclient_hostname != NULL) && (*dhclient_hostname != '\0') ) { + struct parse *cfile = NULL; + char buf[HOST_NAME_MAX + 40]; + int len; + + snprintf (buf, sizeof(buf), "send host-name \"%s\";", + dhclient_hostname); + len = strlen(buf); + + status = new_parse (&cfile, -1, buf, len, + "host-name option", 0); + if (status != ISC_R_SUCCESS) + log_fatal ("Cannot parse send host-name statement!"); + + for (;;) { + const char *val = NULL; + int token; + + token = peek_token (&val, (unsigned *)0, cfile); + if (token == END_OF_FILE) + break; + + parse_client_statement (cfile, NULL, + &top_level_config); + } + end_parse (&cfile); + } + /* Parse the lease database. */ read_client_leases(); @@ -719,9 +765,9 @@ static void usage() log_fatal("Usage: dhclient " #ifdef DHCPv6 - "[-4|-6] [-SNTP1dvrx] [-nw] [-p <port>] [-D LL|LLT]\n" + "[-4|-6] [-SNTP1dvrx] [-nw] [-H <hostname>] [-p <port>] [-D LL|LLT]\n" #else /* DHCPv6 */ - "[-1dvrx] [-nw] [-p <port>]\n" + "[-1dvrx] [-nw] [-H <hostname>] [-p <port>]\n" #endif /* DHCPv6 */ " [-s server-addr] [-cf config-file] " "[-lf lease-file]\n" -- 1.8.4
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor