unconditionally read in status file to retain random mac address

changes/54/3254/1
Richard Fuchs 11 years ago
parent d35d88d2bb
commit 9f892b10a6

@ -116,6 +116,7 @@ static void sigcleanup(int sig) {
int main(int argc, char *argv[])
{
int get_tmp = 1, get_cmd;
int dhinfo_ret;
if(argc < 3) {
print_help(argv[0]);
@ -365,6 +366,8 @@ int main(int argc, char *argv[])
exit(2);
}
dhinfo_ret = get_dhinfo();
if (!dhmac_fname_flag)
sprintf(dhmac_fname, ETH_F_FMT, ETH_F_ARG(dhmac));
@ -393,8 +396,8 @@ int main(int argc, char *argv[])
* and unlinks it from the system
*/
if(dhcp_release_flag) {
if(get_dhinfo() == ERR_FILE_OPEN)
critical("Error on opening DHCP info file: %m");
if(dhinfo_ret)
critical("Error on opening DHCP info file: %s", strerror(dhinfo_ret));
if (!server_id)
critical("Can't release IP without an active lease");
build_option53(DHCP_MSGRELEASE); /* Option53 DHCP release */

@ -14,6 +14,7 @@
#include <linux/if_ether.h>
#include <linux/if_arp.h>
#include <stdarg.h>
#include <errno.h>
#include "headers.h"
@ -954,10 +955,10 @@ int get_dhinfo()
dh_file = open(dhmac_fname, O_RDONLY);
if(dh_file < 0)
return ERR_FILE_OPEN;
return errno;
if (read(dh_file, &ds, sizeof(ds)) != sizeof(ds))
return ERR_FILE_OPEN;
return errno;
memcpy(dhmac, ds.client_mac, sizeof(dhmac));
if (ds.have_ip) {

@ -282,7 +282,6 @@ struct dhcpv4_hdr
#define DHCP_ACK_RCVD 4
#define DHCP_REQ_RESEND 5
#define DHCP_NAK_RCVD 6
#define ERR_FILE_OPEN 7
#define ARP_ICMP_RCV 8
#define ARP_RCVD 9
#define ARP_MAP 10

Loading…
Cancel
Save