From 898c648b71e713f64b5912c070fb362932c1b561 Mon Sep 17 00:00:00 2001 From: Asias He Date: Sun, 17 Jul 2011 16:56:52 +0800 Subject: [PATCH] kvm tools: Add helpers to tell the type of a DHCP message If DHCP DISCOVER or DHCP REQUEST is found, reply with DHCP OFFER or DHCP ACK respectively. Signed-off-by: Asias He Signed-off-by: Pekka Enberg --- tools/kvm/include/kvm/uip.h | 6 ++++++ tools/kvm/net/uip/dhcp.c | 14 ++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/tools/kvm/include/kvm/uip.h b/tools/kvm/include/kvm/uip.h index 7c84deab8fc8..6534c7f19e95 100644 --- a/tools/kvm/include/kvm/uip.h +++ b/tools/kvm/include/kvm/uip.h @@ -38,6 +38,12 @@ #define UIP_DHCP_MAGIC_COOKIE 0x63825363 #define UIP_DHCP_MAGIC_COOKIE_LEN 4 #define UIP_DHCP_OPTION_LEN (UIP_DHCP_VENDOR_SPECIFIC_LEN - UIP_DHCP_MAGIC_COOKIE_LEN) +#define UIP_DHCP_DISCOVER 1 +#define UIP_DHCP_OFFER 2 +#define UIP_DHCP_REQUEST 3 +#define UIP_DHCP_ACK 5 +#define UIP_DHCP_TAG_MSG_TYPE 53 +#define UIP_DHCP_TAG_MSG_TYPE_LEN 1 /* * IP package maxium len == 64 KBytes * IP header == 20 Bytes diff --git a/tools/kvm/net/uip/dhcp.c b/tools/kvm/net/uip/dhcp.c index af0407fb2fe5..0a6293a1edff 100644 --- a/tools/kvm/net/uip/dhcp.c +++ b/tools/kvm/net/uip/dhcp.c @@ -1,5 +1,19 @@ #include "kvm/uip.h" +static inline bool uip_dhcp_is_discovery(struct uip_dhcp *dhcp) +{ + return (dhcp->option[2] == UIP_DHCP_DISCOVER && + dhcp->option[1] == UIP_DHCP_TAG_MSG_TYPE_LEN && + dhcp->option[0] == UIP_DHCP_TAG_MSG_TYPE); +} + +static inline bool uip_dhcp_is_request(struct uip_dhcp *dhcp) +{ + return (dhcp->option[2] == UIP_DHCP_REQUEST && + dhcp->option[1] == UIP_DHCP_TAG_MSG_TYPE_LEN && + dhcp->option[0] == UIP_DHCP_TAG_MSG_TYPE); +} + bool uip_udp_is_dhcp(struct uip_udp *udp) { struct uip_dhcp *dhcp; -- 2.39.5