* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+
#ifdef __APPLE__
# include <mach/mach_time.h>
# include <mach/kern_return.h>
* us smaller.
* As we don't use threads, this API is clean too. */
char *
-get_line(FILE * restrict fp)
+get_line(FILE * __restrict fp)
{
char *p, *e;
size_t last;
# define _unused
#endif
+/* We require a c99 compiler, but we need this define to satisfy lint */
+#ifndef __restrict
+# define __restrict restrict
+#endif
+
#ifndef HAVE_ARC4RANDOM
# ifdef __GLIBC__
uint32_t arc4random(void);
int set_cloexec(int);
int set_nonblock(int);
-char *get_line(FILE * restrict);
+char *get_line(FILE * __restrict);
extern int clock_monotonic;
int get_monotonic(struct timeval *);
time_t uptime(void);
#define CONFIG_H
#define PACKAGE "dhcpcd"
-#define VERSION "4.99.3"
+#define VERSION "4.99.4"
/* Some systems do not have a working fork. */
/* #define THERE_IS_NO_FORK */
}
}
+/* ARGSUSED */
static void
handle_control(_unused void *arg)
{
const char *name;
};
-static const struct dhcp_op const dhcp_ops[] = {
+static const struct dhcp_op dhcp_ops[] = {
{ DHCP_DISCOVER, "DHCP_DISCOVER" },
{ DHCP_OFFER, "DHCP_OFFER" },
{ DHCP_REQUEST, "DHCP_REQUEST" },
#endif
}
+/* ARGSUSED */
_noreturn void
handle_exit_timeout(_unused void *arg)
{
stop_interface(iface, "STOP");
}
+/* ARGSUSED */
static void
handle_link(_unused void *arg)
{
syslog(LOG_ERR, "manage_link: %m");
}
+/* ARGSUSED */
static void
handle_signal(_unused void *arg)
{
#include <limits.h>
#include "dhcp.h"
+#include "if-options.h"
#define HWADDR_LEN 20
#include <time.h>
-#include "dhcpcd.h"
-
void add_event(int fd, void (*)(void *), void *);
void delete_event(int fd);
void add_timeout_sec(time_t, void (*)(void *), void *);
return retval;
}
+/* ARGSUSED4 */
int
if_route(const struct interface *iface, const struct in_addr *dest,
const struct in_addr *net, const struct in_addr *gate,
valid_udp_packet(const uint8_t *data)
{
struct udp_dhcp_packet packet;
- uint16_t bytes;
- uint16_t ipsum;
- uint16_t iplen;
- uint16_t udpsum;
- struct in_addr source;
- struct in_addr dest;
+ uint16_t bytes, udpsum;
+ struct in_addr dest, source;
int retval = 0;
memcpy(&packet, data, sizeof(packet));
- bytes = ntohs(packet.ip.ip_len);
- ipsum = packet.ip.ip_sum;
- iplen = packet.ip.ip_len;
- udpsum = packet.udp.uh_sum;
-
- if (0 != checksum(&packet.ip, sizeof(packet.ip))) {
+ if (checksum(&packet.ip, sizeof(packet.ip)) != 0) {
errno = EINVAL;
return -1;
}
+ bytes = ntohs(packet.ip.ip_len);
packet.ip.ip_sum = 0;
memcpy(&source, &packet.ip.ip_src, sizeof(packet.ip.ip_src));
memcpy(&dest, &packet.ip.ip_dst, sizeof(packet.ip.ip_dst));
memset(&packet.ip, 0, sizeof(packet.ip));
+ udpsum = packet.udp.uh_sum;
packet.udp.uh_sum = 0;
packet.ip.ip_p = IPPROTO_UDP;
memcpy(&packet.ip.ip_src, &source, sizeof(packet.ip.ip_src));
memcpy(&packet.ip.ip_dst, &dest, sizeof(packet.ip.ip_dst));
packet.ip.ip_len = packet.udp.uh_ulen;
- if (udpsum && udpsum != checksum(&packet, bytes)) {
+ if (udpsum && checksum(&packet, bytes) != udpsum) {
errno = EINVAL;
retval = -1;
}