12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #ifndef _GPXE_DHCPPKT_H
- #define _GPXE_DHCPPKT_H
-
- /** @file
- *
- * DHCP packets
- *
- */
-
- FILE_LICENCE ( GPL2_OR_LATER );
-
- #include <gpxe/dhcp.h>
- #include <gpxe/dhcpopts.h>
- #include <gpxe/refcnt.h>
-
- /**
- * A DHCP packet
- *
- */
- struct dhcp_packet {
- /** Reference counter */
- struct refcnt refcnt;
- /** The DHCP packet contents */
- struct dhcphdr *dhcphdr;
- /** Maximum length of the DHCP packet buffer */
- size_t max_len;
- /** Used length of the DHCP packet buffer */
- size_t len;
- /** 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 );
- }
-
- 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 /* _GPXE_DHCPPKT_H */
|