text: //
  // Copyright (c) 2017 Regents of the SIGNET lab, University of Padova.
  // All rights reserved.
  //
  // Redistribution and use in source and binary forms, with or without
  // modification, are permitted provided that the following conditions
  // are met:
  // 1. Redistributions of source code must retain the above copyright
  //    notice, this list of conditions and the following disclaimer.
  // 2. Redistributions in binary form must reproduce the above copyright
  //    notice, this list of conditions and the following disclaimer in the
  //    documentation and/or other materials provided with the distribution.
  // 3. Neither the name of the University of Padova (SIGNET lab) nor the
  //    names of its contributors may be used to endorse or promote products
  //    derived from this software without specific prior written permission.
  //
  // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
  // TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
  // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
  // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  //
  
  /**
   * @file   sun-hdr-ack.h
   * @author Giovanni Toso
   * @version 1.1.1
   *
   * \brief Provides the Ack Messages header description.
   *
   * Provides the Ack Messages header description.
   */
  
  #ifndef HDR_SUN_ACK_H
  #define HDR_SUN_ACK_H
  
  #include <packet.h>
  
  #define HDR_SUN_ACK(p) (hdr_sun_ack::access(p))
  
  extern packet_t PT_SUN_ACK;
  
  /**
   * <i>hdr_sun_ack</i> describes acks packets used by <i>UWSUN</i>.
   */
  typedef struct hdr_sun_ack {
  
  	int uid_; /**< Uid of the packet acked. */
  	static int offset_; /**< Required by the PacketHeaderManager. */
  
  	/**
  	 * Reference to the uid_ variable.
  	 */
  	inline int &
  	uid()
  	{
  		return uid_;
  	}
  
  	/**
  	 * Reference to the offset_ variable.
  	 */
  	inline static int &
  	offset()
  	{
  		return offset_;
  	}
  
  	inline static struct hdr_sun_ack *
  	access(const Packet *p)
  	{
  		return (struct hdr_sun_ack *) p->access(offset_);
  	}
  } hdr_sun_ack;
  
  #endif // HDR_SUN_ACK_H
  