From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on sa.int.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.2.5 Message-ID: <5036BA25.8090209@complife.ru> Date: Fri, 24 Aug 2012 03:17:57 +0400 From: "Michael A. Kangin" User-Agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0.3) Gecko/20120426 Thunderbird/10.0.3 MIME-Version: 1.0 To: ALT Linux Team development discussions Content-Type: multipart/mixed; boundary="------------020400040103010002090300" Subject: [devel] set hostname in propagator X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Aug 2012 23:18:05 -0000 Archived-At: List-Archive: List-Post: This is a multi-part message in MIME format. --------------020400040103010002090300 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Здравствуйте. Озаботился тут установкой hostname, полученного по dhcp, в пропагаторе. Накатал патчик (см. аттач), вроде с виду все хорошо, пишет в логах: got hostname term-pg01 set hostname term-pg01 Однако, в итогово-загруженной системе hostname оказывается просто term. Из-за чего такое может быть, как бы пофиксить? -- wbr, Michael A. Kangin --------------020400040103010002090300 Content-Type: text/x-patch; name="sethostname.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="sethostname.patch" commit cee3c82eb493b5722dab8df94ed43c89507f2412 Author: Michael A. Kangin Date: Fri Aug 24 01:15:41 2012 +0400 fix hostnames diff --git a/dhcp.c b/dhcp.c index f903340..874f571 100644 --- a/dhcp.c +++ b/dhcp.c @@ -208,6 +208,7 @@ static void parse_reply(struct bootp_request * breq, struct interface_info * int { unsigned char * chptr; unsigned char option, length; + int retcode; memcpy(&intf->ip, &breq->yiaddr, 4); memcpy(&next_server, &breq->server_ip, 4); @@ -243,6 +244,12 @@ static void parse_reply(struct bootp_request * breq, struct interface_info * int tmp_str[length] = '\0'; domain = strdup(tmp_str); log_message("got domain %s", domain); + retcode = setdomainname(domain, sizeof(domain)); + if (retcode == 0) + log_message("set domain %s", domain); + else + log_message("could not set domain %s with ret %d", domain, retcode); + break; case BOOTP_OPTION_BROADCAST: @@ -260,6 +267,12 @@ static void parse_reply(struct bootp_request * breq, struct interface_info * int tmp_str[length] = '\0'; hostname = strdup(tmp_str); log_message("got hostname %s", hostname); + retcode = sethostname(hostname, sizeof(hostname)); + if (retcode == 0) + log_message("set hostname %s", hostname); + else + log_message("could not set hostname %s with ret %d", hostname, retcode); + break; case BOOTP_OPTION_ROOTPATH: @@ -591,6 +604,7 @@ enum return_type perform_dhcp(struct interface_info * intf) requested_options[num_options++] = BOOTP_OPTION_GATEWAY; requested_options[num_options++] = BOOTP_OPTION_DNS; requested_options[num_options++] = BOOTP_OPTION_DOMAIN; + requested_options[num_options++] = BOOTP_OPTION_HOSTNAME; requested_options[num_options++] = BOOTP_OPTION_ROOTPATH; requested_options[num_options++] = BOOTP_OPTION_BROADCAST; add_vendor_code(&breq, DHCP_OPTION_OPTIONREQ, num_options, requested_options); --------------020400040103010002090300--