[ovs-dev] [PATCH/RFCv4 0/3] Add packet recirculation

2013-04-05 Thread Simon Horman
Recirculation is a technique to allow a frame to re-enter
frame processing. This is intended to be used after actions
have been applied to the frame with modify the frame in
some way that makes it possible for richer processing to occur.

An example is and indeed targeted use case is MPLS. If an MPLS frame has an
mpls_pop action applied with the IPv4 ethernet type then it becomes
possible to decode the IPv4 portion of the frame. This may be used to
construct a facet that modifies the IPv4 portion of the frame. This is not
possible prior to the mpls_pop action as the contents of the frame after
the MPLS stack is not known to be IPv4.

Design:
* New recirculation action.

  ovs-vswitchd adds a recirculation action to the end of a list of
  datapath actions for a flow when the actions are truncated because
  insufficient flow match information is available to add the next
  OpenFlow action.  The recirculation action is preceded by an action
  to set the skb_mark to an id which can be used to scope a facet lookup
  of a recirculated packet.

  e.g.  pop_mpls(0x0800),dec_ttl becomes 
pop_mpls(0x800),set(skb_mark(id)),recirculate

* Datapath behaviour

  Then the datapath encounters a recirculate action it:
  + Recalculates the flow key based on the packet
which will typically have been modified by previous actions
  + As the recirculate action is preceded by a set(skb_mark(id)) action,
the new match key will now include skb_mark=id.
  + Performs a lookup using the new match key
  + Processes the packet if a facet matches the key or;
  + Makes an upcall if necessary

* No facet behaviour

  + Loop:
1) translate actions
2) If there is a recirculate action, execute packet
   and go back to 1) for remaining actions.


Base/Pre-requisites:

This patch depends on [PATCH v2.24] datapath: Add basic MPLS support to 
kernel.
There are currently no other patches in the recirculation series.


Availability:

For reference this patch is available in git at:
git://github.com/horms/openvswitch.git devel/mpls-recirculate.rfc2


TODO:

* More sensible handling of recirculation IDs [ovs-vswtichd]
* More sensible lookup of facets based on recirculation IDs [ovs-vswtichd]


Change Log:

rfc4:
* Allow recirculation without facets in ovs-vswitchd
  - Handle flow miss without facet
  - Packet out
* Minor enhancement to recirculation id management: Add RECIRCULATE_ID_NONE
  to use instead of using 0 directly.
* Correct calculation of facet-recirculation_ofpacts and
  facet-recirculation_ofpacts_len in subfacet_make_actions()
  in the case of more than one level of recirculation.

rfc3
* Use IS_ERR_OR_NULL()
* Handle facet consistency checking by constructing a chain of facets
  from the given facet, to its recirculation parent and then its parent
  until the topmost facet.  If there is no recirculation  the chain will
  be of length one. If there is one recirculation action then the chain
  will be of length two. And so on.

  The topmost facet in the chain can is used to lookup the rule to be
  verified. The chain is then walked from top to bottom, translating
  actions up to the end or the first recirculation action that is
  encountered, whichever comes first. As the code walks down the chain
  it updates the actions that are executed to start of the actions to
  be executed to be just after the end of the actions executed in the
  previous facet in the chain. This is similar to the way that facets
  are created when a recirculation action is encountered.

rfc2
* As suggested by Jesse Gross
  - Update for changes to ovs_dp_process_received_packet()
to no longer check if OVS_CB(skb)-flow is pre-initialised.
  - Do not add spurious printk debugging to ovs_execute_actions()
  - Do not add spurious debugging messages to commit_set_nw_action()
  - Correct typo in comment above commit_odp_actions().
  - Do not execute recirculation in ovs-vswitchd, rather allow
the datapath to make an upcall when a recirculation action
is encountered on execute.
+ This implicitly breaks support for recirculation without facets,
  so for now force all misses of MPLS frames to be handled with
  a facet; and treat handling of recirculation for packet_out as
  a todo item.
  - Use skb_mark for recirculation_id in match. This avoids
both expanding the match and including a recirculation_id parameter
with the recirculation action: set_skb_mark should be used before
the recirculation action.
  - Tidy up ownership of skb in ovs_execute_actions

rfc1
* Initial post


Patch List:

Simon Horman (3):
  Add packet recirculation
  Move execute_set_action to lib/odp-util.c
  Allow recirculation without facets


