[Dhcp-agent-commits] CVS: dhcp-agent dhcp-agent.h,1.12,1.13 dhcp-arp.c,1.3,1.4 dhcp-client-states.c,
Status: Alpha
Brought to you by:
actmodern
From: Thamer Al-H. <act...@us...> - 2002-02-02 00:48:09
|
Update of /cvsroot/dhcp-agent/dhcp-agent In directory usw-pr-cvs1:/tmp/cvs-serv8532 Modified Files: dhcp-agent.h dhcp-arp.c dhcp-client-states.c dhcp-client.c dhcp-interface.c dhcp-net.c Log Message: arp replies now generated after setup (working); rawnet_send now checks packet->len and returns error accordingly. Index: dhcp-agent.h =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-agent.h,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** dhcp-agent.h 2002/02/01 19:56:10 1.12 --- dhcp-agent.h 2002/02/02 00:48:06 1.13 *************** *** 660,664 **** extern void arp_set_hardware_len(arp_obj *arp, uint8_t len); extern void arp_set_protocol_len(arp_obj *arp, uint8_t len); ! extern void arp_set_op(arp_obj *arp, uint8_t op); extern void arp_set_sender_hardware_address(arp_obj *arp, eth_addr_t addr); extern void arp_set_sender_protocol_address(arp_obj *arp, uint32_t addr); --- 660,664 ---- extern void arp_set_hardware_len(arp_obj *arp, uint8_t len); extern void arp_set_protocol_len(arp_obj *arp, uint8_t len); ! extern void arp_set_op(arp_obj *arp, uint16_t op); extern void arp_set_sender_hardware_address(arp_obj *arp, eth_addr_t addr); extern void arp_set_sender_protocol_address(arp_obj *arp, uint32_t addr); Index: dhcp-arp.c =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-arp.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** dhcp-arp.c 2002/02/01 18:31:17 1.3 --- dhcp-arp.c 2002/02/02 00:48:06 1.4 *************** *** 63,69 **** } ! void arp_set_op(arp_obj *arp, uint8_t op) { ! arp->header.ar_op = op; return; } --- 63,69 ---- } ! void arp_set_op(arp_obj *arp, uint16_t op) { ! arp->header.ar_op = htons(op); return; } Index: dhcp-client-states.c =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-client-states.c,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** dhcp-client-states.c 2002/02/01 19:56:10 1.8 --- dhcp-client-states.c 2002/02/02 00:48:06 1.9 *************** *** 113,118 **** rawnet_build_arp_reply_broadcast(dc->rawnet, ip_addr, hw_addr); ! if(rawnet_send_packet(dc->rawnet)) ! error_message("warning: could not send arp reply: %s", strerror(errno)); return; --- 113,117 ---- rawnet_build_arp_reply_broadcast(dc->rawnet, ip_addr, hw_addr); ! rawnet_send_packet(dc->rawnet); return; *************** *** 318,326 **** rawnet_down(dc->rawnet); - info_message("waiting for renew."); alarm(dc->renewal_time); suspend_for_interrupts(); /* if we got a shutdown or HUP it will be caught later. */ if(have_alarm) { - info_message("renewing lease."); have_alarm = 0; } --- 317,323 ---- Index: dhcp-client.c =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-client.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** dhcp-client.c 2002/01/31 14:43:22 1.7 --- dhcp-client.c 2002/02/02 00:48:06 1.8 *************** *** 33,37 **** info_message("shutting down."); client_release(dc); ! interface_down(dc->interface_control, dc->interface); delete_pid_file(dc->interface); --- 33,38 ---- 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); *************** *** 284,287 **** --- 285,293 ---- state = do_client_dhcp_loop(1, dc, state); + /* flush stdout to get messages out _now_ + * in case things break in forking into child. */ + fflush(stdout); + fflush(stderr); + /* Go in background now before main loop. */ if(want_background) { /* are we interactive? if so stay in foreground. */ Index: dhcp-interface.c =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-interface.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** dhcp-interface.c 2002/02/01 19:56:10 1.6 --- dhcp-interface.c 2002/02/02 00:48:06 1.7 *************** *** 97,101 **** } else ! info.intf_info &= ~(INTF_INFO_ADDR); /* Set mtu to default if not passed. */ --- 97,101 ---- } else ! info.intf_info &= ~INTF_INFO_ADDR; /* Set mtu to default if not passed. */ *************** *** 118,128 **** int interface_down(interface_control_t *ic, char *name) { ! struct intf_info info; ! if(interface_get_info(ic, name)) return -1; - - info.intf_flags &= ~(INTF_FLAG_UP); if(interface_set_info(ic, name)) return -1; --- 118,127 ---- 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; *************** *** 140,141 **** --- 139,141 ---- return 0; } + Index: dhcp-net.c =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-net.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** dhcp-net.c 2002/02/01 19:56:10 1.7 --- dhcp-net.c 2002/02/02 00:48:06 1.8 *************** *** 393,397 **** int rawnet_send_packet(rawnet_t *net) { ! return(eth_send(net->eth, net->packet_data, net->packet_len)); } --- 393,400 ---- int rawnet_send_packet(rawnet_t *net) { ! if(eth_send(net->eth, net->packet_data, net->packet_len) != net->packet_len) ! return 1; ! else ! return 0; } *************** *** 414,419 **** { ! arp_set_hardware_type(net->arp_p, DLT_EN10MB); ! arp_set_protocol_type(net->arp_p, ETH_TYPE_IP); arp_set_hardware_len(net->arp_p, ETH_ADDR_LEN); arp_set_protocol_len(net->arp_p, IP_ADDR_LEN); --- 417,422 ---- { ! arp_set_hardware_type(net->arp_p, ARP_HRD_ETH); ! arp_set_protocol_type(net->arp_p, ARP_PRO_IP); arp_set_hardware_len(net->arp_p, ETH_ADDR_LEN); arp_set_protocol_len(net->arp_p, IP_ADDR_LEN); *************** *** 615,619 **** * */ ! if(total_len > DEFAULT_MTU) fatal_error("Outgoing DHCP packet too large. I'm currently not implementing this properly so I'll have to exit!"); --- 618,622 ---- * */ ! if(total_len > DEFAULT_MTU) fatal_error("Outgoing DHCP packet too large. I'm currently not implementing this properly so I'll have to exit!"); *************** *** 645,649 **** net->type = RAWNET_ARP; ! net->packet_len = ETH_HDR_LEN + ARP_ETHIP_LEN; rawnet_write_packet(net); --- 648,652 ---- net->type = RAWNET_ARP; ! net->packet_len = ETH_HDR_LEN + ARP_ETHIP_LEN + ARP_HDR_LEN; rawnet_write_packet(net); |