[Dhcp-agent-commits] CVS: dhcp-agent dhcp-net.c,1.17,1.18 dhcp-client-control.c,1.15,1.16 dhcp-clien
Status: Alpha
Brought to you by:
actmodern
From: Thamer Al-H. <act...@us...> - 2002-05-19 00:34:25
|
Update of /cvsroot/dhcp-agent/dhcp-agent In directory usw-pr-cvs1:/tmp/cvs-serv23971 Modified Files: dhcp-net.c dhcp-client-control.c dhcp-client-states.c dhcp-agent.h Log Message: fixed up interface handling so we now only down interface upon release -- and we don't reinitialize IP if the interface is up and running. Index: dhcp-net.c =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-net.c,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** dhcp-net.c 18 May 2002 18:10:09 -0000 1.17 --- dhcp-net.c 19 May 2002 00:34:22 -0000 1.18 *************** *** 109,121 **** { /* are we using a fake address? */ ! if(net->fake_hw_addr == NULL) { ! return(eth_get(net->eth, addr)); ! } else { memcpy(addr, net->fake_hw_addr->data, ETH_ADDR_LEN); return 0; } } ! /* get real interface address skipping fake if its available. */ int rawnet_get_real_hw_addr(rawnet_t *net, eth_addr_t *addr) { --- 109,121 ---- { /* are we using a fake address? */ ! if(net->fake_hw_addr != NULL) { memcpy(addr, net->fake_hw_addr->data, ETH_ADDR_LEN); return 0; + } else { + return(eth_get(net->eth, addr)); } } ! /* get real interface address skipping fake even if its available. */ int rawnet_get_real_hw_addr(rawnet_t *net, eth_addr_t *addr) { *************** *** 245,252 **** } ! /* We need to bring the interface up, ! * even if its not initialized properly. */ ! ! rawnet_interface_up(net, 0, 0xffffff, -1); /* get pcap handler */ --- 245,251 ---- } ! /* Is the interface up? */ ! if(!interface_is_up(net->intf_handle)) ! rawnet_interface_up(net, 0, 0xffffff, -1); /* then bring it up with dum values. */ /* get pcap handler */ Index: dhcp-client-control.c =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-client-control.c,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** dhcp-client-control.c 18 May 2002 18:10:09 -0000 1.15 --- dhcp-client-control.c 19 May 2002 00:34:22 -0000 1.16 *************** *** 225,226 **** --- 225,242 ---- xfree(dc); } + + /* Utility routines to bring down interface. + * we need this because we have to be explicit + * about it. We can't do this at the time we + * destroy the control object -- for example + * we destroy the control object through forks + * to clean out our environment but we don't want + * to down the interface (necessarily) then. + * this routine just makes it explicit so we call + * it when we mean it. */ + + void dhcp_client_interface_down(dhcp_client_control_t *dc) + { + rawnet_interface_down(dc->rawnet); + return; + } Index: dhcp-client-states.c =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-client-states.c,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** dhcp-client-states.c 18 May 2002 18:10:09 -0000 1.19 --- dhcp-client-states.c 19 May 2002 00:34:22 -0000 1.20 *************** *** 349,352 **** --- 349,355 ---- client_broadcast_unarp(dc); + + /* since we're releasing the lease we should down the interface */ + dhcp_client_interface_down(dc); return 0; /* called from do_shutdown() so no real state returned */ Index: dhcp-agent.h =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-agent.h,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** dhcp-agent.h 18 May 2002 18:10:09 -0000 1.32 --- dhcp-agent.h 19 May 2002 00:34:22 -0000 1.33 *************** *** 849,852 **** --- 849,853 ---- char *fake_hw_addr); extern dhcp_client_control_t *create_dhcp_client_control_dummy(char *interface); + extern void dhcp_client_interface_down(dhcp_client_control_t *dc); /* dhcp client conf */ |