Diffstat:

 datapath/actions.c  |9 +-
 datapath/datapath.c |   98 ++
 datapath/datapath.h |2 +-
 include/linux/openvswitch.h |4 +
 lib/dpif-netdev.c   |  153 ++-
 lib/flow.h  |3 +
 lib/odp-util.c  |   91 

[ovs-dev] [PATCH/RFCv4 3/3] Allow recirculation without facets

2013-04-05 Thread Simon Horman
This covers the following cases:

* Handle flow miss without facet
  - Previously the use of facets was forced if there was
any chance of a recirculation action. That is, for
all flows misses of MPLS packets.
* Packet Out

Signed-off-by: Simon Horman ho...@verge.net.au

---

rfc4
* Initial post
---
 ofproto/ofproto-dpif.c |  132 
 1 file changed, 111 insertions(+), 21 deletions(-)

diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
index 3d381b3..2c9e126 100644
--- a/ofproto/ofproto-dpif.c
+++ b/ofproto/ofproto-dpif.c
@@ -3540,6 +3540,64 @@ flow_miss_find(struct hmap *todo, const struct 
ofproto_dpif *ofproto,
 return NULL;
 }
 
+static void
+execute_actions_for_recircualtion(struct ofpbuf *packet,
+  const struct nlattr *actions,
+  size_t actions_len, uint32_t *skb_mark)
+{
+const struct nlattr *a;
+unsigned int left;
+
+NL_ATTR_FOR_EACH_UNSAFE (a, left, actions, actions_len) {
+int type = nl_attr_type(a);
+
+switch ((enum ovs_action_attr) type) {
+
+case OVS_ACTION_ATTR_PUSH_VLAN: {
+const struct ovs_action_push_vlan *vlan = nl_attr_get(a);
+eth_push_vlan(packet, vlan-vlan_tci);
+break;
+}
+
+case OVS_ACTION_ATTR_POP_VLAN:
+eth_pop_vlan(packet);
+break;
+
+case OVS_ACTION_ATTR_PUSH_MPLS: {
+const struct ovs_action_push_mpls *mpls = nl_attr_get(a);
+push_mpls(packet, mpls-mpls_ethertype, mpls-mpls_lse);
+break;
+ }
+
+case OVS_ACTION_ATTR_POP_MPLS:
+pop_mpls(packet, nl_attr_get_be16(a));
+break;
+
+case OVS_ACTION_ATTR_SET:
+execute_set_action(packet, nl_attr_get(a), skb_mark);
+break;
+
+case OVS_ACTION_ATTR_RECIRCULATE:
+if (packet-l2) {
+ofpbuf_push_uninit(packet, (char *)packet-l2 -
+   (char *)packet-data);
+}
+return;
+
+case OVS_ACTION_ATTR_OUTPUT:
+case OVS_ACTION_ATTR_USERSPACE:
+case OVS_ACTION_ATTR_SAMPLE:
+case OVS_ACTION_ATTR_UNSPEC:
+case __OVS_ACTION_ATTR_MAX:
+NOT_REACHED();
+}
+}
+
+/* There should always be a OVS_ACTION_ATTR_RECIRCULATE present
+ * in actions if this function is called */
+NOT_REACHED();
+}
+
 /* Partially Initializes 'op' as an execute operation for 'miss' and
  * 'packet'.  The caller must initialize op-actions and op-actions_len.  If
  * 'miss' is associated with a subfacet the caller must also initialize the
@@ -3601,15 +3659,6 @@ static bool
 flow_miss_should_make_facet(struct ofproto_dpif *ofproto,
 struct flow_miss *miss, uint32_t hash)
 {
-/* A facet is currently required to handle recirculation.
- * There currently isn't a good way to detect if recirculation will
- * occur or not. So in the mean time assume that it can't occur
- * for non-MPLS packets and it may occur for MPLS packets
- */
-if (eth_type_mpls(miss-flow.dl_type)) {
-return true;
-}
-
 if (!ofproto-governor) {
 size_t n_subfacets;
 
@@ -3641,6 +3690,50 @@ static uint32_t get_recirculate_id(void)
 return id++;
 }
 
