[Dhcp-agent-commits] CVS: dhcp-agent COST,1.4,1.5 Makefile.am,1.9,1.10 Makefile.in,1.9,1.10 TODO,1.8
Status: Alpha
Brought to you by:
actmodern
From: Thamer Al-H. <act...@us...> - 2002-02-15 09:19:55
|
Update of /cvsroot/dhcp-agent/dhcp-agent In directory usw-pr-cvs1:/tmp/cvs-serv27679 Modified Files: COST Makefile.am Makefile.in TODO dhcp-agent.h dhcp-client-control.c dhcp-client-states.c dhcp-client.c dhcp-interface.c dhcp-sysconf.c Log Message: ported dhcp-agent to use libdnet-1.1; it's broken though -- looks like i found a bug in libdnet; Index: COST =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/COST,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** COST 15 Feb 2002 02:00:24 -0000 1.4 --- COST 15 Feb 2002 09:19:52 -0000 1.5 *************** *** 1,10 **** In writing dhcp-agent I suffered the following: ! Feb - March 2001 (Current values as of the Feb 9) 24 pots of coffee; 132 camel filter cigarettes; 12 diet cokes (cutting down); 845 mp3s (thanks stephanie); 18 historical trips ! to the wash room; 16 showers; one pretty geekette; one job offer ! :-) Jan - Feb 2001 --- 1,10 ---- In writing dhcp-agent I suffered the following: ! Feb - March 2001 (Current values as of the Feb 14) 24 pots of coffee; 132 camel filter cigarettes; 12 diet cokes (cutting down); 845 mp3s (thanks stephanie); 18 historical trips ! to the wash room; 16 showers; lost one pretty geekette; got one ! job offer; moving up in the world... Jan - Feb 2001 Index: Makefile.am =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/Makefile.am,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** Makefile.am 15 Feb 2002 02:00:24 -0000 1.9 --- Makefile.am 15 Feb 2002 09:19:52 -0000 1.10 *************** *** 22,26 **** dhcp-sysconf.c dhcp-rtt.c dhcp-packet-build.c ! dhcpclient_LDADD = @PCAP_LIB@ @DNET_LIB@ noinst_HEADERS = dhcp-agent.h config.h --- 22,26 ---- dhcp-sysconf.c dhcp-rtt.c dhcp-packet-build.c ! dhcpclient_LDADD = @PCAP_LIB@ @DNET_LIB@ -lefence noinst_HEADERS = dhcp-agent.h config.h Index: Makefile.in =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/Makefile.in,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** Makefile.in 15 Feb 2002 02:00:24 -0000 1.9 --- Makefile.in 15 Feb 2002 09:19:52 -0000 1.10 *************** *** 86,90 **** ! dhcpclient_LDADD = @PCAP_LIB@ @DNET_LIB@ noinst_HEADERS = dhcp-agent.h config.h --- 86,90 ---- ! dhcpclient_LDADD = @PCAP_LIB@ @DNET_LIB@ -lefence noinst_HEADERS = dhcp-agent.h config.h Index: TODO =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/TODO,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** TODO 14 Feb 2002 10:06:53 -0000 1.8 --- TODO 15 Feb 2002 09:19:52 -0000 1.9 *************** *** 48,53 **** convention where name could be the name of the process, module, or function. - -- rawnet's packet construction isn't squeaky clean -- make a new - source file called dhcp-build-packets.c and polish it up -- rawnet and the dhcp client control are foobared by a fake mac address. check, fix, clean. --- 48,52 ---- convention where name could be the name of the process, module, or function. -- rawnet and the dhcp client control are foobared by a fake mac address. check, fix, clean. + -- clean up dhcp-packet-build.c Index: dhcp-agent.h =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-agent.h,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** dhcp-agent.h 15 Feb 2002 02:00:24 -0000 1.27 --- dhcp-agent.h 15 Feb 2002 09:19:52 -0000 1.28 *************** *** 329,336 **** } client_conf_t; ! /* interface control object is just a typedef of ! * dnet's intf_t for now. */ ! typedef intf_t interface_control_t; /* Client data object. */ --- 329,342 ---- } client_conf_t; ! /* interface control object: ! * we store dnet's interface handle, ! * and interface_entry structure. ! * We need the entry structure ! */ ! typedef struct { ! intf_t *interface_handle; ! struct intf_entry *interface_entry; ! } interface_control_t; /* Client data object. */ *************** *** 809,819 **** /* interface control */ ! extern interface_control_t *create_interface_control(void); ! extern int interface_is_up(interface_control_t *ic, char *name); ! extern int interface_up(interface_control_t *ic, char *name, uint32_t addr, ! uint32_t netmask, int mtu); ! extern int interface_down(interface_control_t *ic, char *name); extern void destroy_interface_control(interface_control_t *ic); ! extern int interface_get_ip_addr(interface_control_t *ic, char *name, uint32_t *addr); /* client states */ --- 815,824 ---- /* interface control */ ! extern interface_control_t *create_interface_control(char *name); ! extern int interface_is_up(interface_control_t *ic); ! extern int interface_up(interface_control_t *ic, uint32_t addr, uint32_t netmask, int mtu); ! extern int interface_down(interface_control_t *ic); extern void destroy_interface_control(interface_control_t *ic); ! extern int interface_get_ip_addr(interface_control_t *ic, uint32_t *addr); /* client states */ Index: dhcp-client-control.c =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-client-control.c,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** dhcp-client-control.c 11 Feb 2002 18:02:24 -0000 1.12 --- dhcp-client-control.c 15 Feb 2002 09:19:52 -0000 1.13 *************** *** 113,117 **** char filter_buff[GENERIC_BUFFSIZE]; eth_addr_t interface_addr; ! #ifdef HAVE_UNAME struct utsname utsname; --- 113,118 ---- char filter_buff[GENERIC_BUFFSIZE]; eth_addr_t interface_addr; ! int retval; ! #ifdef HAVE_UNAME struct utsname utsname; *************** *** 122,126 **** dc->state = 0; dc->interface = strdup(interface); ! dc->interface_control = create_interface_control(); dc->conf = create_client_conf(dc); dc->cache = create_client_cache(dc); --- 123,127 ---- dc->state = 0; dc->interface = strdup(interface); ! dc->interface_control = create_interface_control(interface); dc->conf = create_client_conf(dc); dc->cache = create_client_cache(dc); *************** *** 133,144 **** /* We need to bring the interface up, * even if its not initialized properly. */ ! ! if(!interface_is_up(dc->interface_control, dc->interface) ! && interface_up(dc->interface_control, dc->interface, INADDR_ANY, 0xffffffff, -1)) { ! error_message("could not bring up interface: %s: %s", dc->interface, strerror(errno)); ! destroy_dhcp_client_control(dc); ! return NULL; } ! /* Get port numbers from services db. */ --- 134,159 ---- /* We need to bring the interface up, * even if its not initialized properly. */ ! ! retval = interface_is_up(dc->interface_control); ! ! switch(retval) { ! ! case -1: ! destroy_dhcp_client_control(dc); ! return NULL; ! ! case 0: ! if(interface_up(dc->interface_control, INADDR_ANY, 0xffffffff, -1)) { ! ! error_message("could not bring up interface: %s: %s", dc->interface, strerror(errno)); ! destroy_dhcp_client_control(dc); ! return NULL; ! } ! ! case 1: /* is up: fallthrough. */ ! default: ! break; } ! /* Get port numbers from services db. */ *************** *** 228,232 **** if(dc->interface_control) ! intf_close(dc->interface_control); if(dc->class_id) --- 243,247 ---- if(dc->interface_control) ! destroy_interface_control(dc->interface_control); if(dc->class_id) Index: dhcp-client-states.c =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-client-states.c,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** dhcp-client-states.c 15 Feb 2002 02:00:24 -0000 1.16 --- dhcp-client-states.c 15 Feb 2002 09:19:52 -0000 1.17 *************** *** 108,112 **** if(rawnet_get_interface_hw_addr(dc->rawnet, &client_hw_addr) || ! interface_get_ip_addr(dc->interface_control, dc->interface, &client_ip_addr)) { error_message("could get get hardware and ip addresses after initialization."); return -1; --- 108,112 ---- if(rawnet_get_interface_hw_addr(dc->rawnet, &client_hw_addr) || ! interface_get_ip_addr(dc->interface_control, &client_ip_addr)) { error_message("could get get hardware and ip addresses after initialization."); return -1; Index: dhcp-client.c =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-client.c,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** dhcp-client.c 11 Feb 2002 18:02:24 -0000 1.14 --- dhcp-client.c 15 Feb 2002 09:19:52 -0000 1.15 *************** *** 33,40 **** { info_message("shutting down."); ! client_release(dc); ! if(interface_down(dc->interface_control, dc->interface)) ! error_message("warning: could not bring interface down."); ! delete_pid_file(dc->interface); exit(0); --- 33,44 ---- { info_message("shutting down."); ! ! if(dc) { /* only do clean up if we can. */ ! client_release(dc); ! if(interface_down(dc->interface_control)) ! error_message("warning: could not bring interface down."); ! ! delete_pid_file(dc->interface); ! } exit(0); *************** *** 336,340 **** if((dc = create_dhcp_client_control(interface, promiscious)) == NULL) { error_message("encountered fatal error. cannot continue. exiting"); ! do_shutdown(dc); } --- 340,344 ---- if((dc = create_dhcp_client_control(interface, promiscious)) == NULL) { error_message("encountered fatal error. cannot continue. exiting"); ! do_shutdown(NULL); } *************** *** 365,369 **** if((dc = create_dhcp_client_control(interface, promiscious)) == NULL) { error_message("encountered a fatal error. cannot continue. exiting"); ! do_shutdown(dc); } --- 369,373 ---- if((dc = create_dhcp_client_control(interface, promiscious)) == NULL) { error_message("encountered a fatal error. cannot continue. exiting"); ! do_shutdown(NULL); } Index: dhcp-interface.c =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-interface.c,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** dhcp-interface.c 8 Feb 2002 01:37:29 -0000 1.10 --- dhcp-interface.c 15 Feb 2002 09:19:52 -0000 1.11 *************** *** 27,38 **** #include <dhcp-agent.h> - static struct intf_info info; - /* Internal utilities */ ! static int interface_get_info(interface_control_t *ic, char *name) { ! if(intf_get(ic, name, &info) < 0) { ! error_message("could not lookup interface %s : %d", name, strerror(errno)); return -1; } --- 27,37 ---- #include <dhcp-agent.h> /* Internal utilities */ ! static int interface_get_info(interface_control_t *ic) { ! ! if(intf_get(ic->interface_handle, ic->interface_entry) < 0) { ! error_message("could not lookup interface %s : %d", ic->interface_entry->intf_name, strerror(errno)); return -1; } *************** *** 41,48 **** } ! static int interface_set_info(interface_control_t *ic, char *name) { ! if(intf_set(ic, name, &info) < 0) { ! error_message("could not lookup interface %s : %d", name, strerror(errno)); return -1; } --- 40,47 ---- } ! static int interface_set_info(interface_control_t *ic) { ! if(intf_set(ic->interface_handle, ic->interface_entry) < 0) { ! error_message("could not lookup interface %s : %d", ic->interface_entry->intf_name, strerror(errno)); return -1; } *************** *** 53,88 **** /* Initialize interface handle. */ ! interface_control_t *create_interface_control(void) { ! interface_control_t *ic; /* typedef'd from intf_t */ ! ! ic = intf_open(); ! if(ic == NULL) /* XXX -- update to dnet's error strings when dnet has some */ fatal_error("could not acquire interface handler"); ! ! return ic; } void destroy_interface_control(interface_control_t *ic) { ! intf_close(ic); } /* Check to see if an interface is up. */ ! int interface_is_up(interface_control_t *ic, char *name) { ! if(interface_get_info(ic, name)) ! return 0; ! return(info.intf_flags&INTF_FLAG_UP); } /* bring an interface up */ ! int interface_up(interface_control_t *ic, char *name, uint32_t addr, uint32_t netmask, int mtu) { ! if(interface_get_info(ic, name)) return -1; --- 52,97 ---- /* Initialize interface handle. */ ! interface_control_t *create_interface_control(char *name) { ! interface_control_t *ic; ! ! ic = xmalloc(sizeof(interface_control_t)); ! ! ic->interface_handle = intf_open(); ! if(ic->interface_handle == NULL) /* XXX -- update to dnet's error strings when dnet has some */ fatal_error("could not acquire interface handler"); ! ! ic->interface_entry = xmalloc(1024); ! memset(ic->interface_entry, 0, sizeof(struct intf_entry)); ! ic->interface_entry->intf_len = 1024; ! ! strlcpy(ic->interface_entry->intf_name, name, sizeof(ic->interface_entry->intf_name) -1); ! ic->interface_entry->intf_name[sizeof(ic->interface_entry->intf_name) -1] = 0; ! ! return ic; } void destroy_interface_control(interface_control_t *ic) { ! intf_close(ic->interface_handle); ! xfree(ic); } /* Check to see if an interface is up. */ ! int interface_is_up(interface_control_t *ic) { ! if(interface_get_info(ic)) ! return -1; ! return(ic->interface_entry->intf_flags&INTF_FLAG_UP); } /* bring an interface up */ ! int interface_up(interface_control_t *ic, uint32_t addr, uint32_t netmask, int mtu) { ! if(interface_get_info(ic)) return -1; *************** *** 90,114 **** if(addr != INADDR_ANY) { ! ! info.intf_addr.addr_type = ADDR_TYPE_IP; ! addr_mtob(&netmask, IP_ADDR_LEN, &info.intf_addr.addr_bits); ! memcpy(&info.intf_addr.addr_ip, &addr, IP_ADDR_LEN); ! info.intf_info |= INTF_INFO_ADDR; ! ! } else ! info.intf_info &= ~INTF_INFO_ADDR; /* Set mtu to default if not passed. */ if(mtu != -1) ! info.intf_mtu = mtu; else ! info.intf_mtu = DEFAULT_MTU; ! info.intf_info |= INTF_INFO_MTU; ! info.intf_info |= INTF_INFO_FLAGS; ! info.intf_flags |= INTF_FLAG_UP; ! if(interface_set_info(ic, name)) return -1; --- 99,117 ---- if(addr != INADDR_ANY) { ! ic->interface_entry->intf_addr->addr_type = ADDR_TYPE_IP; ! addr_mtob(&netmask, IP_ADDR_LEN, &ic->interface_entry->intf_addr->addr_bits); ! memcpy(&ic->interface_entry->intf_addr->addr_ip, &addr, IP_ADDR_LEN); ! } /* Set mtu to default if not passed. */ if(mtu != -1) ! ic->interface_entry->intf_mtu = mtu; else ! ic->interface_entry->intf_mtu = DEFAULT_MTU; ! ic->interface_entry->intf_flags |= INTF_FLAG_UP; ! if(interface_set_info(ic)) return -1; *************** *** 117,129 **** /* take down an interface. */ ! int interface_down(interface_control_t *ic, char *name) { ! if(interface_get_info(ic, name)) return -1; ! info.intf_flags &= ~INTF_FLAG_UP; ! if(interface_set_info(ic, name)) return -1; --- 120,132 ---- /* take down an interface. */ ! int interface_down(interface_control_t *ic) { ! if(interface_get_info(ic)) return -1; ! ic->interface_entry->intf_flags &= ~INTF_FLAG_UP; ! if(interface_set_info(ic)) return -1; *************** *** 132,143 **** /* get ip address of an interface. */ ! int interface_get_ip_addr(interface_control_t *ic, char *name, uint32_t *addr) { ! if(interface_get_info(ic, name)) return -1; ! memcpy(addr, &info.intf_addr.addr_ip, IP_ADDR_LEN); return 0; } - --- 135,145 ---- /* get ip address of an interface. */ ! int interface_get_ip_addr(interface_control_t *ic, uint32_t *addr) { ! if(interface_get_info(ic)) return -1; ! memcpy(addr, &ic->interface_entry->intf_addr->addr_ip, IP_ADDR_LEN); return 0; } Index: dhcp-sysconf.c =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-sysconf.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** dhcp-sysconf.c 9 Feb 2002 23:29:37 -0000 1.7 --- dhcp-sysconf.c 15 Feb 2002 09:19:52 -0000 1.8 *************** *** 98,106 **** int sysconf_routers(void *value, dhcp_client_control_t *dc) { ! struct addr addr, gw; uint32_t *addr_val; route_t *rt; list_t *routers; ! /* FIXME: insert ICMP ping checks so we can find * the best router and use it. --- 98,106 ---- int sysconf_routers(void *value, dhcp_client_control_t *dc) { ! struct route_entry r_entry; uint32_t *addr_val; route_t *rt; list_t *routers; ! /* FIXME: insert ICMP ping checks so we can find * the best router and use it. *************** *** 108,124 **** */ ! memset(&addr, 0, sizeof(addr)); ! memset(&gw, 0, sizeof(gw)); routers = value; addr_val = routers->data; ! addr.addr_type = ADDR_TYPE_IP; ! addr.addr_bits = 0; ! addr.addr_ip = 0; ! gw.addr_type = ADDR_TYPE_IP; ! gw.addr_bits = 0; ! memcpy(&gw.addr_ip, addr_val, IP_ADDR_LEN); rt = route_open(); --- 108,124 ---- */ ! memset(&r_entry.route_dst, 0, sizeof(r_entry.route_dst)); ! memset(&r_entry.route_gw, 0, sizeof(r_entry.route_gw)); routers = value; addr_val = routers->data; ! r_entry.route_dst.addr_type = ADDR_TYPE_IP; ! r_entry.route_dst.addr_bits = 0; ! r_entry.route_dst.addr_ip = 0; ! r_entry.route_gw.addr_type = ADDR_TYPE_IP; ! r_entry.route_gw.addr_bits = 0; ! memcpy(&r_entry.route_gw.addr_ip, addr_val, IP_ADDR_LEN); rt = route_open(); *************** *** 126,130 **** return -1; ! if(route_add(rt, &addr, &gw) < 0) { route_close(rt); return -1; --- 126,130 ---- return -1; ! if(route_add(rt, &r_entry) < 0) { route_close(rt); return -1; *************** *** 227,231 **** fatal_error("do not have enough settings for interface configuration!"); ! if(interface_up(dc->interface_control, dc->interface, addr, netmask, mtu)) fatal_error("could not bring up interface: %s", dc->interface); --- 227,231 ---- fatal_error("do not have enough settings for interface configuration!"); ! if(interface_up(dc->interface_control, addr, netmask, mtu)) fatal_error("could not bring up interface: %s", dc->interface); *************** *** 286,290 **** make_file_public_read("/etc/resolv.conf"); } - return; --- 286,289 ---- |