Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / ipxe / src / include / ipxe / dhcppkt.h
diff --git a/qemu/roms/ipxe/src/include/ipxe/dhcppkt.h b/qemu/roms/ipxe/src/include/ipxe/dhcppkt.h
new file mode 100644 (file)
index 0000000..3179a6b
--- /dev/null
@@ -0,0 +1,71 @@
+#ifndef _IPXE_DHCPPKT_H
+#define _IPXE_DHCPPKT_H
+
+/** @file
+ *
+ * DHCP packets
+ *
+ */
+
+FILE_LICENCE ( GPL2_OR_LATER );
+
+#include <ipxe/dhcp.h>
+#include <ipxe/dhcpopts.h>
+#include <ipxe/refcnt.h>
+
+/**
+ * A DHCP packet
+ *
+ */
+struct dhcp_packet {
+       /** Reference counter */
+       struct refcnt refcnt;
+       /** The DHCP packet contents */
+       struct dhcphdr *dhcphdr;
+       /** DHCP options */
+       struct dhcp_options options;
+       /** Settings interface */
+       struct settings settings;
+};
+
+/**
+ * Increment reference count on DHCP packet
+ *
+ * @v dhcppkt          DHCP packet
+ * @ret dhcppkt                DHCP packet
+ */
+static inline __attribute__ (( always_inline )) struct dhcp_packet *
+dhcppkt_get ( struct dhcp_packet *dhcppkt ) {
+       ref_get ( &dhcppkt->refcnt );
+       return dhcppkt;
+}
+
+/**
+ * Decrement reference count on DHCP packet
+ *
+ * @v dhcppkt          DHCP packet
+ */
+static inline __attribute__ (( always_inline )) void
+dhcppkt_put ( struct dhcp_packet *dhcppkt ) {
+       ref_put ( &dhcppkt->refcnt );
+}
+
+/**
+ * Get used length of DHCP packet
+ *
+ * @v dhcppkt          DHCP packet
+ * @ret len            Used length
+ */
+static inline int dhcppkt_len ( struct dhcp_packet *dhcppkt ) {
+       return ( offsetof ( struct dhcphdr, options ) +
+                dhcppkt->options.used_len );
+}
+
+extern int dhcppkt_store ( struct dhcp_packet *dhcppkt, unsigned int tag,
+                          const void *data, size_t len );
+extern int dhcppkt_fetch ( struct dhcp_packet *dhcppkt, unsigned int tag,
+                          void *data, size_t len );
+extern void dhcppkt_init ( struct dhcp_packet *dhcppkt, 
+                          struct dhcphdr *data, size_t len );
+
+#endif /* _IPXE_DHCPPKT_H */