+static const struct flow *
+xlate_with_recirculate(struct ofproto_dpif *ofproto, struct rule_dpif *rule,
+   const struct flow *flow, struct flow *flow_storage,
+   const struct initial_vals *initial_vals,
+   const struct ofpact *ofpacts, size_t ofpacts_len,
+   struct ofpbuf *odp_actions,
+   struct dpif_flow_stats *stats, struct ofpbuf *packet)
+{
+struct initial_vals initial_vals_ = *initial_vals;
+
+while (1) {
+struct action_xlate_ctx ctx;
+uint32_t skb_mark = flow-skb_mark;
+
+ofpbuf_clear(odp_actions);
+action_xlate_ctx_init(ctx, ofproto, flow, initial_vals_,
+  rule, stats-tcp_flags, packet,
+  RECIRCULATE_ID_NONE);
+ctx.resubmit_stats = stats;
+xlate_actions(ctx, ofpacts, ofpacts_len, odp_actions);
+
+if (ctx.recirculation_id == RECIRCULATE_ID_NONE) {
+break;
+}
+
+/* Update the packet */
+execute_actions_for_recircualtion(packet, odp_actions-data,
+  odp_actions-size, skb_mark);
+ofpbuf_clear(odp_actions);
+
+/* Replace the flow */
+flow_extract(packet, flow-skb_priority, skb_mark,
+ NULL, flow-in_port, flow_storage);
+flow = flow_storage;
+initial_vals_.vlan_tci = flow-vlan_tci;
+initial_vals_.tunnel_ip_tos = flow-tunnel.ip_tos;
+
+ofpacts = ofpact_end(ofpacts, ctx.ofpacts_len);
+ofpacts_len -= 

[ovs-dev] [PATCH/RFCv4 1/3] Add packet recirculation

2013-04-05 Thread Simon Horman
Recirculation is a technique to allow a frame to re-enter
frame processing. This is intended to be used after actions
have been applied to the frame with modify the frame in
some way that makes it possible for richer processing to occur.

An example is and indeed targeted use case is MPLS. If an MPLS frame has an
mpls_pop action applied with the IPv4 ethernet type then it becomes
possible to decode the IPv4 portion of the frame. This may be used to
construct a facet that modifies the IPv4 portion of the frame. This is not
possible prior to the mpls_pop action as the contents of the frame after
the MPLS stack is not known to be IPv4.

Design:
* New recirculation action.

  ovs-vswitchd adds a recirculation action to the end of a list of
  datapath actions for a flow when the actions are truncated because
  insufficient flow match information is available to add the next
  OpenFlow action.  The recirculation action is preceded by an action
  to set the skb_mark to an id which can be used to scope a facet lookup
  of a recirculated packet.

  e.g.  pop_mpls(0x0800),dec_ttl becomes 
pop_mpls(0x800),set(skb_mark(id)),recirculate

* Datapath behaviour

  Then the datapath encounters a recirculate action it:
  + Recalculates the flow key based on the packet
which will typically have been modified by previous actions
  + As the recirculate action is preceded by a set(skb_mark(id)) action,
the new match key will now include skb_mark=id.
  + Performs a lookup using the new match key
  + Processes the packet if a facet matches the key or;
  + Makes an upcall if necessary

Note that the implementation corresponding to the design above
currently requires facets to be used. It does not support packet out.

Signed-off-by: Simon Horman ho...@verge.net.au

---

This patch depends on [PATCH v2.24] datapath: Add basic MPLS support to 
kernel.
There are currently no other patches in the recirculation series.

TODO:

* More sensible handling of recirculation IDs [ovs-vswtichd]
* More sensible lookup of facets based on recirculation IDs [ovs-vswtichd]

rfc4
* Minor enhancement to recirculation id management: Add RECIRCULATE_ID_NONE
  to use instead of using 0 directly.
* Correct calculation of facet-recirculation_ofpacts and
  facet-recirculation_ofpacts_len in subfacet_make_actions()
  in the case of more than one level of recirculation.

rfc3
* Use IS_ERR_OR_NULL()
* Handle facet consistency checking by constructing a chain of facets
  from the given facet, to its recirculation parent and then its parent
  until the topmost facet.  If there is no recirculation  the chain will
  be of length one. If there is one recirculation action then the chain
  will be of length two. And so on.

  The topmost facet in the chain can is used to lookup the rule to be
  verified. The chain is then walked from top to bottom, translating
  actions up to the end or the first recirculation action that is
  encountered, whichever comes first. As the code walks down the chain
  it updates the actions that are executed to start of the actions to
  be executed to be just after the end of the actions executed in the
  previous facet in the chain. This is similar to the way that facets
  are created when a recirculation action is encountered.

rfc2
* As suggested by Jesse Gross
  - Update for changes to ovs_dp_process_received_packet()
to no longer check if OVS_CB(skb)-flow is pre-initialised.
  - Do not add spurious printk debugging to ovs_execute_actions()
  - Do not add spurious debugging messages to commit_set_nw_action()
  - Correct typo in comment above commit_odp_actions().
  - Do not execute recirculation in ovs-vswitchd, rather allow
the datapath to make an upcall when a recirculation action
is encountered on execute.
+ This implicitly breaks support for recirculation without facets,
  so for now force all misses of MPLS frames to be handled with
  a facet; and treat handling of recirculation for packet_out as
  a todo item.
  - Use skb_mark for recirculation_id in match. This avoids
both expanding the match and including a recirculation_id parameter
with the recirculation action: set_skb_mark should be used before
the recirculation action.
  - Tidy up ownership of skb in ovs_execute_actions

rfc1
* Initial post

fixes
---
 datapath/actions.c  |9 +-
 datapath/datapath.c |   98 +++-
 datapath/datapath.h |2 +-
 include/linux/openvswitch.h |4 +
 lib/dpif-netdev.c   |   89 +++
 lib/flow.h  |3 +
 lib/odp-util.c  |   15 +-
 lib/odp-util.h  |1 +
 ofproto/ofproto-dpif.c  |  348 +++
 9 files changed, 442 insertions(+), 127 deletions(-)

diff --git a/datapath/actions.c b/datapath/actions.c
index e9634fe..7b0f022 100644
--- a/datapath/actions.c
+++ b/datapath/actions.c
@@ -617,6 +617,9 @@ static int do_execute_actions(struct datapath *dp, struct 
sk_buff 

Re: [ovs-dev] [RFC PATCH 4/4] Add packet recirculation

2013-04-05 Thread Simon Horman
On Thu, Apr 04, 2013 at 11:21:33AM +0900, Simon Horman wrote:
 On Wed, Apr 03, 2013 at 05:55:46PM -0700, Jesse Gross wrote:
  On Wed, Apr 3, 2013 at 5:24 PM, Simon Horman ho...@verge.net.au wrote:
   On Wed, Apr 03, 2013 at 01:29:53PM -0700, Jesse Gross wrote:
   On Wed, Apr 3, 2013 at 6:05 AM, Simon Horman ho...@verge.net.au wrote:
On Wed, Apr 03, 2013 at 10:59:11AM +0900, Simon Horman wrote:
On Tue, Apr 02, 2013 at 05:24:40PM -0700, Jesse Gross wrote:
 On Fri, Mar 22, 2013 at 6:44 AM, Simon Horman ho...@verge.net.au 
 wrote:
  On Tue, Mar 19, 2013 at 09:01:27AM -0700, Jesse Gross wrote:
  On Mon, Mar 18, 2013 at 6:34 PM, Simon Horman 
  ho...@verge.net.au wrote:
   On Mon, Mar 18, 2013 at 01:49:43PM -0700, Jesse Gross wrote:
   However, do we actually want to tie this directly to 
   recirculation as
   opposed to as a separate action?  I see possible benefits of
   separating it out:
  
   I'm not really sure that I understand. Could you explain
   how you see this working?
 
  Just a set action plus recirculation with no argument.  
  Separating out
  the issues of reusing skb mark, this could be done today with
  something like:
  pass 1: match MPLS - pop_mpls, set(mark(X)), recirculate
  pass 2: match mark X, match MPLS - pop_mpls, recirculate
  pass 3: match mark X, match IP - output
 
  Thanks, I have a crude implementation of this working locally.
 
  I'm not sure what the implications are for the user-space 
  datapath.
  Though that is less of a priority for me than the kernel datapath.
   
Yes, I agree. I think I have something working there too.
   
 I think we could probably just add some kind of mark equivalent to 
 the
 userspace datapath.  It doesn't seem like it should be too 
 difficult.

  I am also concerned, though less so, about:
 
  * How to handle packet_out. Perhaps some kind of synthetic facet?
  * How to detect if recirculation will occur and thus force
a miss to be handled with a facet. For now I am just checking
if the packet MPLS or not, but it would be nice not to force 
  facets
unless necessary. Actually, it would be nice not to force the
use of facets at all.

 Long term, the right optimization is probably to handle all
 recirculation in userspace for these cases.  It will certainly help
 performance in situations without facets since that means that we're
 already stressed on flow setups and it would be good to not generate
 more trips through the kernel.  However, for the time being the best
 strategy seems like some kind of delayed allocation of facets to the
 time that we decide to do recirculation (unless we were going to
 create one anyways).
   
Thanks, I'll think about this some more.
   
Yes, I agree with your statement on performance.
That is exactly what I was thinking of too.
   
I am wondering if by handling recirculation in userspace you mean
that the packet should be modified, or in other words executed,
in userspace an then a fresh actions translation should occur?
  
   Right, we would end up doing all of the packet modifications and
   recirculations in userspace and the common case would be to just
   output in the kernel.
  
If so, this seems similar to the code that I had in rfc1 of
the recirculation patch. But it was rather complex in parts
as I tried to handle recirculation of misses with facets in user-space 
too.
And IIRC you asked me to remove it as you felt it duplicated datapath 
code.
   
I think it should be possible to handle recirculation of just cases 
without
facets in userspace in this way. But I'd like to confirm that is the
direction you have in mind.
  
   I think this is potentially tricky to get right in all of the corner
   cases and your new version of the patch is certainly easier to read.
   It seems to me that it would be better to get something in that is
   correct (and doesn't affect performance for situations that don't use
   this, which is why I suggested on demand allocation of facets).  We
   can then come back and optimize the performance after that.
  
   I agree that an incremental approach with smaller and more readable
   patches is desirable. And I believe that the behaviour in rfc2 and rfc3
   is correct for handle flow miss without facets as it forces flow miss
   with facets if there is any chance of recirculation.
  
   What I am a little unclear about is how to handle packet out,
   which currently seems to be far away from anything relating to facets.
   I wonder if an approach would be to make an add-on patch or patches
   which adds support for ovs-vswitchd to handle recirculation.
  
   I believe much of such a change would involve re-using packet execution 
   code
   that is already present for use by the user-space 

[ovs-dev] Invitation to connect on LinkedIn

2013-04-05 Thread Frank Zhang
LinkedIn




I'd like to add you to my professional network on LinkedIn.

- Frank

Frank Zhang
Sr.Software engineer at Citrix Systems
San Francisco Bay Area

Confirm that you know Frank Zhang:
https://www.linkedin.com/e/e2m9gr-hf51gq5f-5f/isd/12212022607/SP3xYKCH/?hs=falsetok=3KLwWfRYT7b5I1

--
You are receiving Invitation to Connect emails. Click to unsubscribe:
http://www.linkedin.com/e/e2m9gr-hf51gq5f-5f/z_iqrSb1gGA2VYr8bi0qFdWMrAt2nEn/goo/dev%40openvswitch%2Eorg/20061/I4046975204_1/?hs=falsetok=0ZbyT9p1L7b5I1

(c) 2012 LinkedIn Corporation. 2029 Stierlin Ct, Mountain View, CA 94043, USA.


  
___
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev


[ovs-dev] [PATCH 1.7] datapath: Fix compat layer to get datpath to compile with Red Hat Enterprise Linux 6.4

2013-04-05 Thread Thomas Graf
Not intended to be applied to branch-1.7 since 1.9.x is the new LTS but
posted here in case anybody wants to compile the 1.7 datapath on
Red Hat Enterprise Linux 6.4

Signed-off-by: Thomas Graf tg...@redhat.com
---
 acinclude.m4  | 6 ++
 datapath/linux/compat/include/linux/etherdevice.h | 2 ++
 datapath/linux/compat/include/linux/if_vlan.h | 3 ++-
 datapath/linux/compat/include/linux/skbuff.h  | 6 --
 4 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/acinclude.m4 b/acinclude.m4
index d33653d..7c3f250 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -214,6 +214,10 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
 
   OVS_GREP_IFELSE([$KSRC/include/linux/err.h], [ERR_CAST])
 
+  OVS_GREP_IFELSE([$KSRC/include/linux/etherdevice.h], [eth_hw_addr_random])
+
+  OVS_GREP_IFELSE([$KSRC/include/linux/if_vlan.h], [vlan_set_encap_proto])
+
   OVS_GREP_IFELSE([$KSRC/include/linux/in.h], [ipv4_is_multicast])
 
   OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [dev_disable_lro])
@@ -247,6 +251,8 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
   OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_warn_if_lro],
   [OVS_DEFINE([HAVE_SKB_WARN_LRO])])
   OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [consume_skb])
+  OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_frag_page])
+  OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_reset_mac_len])
 
   OVS_GREP_IFELSE([$KSRC/include/linux/string.h], [kmemdup], [],
   [OVS_GREP_IFELSE([$KSRC/include/linux/slab.h], [kmemdup])])
diff --git a/datapath/linux/compat/include/linux/etherdevice.h 
b/datapath/linux/compat/include/linux/etherdevice.h
index 7f04c96..d1cc79c 100644
--- a/datapath/linux/compat/include/linux/etherdevice.h
+++ b/datapath/linux/compat/include/linux/etherdevice.h
@@ -4,6 +4,7 @@
 #include linux/version.h
 #include_next linux/etherdevice.h
 
+#ifndef HAVE_ETH_HW_ADDR_RANDOM
 #if LINUX_VERSION_CODE  KERNEL_VERSION(2,6,36)
 static inline void eth_hw_addr_random(struct net_device *dev)
 {
@@ -15,5 +16,6 @@ static inline void eth_hw_addr_random(struct net_device *dev)
dev_hw_addr_random(dev, dev-dev_addr);
 }
 #endif
+#endif
 
 #endif
diff --git a/datapath/linux/compat/include/linux/if_vlan.h 
b/datapath/linux/compat/include/linux/if_vlan.h
index dc4b15e..c07844d 100644
--- a/datapath/linux/compat/include/linux/if_vlan.h
+++ b/datapath/linux/compat/include/linux/if_vlan.h
@@ -55,7 +55,8 @@ static inline struct sk_buff *__vlan_put_tag(struct sk_buff 
*skb, u16 vlan_tci)
 #define VLAN_TAG_PRESENT   VLAN_CFI_MASK
 #endif
 
