/* $XORP: xorp/xrl/interfaces/fea_rawpkt6_client.xif,v 1.6 2007/05/10 22:56:59 pavlin Exp $ */

#include <xorp_config.h>

#ifdef HAVE_IPV6

/*
 * Interface for receiving IPv6 packets on a raw socket.
 */

interface raw_packet6_client/0.1 {
	/**
	 * Receive an IPv6 packet from a raw socket.
	 * 
	 * @param if_name the interface name the packet arrived on.
	 * @param vif_name the vif name the packet arrived on.
	 * @param src_address the IP source address.
	 * @param dst_address the IP destination address.
	 * @param ip_protocol the IP protocol number.
	 * @param ip_ttl the IP TTL (hop-limit). If it has a negative value,
	 *               then the received value is unknown.
	 * @param ip_tos the Type Of Service (IP traffic class for IPv4). If
	 *               it has a negative value, then the received value is
	 *               unknown.
	 * @param ip_router_alert if true, the IP Router Alert option was
	 *                        included in the IP packet.
	 * @param ip_internet_control if true, then this is IP control traffic.
	 * @param ext_headers_type a list of u32 integers with the types
	 *                         of the optional extention headers.
	 * @param ext_headers_payload a list of payload data, one for each
	 *                            optional extention header. The number
	 *                            of entries must match ext_headers_type.
	 * @param payload the payload, everything after the IP header and
	 *                options.
	 */
	recv	? if_name:txt						\
		& vif_name:txt						\
		& src_address:ipv6					\
		& dst_address:ipv6					\
		& ip_protocol:u32					\
		& ip_ttl:i32						\
		& ip_tos:i32						\
		& ip_router_alert:bool					\
		& ip_internet_control:bool				\
		& ext_headers_type:list<u32>				\
		& ext_headers_payload:list<binary>			\
		& payload:binary;
}

#endif //ipv6
