On Wed, Aug 27, 2014 at 4:13 AM, Andy Zhou <[email protected]> wrote:
> Future pathces will make use of those functions.
>
> Signed-off-by: Andy Zhou <[email protected]>
> ---
> datapath/Modules.mk | 1 +
> datapath/actions.c | 57
> +++++++++++++++++++++++++++++++++++++++++++++++++++++
> datapath/actions.h | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++
> datapath/datapath.c | 4 ++++
> datapath/datapath.h | 4 +---
> 5 files changed, 117 insertions(+), 3 deletions(-)
> create mode 100644 datapath/actions.h
>
....
> diff --git a/datapath/actions.h b/datapath/actions.h
> new file mode 100644
> index 0000000..5f98ad4
> --- /dev/null
> +++ b/datapath/actions.h
> @@ -0,0 +1,54 @@
> +/* Copyright (c) 2007-2014 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 ACTION_H
> +#define ACTION_H 1
> +
> +#include <linux/kernel.h>
> +#include <linux/mutex.h>
> +#include <linux/netdevice.h>
> +#include <linux/skbuff.h>
> +
> +#include "compat.h"
> +#include "flow.h"
> +#include "flow_table.h"
> +#include "vlan.h"
> +#include "vport.h"
> +
> +#define OVS_ACTION_STACK_LIMIT 10
> +
> +struct ovs_deferred_action {
> + struct sk_buff *skb;
> + struct nlattr *actions;
> + int rem;
> +
We can keep whole nested attribute so that no need to store netlink attr length.
> + /* Store pkt_key clone during recirc */
> + struct sw_flow_key pkt_key;
> +};
> +
> +struct ovs_action_stack {
> + /* Deffered action stack */
> + int top;
> + struct ovs_deferred_action stack[OVS_ACTION_STACK_LIMIT];
> +};
> +
> +void ovs_action_stacks_init(void);
> +void ovs_action_stacks_exit(void);;
> +int ovs_execute_actions(struct datapath *dp, struct sk_buff *skb, struct
> sw_flow_actions *acts);
> +void ovs_process_action_stack(void);
> +
Most of stack related are API can be static.
> +#endif /* actions.h */
> diff --git a/datapath/datapath.c b/datapath/datapath.c
> index a668222..b61e0ae 100644
> --- a/datapath/datapath.c
> +++ b/datapath/datapath.c
> @@ -61,6 +61,7 @@
> #include "vlan.h"
> #include "vport-internal_dev.h"
> #include "vport-netdev.h"
> +#include "actions.h"
>
> int ovs_net_id __read_mostly;
>
> @@ -2151,6 +2152,8 @@ static int __init dp_init(void)
> if (err < 0)
> goto error_unreg_notifier;
>
> + ovs_action_stacks_init();
> +
> return 0;
>
> error_unreg_notifier:
> @@ -2173,6 +2176,7 @@ static void dp_cleanup(void)
> rcu_barrier();
> ovs_vport_exit();
> ovs_flow_exit();
> + ovs_action_stacks_exit();
> }
>
> module_init(dp_init);
> diff --git a/datapath/datapath.h b/datapath/datapath.h
> index eba2fc4..dbe58d4 100644
> --- a/datapath/datapath.h
> +++ b/datapath/datapath.h
> @@ -31,6 +31,7 @@
> #include "flow_table.h"
> #include "vlan.h"
> #include "vport.h"
> +#include "actions.h"
>
> #define DP_MAX_PORTS USHRT_MAX
> #define DP_VPORT_HASH_BUCKETS 1024
> @@ -196,9 +197,6 @@ int ovs_dp_upcall(struct datapath *, struct sk_buff *,
> const char *ovs_dp_name(const struct datapath *dp);
> struct sk_buff *ovs_vport_cmd_build_info(struct vport *, u32 portid, u32 seq,
> u8 cmd);
> -
> -int ovs_execute_actions(struct datapath *dp, struct sk_buff *skb,
> - struct sw_flow_actions *acts);
> void ovs_dp_notify_wq(struct work_struct *work);
>
> #define OVS_NLERR(fmt, ...) \
> --
> 1.9.1
>
> _______________________________________________
> dev mailing list
> [email protected]
> http://openvswitch.org/mailman/listinfo/dev
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev