X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fdpif.h;h=1a6ca0538739d33702334d79c57c3b62ddac0b2e;hb=efb80167f7ebf51456df2940e3b42376ecbceb61;hp=f2a9c48991063779f60b1318b209124db23c8252;hpb=a12b3eadc64573c132e3630c5602be3c9b7f7156;p=openvswitch diff --git a/lib/dpif.h b/lib/dpif.h index f2a9c489..1a6ca053 100644 --- a/lib/dpif.h +++ b/lib/dpif.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks. + * Copyright (c) 2008, 2009, 2010, 2011, 2012 Nicira Networks. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -128,7 +128,7 @@ struct dpif_flow_stats { uint8_t tcp_flags; }; -void dpif_flow_stats_extract(const struct flow *, struct ofpbuf *packet, +void dpif_flow_stats_extract(const struct flow *, const struct ofpbuf *packet, struct dpif_flow_stats *); void dpif_flow_stats_format(const struct dpif_flow_stats *, struct ds *); @@ -181,8 +181,6 @@ enum dpif_op_type { }; struct dpif_flow_put { - enum dpif_op_type type; /* Always DPIF_OP_FLOW_PUT. */ - /* Input. */ enum dpif_flow_put_flags flags; /* DPIF_FP_*. */ const struct nlattr *key; /* Flow to put. */ @@ -192,30 +190,26 @@ struct dpif_flow_put { /* Output. */ struct dpif_flow_stats *stats; /* Optional flow statistics. */ - int error; /* 0 or positive errno value. */ }; struct dpif_execute { - enum dpif_op_type type; /* Always DPIF_OP_EXECUTE. */ - - /* Input. */ const struct nlattr *key; /* Partial flow key (only for metadata). */ size_t key_len; /* Length of 'key' in bytes. */ const struct nlattr *actions; /* Actions to execute on packet. */ size_t actions_len; /* Length of 'actions' in bytes. */ const struct ofpbuf *packet; /* Packet to execute. */ - - /* Output. */ - int error; /* 0 or positive errno value. */ }; -union dpif_op { +struct dpif_op { enum dpif_op_type type; - struct dpif_flow_put flow_put; - struct dpif_execute execute; + int error; + union { + struct dpif_flow_put flow_put; + struct dpif_execute execute; + } u; }; -void dpif_operate(struct dpif *, union dpif_op **ops, size_t n_ops); +void dpif_operate(struct dpif *, struct dpif_op **ops, size_t n_ops); /* Upcalls. */