2013-10-04 05:16:47 +04:00
/*
* Copyright ( c ) 2007 - 2013 Nicira , Inc .
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of version 2 of the GNU General Public
* License as published by the Free Software Foundation .
*
* This program is distributed in the hope that it will be useful , but
* WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
* General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 51 Franklin Street , Fifth Floor , Boston , MA
* 02110 - 1301 , USA
*/
# ifndef FLOW_NETLINK_H
# define FLOW_NETLINK_H 1
# include <linux/kernel.h>
# include <linux/netlink.h>
# include <linux/openvswitch.h>
# include <linux/spinlock.h>
# include <linux/types.h>
# include <linux/rcupdate.h>
# include <linux/if_ether.h>
# include <linux/in6.h>
# include <linux/jiffies.h>
# include <linux/time.h>
# include <linux/flex_array.h>
# include <net/inet_ecn.h>
# include <net/ip_tunnels.h>
# include "flow.h"
2014-11-06 17:51:24 +03:00
size_t ovs_tun_key_attr_size ( void ) ;
2014-10-19 03:14:14 +04:00
size_t ovs_key_attr_size ( void ) ;
2013-10-04 05:16:47 +04:00
void ovs_match_init ( struct sw_flow_match * match ,
struct sw_flow_key * key , struct sw_flow_mask * mask ) ;
2015-01-22 03:42:48 +03:00
int ovs_nla_put_key ( const struct sw_flow_key * , const struct sw_flow_key * ,
int attr , bool is_mask , struct sk_buff * ) ;
2015-08-26 21:31:52 +03:00
int ovs_nla_get_flow_metadata ( struct net * , const struct nlattr * ,
struct sw_flow_key * , bool log ) ;
2014-09-16 06:20:31 +04:00
2015-01-22 03:42:52 +03:00
int ovs_nla_put_identifier ( const struct sw_flow * flow , struct sk_buff * skb ) ;
int ovs_nla_put_masked_key ( const struct sw_flow * flow , struct sk_buff * skb ) ;
2015-01-22 03:42:48 +03:00
int ovs_nla_put_mask ( const struct sw_flow * flow , struct sk_buff * skb ) ;
2015-08-26 21:31:52 +03:00
int ovs_nla_get_match ( struct net * , struct sw_flow_match * ,
const struct nlattr * key , const struct nlattr * mask ,
bool log ) ;
2014-11-06 17:51:24 +03:00
int ovs_nla_put_egress_tunnel_key ( struct sk_buff * ,
2015-08-31 04:09:38 +03:00
const struct ip_tunnel_info * ,
const void * egress_tun_opts ) ;
2013-10-04 05:16:47 +04:00
2015-01-22 03:42:52 +03:00
bool ovs_nla_get_ufid ( struct sw_flow_id * , const struct nlattr * , bool log ) ;
int ovs_nla_get_identifier ( struct sw_flow_id * sfid , const struct nlattr * ufid ,
const struct sw_flow_key * key , bool log ) ;
u32 ovs_nla_get_ufid_flags ( const struct nlattr * attr ) ;
2015-08-26 21:31:48 +03:00
int ovs_nla_copy_actions ( struct net * net , const struct nlattr * attr ,
2014-10-06 16:05:13 +04:00
const struct sw_flow_key * key ,
2014-11-06 18:03:05 +03:00
struct sw_flow_actions * * sfa , bool log ) ;
2015-08-26 21:31:48 +03:00
int ovs_nla_add_action ( struct sw_flow_actions * * sfa , int attrtype ,
void * data , int len , bool log ) ;
2013-10-04 05:16:47 +04:00
int ovs_nla_put_actions ( const struct nlattr * attr ,
int len , struct sk_buff * skb ) ;
void ovs_nla_free_flow_actions ( struct sw_flow_actions * ) ;
2015-07-21 11:44:03 +03:00
void ovs_nla_free_flow_actions_rcu ( struct sw_flow_actions * ) ;
2013-10-04 05:16:47 +04:00
# endif /* flow_netlink.h */