-#if LINUX_VERSION_CODE  KERNEL_VERSION(3,3,0)
+#if LINUX_VERSION_CODE  KERNEL_VERSION(3,3,0)  \
+!defined HAVE_VLAN_SET_ENCAP_PROTO
 static inline void vlan_set_encap_proto(struct sk_buff *skb, struct vlan_hdr 
*vhdr)
 {
__be16 proto;
diff --git a/datapath/linux/compat/include/linux/skbuff.h 
b/datapath/linux/compat/include/linux/skbuff.h
index 01e524e..e314c6c 100644
--- a/datapath/linux/compat/include/linux/skbuff.h
+++ b/datapath/linux/compat/include/linux/skbuff.h
@@ -238,14 +238,16 @@ static inline bool skb_warn_if_lro(const struct sk_buff 
*skb)
 #define consume_skb kfree_skb
 #endif
 
-#if LINUX_VERSION_CODE  KERNEL_VERSION(3,2,0)
+#if LINUX_VERSION_CODE  KERNEL_VERSION(3,2,0)  \
+!defined HAVE_SKB_FRAG_PAGE
 static inline struct page *skb_frag_page(const skb_frag_t *frag)
 {
return frag-page;
 }
 #endif
 
-#if LINUX_VERSION_CODE  KERNEL_VERSION(2,6,40)
+#if LINUX_VERSION_CODE  KERNEL_VERSION(2,6,40)  \
+!defined HAVE_SKB_RESET_MAC_LEN
 static inline void skb_reset_mac_len(struct sk_buff *skb)
 {
skb-mac_len = skb-network_header - skb-mac_header;
-- 
1.7.11.7

___
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev


Regulariza��o de Penden�ias - ATEN��O CLIENTE ULTIMO AVISO.

2013-04-05 Thread Caixa Economica Federal
Title: Caixa Economica Federal











  



Caixa
Econmica Federal

Autenticao:
E20T05O17P

  





  



Prezado(a) Cliente:



  

  

A
Caixa Econmica Federal trabalha continuamente informando seu
cliente para  manter-lo sempre atualizado com o mais alto nvel
de segurana. 

 Verificamos todos os componentes do seu computador e encontramos
alguns dispositivos desatualizados, recomendamos sua
atualizao. As atualizaes de
segurana devem ser instalados em cada um dos computadores que
voc costuma utilizar para acessar o  Internet Bankline de
sua conta. 



  

  





  





  



  

  

  





  

  

  







  







  

  



Adeso de Segurana:  uma
soluo que torna mais seguro as
transaes que voc realiza 

  no auto-atendimento e da melhoria
contnua nos processos de proteo e privacidade
ao cliente.

  

  



  



  



  

  

  





  

  Microsoft Windows

  

  

  

  Mdulo Financiero

  

  

  

  Mdulo de Segurana

  

  

  

  Plugin de Segurana

  





  



  

  



  

  

  





  

Atualizado

  

  

  

Atualizado

  

  

  

  Desatualizado

  

  

  

  Desatualizado







  



  

  



  

  

  





  

  

  

  

  







  

  



  

  



Ativar dispositivo.

Para sua segurana voc ser
redirecionado para a pgina da Caixa Economica
Federal.

  

  

  



  

  



  



  



  





  



  



  

  





  





  





  





  

  

Ateno: Caso autenticidade desse
dispositivo de segurana  no seja confirmado, por
medidas de segurana sua conta ser suspensa para
o acesso ao Auto-Atendimento de sua conta pela Internet e o
desbloqueio poder ser realizado somente na
agncias de sua conta.

   

  





  



 Caixa Econmica Federal

  





  



  













___
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev


[ovs-dev] [PATCH] sparse: Support recent distributions

2013-04-05 Thread Andy Zhou
sparse support seems to be broken on some recent Linux distributions.
For example, ubuntu 12.04 with Linux 3.5 kernel, and Debian latest test
distribution, running Linux 3.2 kernel.

On both systems that sparse was broken, It was not able find the header files
in the  default system include directories.  GCC finds them by default.

This patch adds the required GCC default search path when running sparse.

Tested on:

Ubuntu 12.04 - w/ linux 3.5 kernel
Debian-6 March test distribution - w/ linux 3.2 kernel

Signed-off-by: Andy Zhou az...@nicira.com
---
 acinclude.m4 |   12 +++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/acinclude.m4 b/acinclude.m4
index 19a47dd..911a23d 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -478,13 +478,23 @@ AC_DEFUN([OVS_CHECK_SPARSE_TARGET],
AC_SUBST([SPARSEFLAGS])
AC_SUBST([CGCCFLAGS])])
 
+dnl OVS_SPARSE_EXTRA_INCLUDES
+dnl
+dnl The cgcc script from sparse does not search gcc's default
+dnl search path. Get the default search path from GCC and pass
+dnl them to sparse.
+AC_DEFUN([OVS_SPARSE_EXTRA_INCLUDES],
+AC_SUBST([SPARSE_EXTRA_INCLUDES],
+   [`$CC -v -E - /dev/null 21 /dev/null | sed -n -e 
'/^#include.*search.*starts.*here:/,/^End.*of.*search.*list\./s/^ \(.*\)/-I 
\1/p' |grep -v /usr/lib | grep -x -v '\-I /usr/include' | tr \\\n ' ' `] ))
+
 dnl OVS_ENABLE_SPARSE
 AC_DEFUN([OVS_ENABLE_SPARSE],
   [AC_REQUIRE([OVS_CHECK_SPARSE_TARGET])
AC_REQUIRE([OVS_CHECK_MAKE_IF])
+   AC_REQUIRE([OVS_SPARSE_EXTRA_INCLUDES])
: ${SPARSE=sparse}
AC_SUBST([SPARSE])
AC_CONFIG_COMMANDS_PRE(
  [if test $ovs_cv_gnu_make_if = yes; then
-CC='$(if $(C),REAL_CC='$CC' CHECK=$(SPARSE) -I 
$(top_srcdir)/include/sparse $(SPARSEFLAGS) cgcc $(CGCCFLAGS),'$CC')'
+CC='$(if $(C),REAL_CC='$CC' CHECK=$(SPARSE) -I 
$(top_srcdir)/include/sparse $(SPARSEFLAGS) $(SPARSE_EXTRA_INCLUDES)  cgcc 
$(CGCCFLAGS),'$CC')'
   fi])])
-- 
1.7.9.5

___
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev