diff --git a/ChangeLog b/ChangeLog index 635c34e2b..b14070ea9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2005-02-14 Dan Williams + + Patch from Peter Jones: + * dhcpcd/client.c + - Ensure we return RET_DHCP_CEASED everywhere we should + * dhcpcd/udpipgen.c + - Use faster TOS for IP packets + - Don't set ip_id since we're UDP + + Patch from Tomislav Vujec: + * src/nm-dbus-dhcp.c + test/nm-dhcp-opt-test.c + - Clean up warnings to enable cvs tree compilation. + 2005-02-14 Tomislav Vujec * configure.in diff --git a/configure.in b/configure.in index b91bbf56a..b58c27099 100644 --- a/configure.in +++ b/configure.in @@ -2,6 +2,7 @@ AC_PREREQ(2.52) AC_INIT(NetworkManager, 0.3.3, dcbw@redhat.com, NetworkManager) AM_INIT_AUTOMAKE([subdir-objects]) +AM_MAINTAINER_MODE AM_CONFIG_HEADER(config.h) @@ -36,7 +37,7 @@ AC_CHECK_FUNCS(select socket uname) GETTEXT_PACKAGE=NetworkManager AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package]) -ALL_LINGUAS="bs cs da de el en_CA es gu ja nb nl no pa pt_BR sk sq sv wa zh_CN" +ALL_LINGUAS="bs cs da de el en_CA es gu hr ja nb nl no pa pt_BR sk sq sv wa zh_CN" AM_GLIB_GNU_GETTEXT AC_ARG_WITH(distro, AC_HELP_STRING([--with-distro=DISTRO], [Specify the Linux distribution to target: One of redhat, gentoo, debian, or slackware])) diff --git a/dhcpcd/client.c b/dhcpcd/client.c index 9bb902743..ddfbe103a 100644 --- a/dhcpcd/client.c +++ b/dhcpcd/client.c @@ -472,13 +472,14 @@ int dhcp_handle_transaction (dhcp_interface *iface, unsigned int expected_reply_ * we return RET_DHCP_TIMEOUT. */ gettimeofday (&overall_end, NULL); - overall_end.tv_sec += iface->client_options->base_timeout; /* Send the request, then wait for the reply for a certain period of time * that increases with each failed request. Quit when we reach our end time though. */ #ifdef DEBUG - syslog (LOG_INFO, "DHCP: Starting request loop"); + syslog (LOG_INFO, "DHCP: Starting request loop, overall start_time = {%lds, %ldus}\n", + (long)overall_end.tv_sec, (long)overall_end.tv_usec); + overall_end.tv_sec += iface->client_options->base_timeout; #endif do { @@ -699,6 +700,8 @@ out: free (pkt_recv); if (recv_sk >= 0) close (recv_sk); + if (iface->cease) + err = RET_DHCP_CEASED; return err; } /*****************************************************************************/ @@ -756,6 +759,8 @@ int dhcp_init (dhcp_interface *iface) err = dhcp_handle_transaction (iface, DHCP_OFFER, &build_dhcp_discover, &dhcp_resp2); if (err == RET_DHCP_SUCCESS) memcpy (&dhcp_resp, &dhcp_resp2, sizeof (dhcp_response_return)); + else if (err == RET_DHCP_CEASED) + return err; } iface->ciaddr = dhcp_resp.dhcp_msg.yiaddr; @@ -815,7 +820,7 @@ int dhcp_request(dhcp_interface *iface, dhcp_msg_build_proc buildDhcpMsg) ((unsigned char *)&(iface->ciaddr))[2], ((unsigned char *)&(iface->ciaddr))[3]); dhcpDecline (); iface->ciaddr = 0; - return RET_DHCP_ADDRESS_IN_USE; + return iface->cease ? RET_DHCP_CEASED : RET_DHCP_ADDRESS_IN_USE; } if (DebugFlag) @@ -830,7 +835,7 @@ int dhcp_request(dhcp_interface *iface, dhcp_msg_build_proc buildDhcpMsg) memcpy (&(iface->siaddr), iface->dhcp_options.val[dhcpServerIdentifier], 4); memcpy (iface->shaddr, dhcp_resp.server_hw_addr, ETH_ALEN); - return RET_DHCP_BOUND; + return iface->cease ? RET_DHCP_CEASED : RET_DHCP_BOUND; } /*****************************************************************************/ int dhcp_renew(dhcp_interface *iface) diff --git a/dhcpcd/udpipgen.c b/dhcpcd/udpipgen.c index a7d60cf93..6fb269dbc 100644 --- a/dhcpcd/udpipgen.c +++ b/dhcpcd/udpipgen.c @@ -69,9 +69,16 @@ void udpipgen (udpiphdr *udpip, unsigned int saddr, unsigned int daddr, unsigned memcpy (ip,(struct ip *)udpip->ip, sizeof (ip_local)); ip->ip_hl = 5; ip->ip_v = IPVERSION; - ip->ip_tos = 0; /* normal service */ + ip->ip_tos = IPTOS_LOWDELAY; ip->ip_len = htons (dhcp_msg_len + sizeof (udpiphdr)); + +/* Hmm, since the UDP packets shouldnt' be fragmented, ip_id = 0 */ +#if 0 ip->ip_id = htons (*ip_id); *ip_id++; +#else + ip->ip_id = 0; +#endif + ip->ip_off = 0; ip->ip_ttl = IPDEFTTL; /* time to live, 64 by default */ ip->ip_p = IPPROTO_UDP; diff --git a/src/nm-dbus-dhcp.c b/src/nm-dbus-dhcp.c index cb3189a0f..9d2b47fc9 100644 --- a/src/nm-dbus-dhcp.c +++ b/src/nm-dbus-dhcp.c @@ -46,6 +46,7 @@ static int nm_dbus_dhcp_record_type (int id) return DBUS_TYPE_BYTE; } g_assert_not_reached(); + return DBUS_TYPE_INVALID; } #define DBUS_REPLY_BYTYPE(Dtype, Ctype) do { \ diff --git a/test/nm-dhcp-opt-test.c b/test/nm-dhcp-opt-test.c index 732c0492f..8741f6396 100644 --- a/test/nm-dhcp-opt-test.c +++ b/test/nm-dhcp-opt-test.c @@ -57,6 +57,7 @@ static char *dbus_type_to_string (int type) return "string"; } g_assert_not_reached (); + return NULL; } @@ -190,8 +191,8 @@ void print_array (DBusConnection *connection, int opt, int opt_type) int *int32 = NULL; gboolean *bool = NULL; unsigned char *byte = NULL; - void *item; - char *method; + void *item = NULL; + char *method = NULL; int ret; const char *name = NULL; @@ -258,7 +259,7 @@ void print_one_item (DBusConnection *connection, int opt, int opt_type) unsigned char byte; char *string = NULL; void *item = NULL; - char *method; + char *method = NULL; int ret; const char *name = NULL;