1/*
2 **************************************************************************
3 * Copyright (c) 2015, The Linux Foundation. All rights reserved.
4 * Permission to use, copy, modify, and/or distribute this software for
5 * any purpose with or without fee is hereby granted, provided that the
6 * above copyright notice and this permission notice appear in all copies.
7 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
13 * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14 **************************************************************************
15 */
16
17/*
18 * @file nss_nlipv4_if.h
19 *	NSS Netlink IPv4 headers
20 */
21#ifndef __NSS_NLIPV4_IF_H
22#define __NSS_NLIPV4_IF_H
23
24#include "nss_cmn.h"
25#include "nss_ipv4.h"
26
27/**
28 * IPv4 forwarding Family
29 */
30#define NSS_NLIPV4_FAMILY "nss_nlipv4"
31#define NSS_NLIPV4_MCAST_GRP "nss_nlipv4_mcast"
32
33#define NSS_NLIPV4_ARPHRD_IPSEC_TUNNEL_TYPE 0x31
34#define NSS_NLIPV4_VLAN_ID_NOT_CONFIGURED 0xFFF
35
36/**
37 * @brief IPv4 rule
38 */
39struct nss_nlipv4_rule {
40	struct nss_nlcmn cm;		/**< common message header */
41
42	char flow_ifname[IFNAMSIZ];	/**< ingress interface name */
43	char return_ifname[IFNAMSIZ];	/**< egress interface name */
44
45	struct nss_ipv4_msg nim;	/**< rule message */
46};
47
48/**
49 * @brief NETLINK IPv4 message init
50 *
51 * @param rule[IN] NSS NETLINK IPv4 rule
52 * @param type[IN] IPv4 message type
53 */
54static inline void nss_nlipv4_rule_init(struct nss_nlipv4_rule *rule, enum nss_ipv4_message_types type)
55{
56	nss_nlcmn_set_ver(&rule->cm, NSS_NL_VER);
57	nss_nlcmn_init_cmd(&rule->cm, sizeof(struct nss_nlipv4_rule), type);
58}
59
60#endif /* __NSS_NLIPV4_IF_H */
61