From: Ben Pfaff Date: Sat, 13 Jun 2015 22:08:31 +0000 (-0700) Subject: dpif: Generalize test for dummy dpifs beyond the name. X-Git-Tag: v2.5.0~1054 X-Git-Url: http://git.cascardo.eti.br/?a=commitdiff_plain;h=c4ea752900e12053ca65d0868d47901d251b29eb;p=cascardo%2Fovs.git dpif: Generalize test for dummy dpifs beyond the name. When --enable-dummy=system or --enable-dummy=override is in use, dpifs other than "dummy" are actually dummy dpifs, so use a more reliable test. Signed-off-by: Ben Pfaff Acked-by: Alex Wang --- diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index 5b82c8b63..d306f776a 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -519,10 +519,17 @@ emc_cache_slow_sweep(struct emc_cache *flow_cache) flow_cache->sweep_idx = (flow_cache->sweep_idx + 1) & EM_FLOW_HASH_MASK; } +/* Returns true if 'dpif' is a netdev or dummy dpif, false otherwise. */ +bool +dpif_is_netdev(const struct dpif *dpif) +{ + return dpif->dpif_class->open == dpif_netdev_open; +} + static struct dpif_netdev * dpif_netdev_cast(const struct dpif *dpif) { - ovs_assert(dpif->dpif_class->open == dpif_netdev_open); + ovs_assert(dpif_is_netdev(dpif)); return CONTAINER_OF(dpif, struct dpif_netdev, dpif); } diff --git a/lib/dpif-netdev.h b/lib/dpif-netdev.h index 5428b31a0..9e2dd23fc 100644 --- a/lib/dpif-netdev.h +++ b/lib/dpif-netdev.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc. + * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2015 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -40,6 +40,8 @@ static inline void dp_packet_pad(struct dp_packet *p) } } +bool dpif_is_netdev(const struct dpif *); + #define NR_QUEUE 1 #define NR_PMD_THREADS 1 diff --git a/lib/dpif.c b/lib/dpif.c index 783a715fb..6e26f30fd 100644 --- a/lib/dpif.c +++ b/lib/dpif.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014 Nicira, Inc. + * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,6 +26,7 @@ #include "coverage.h" #include "dpctl.h" #include "dp-packet.h" +#include "dpif-netdev.h" #include "dynamic-string.h" #include "flow.h" #include "netdev.h" @@ -1705,6 +1706,5 @@ log_flow_get_message(const struct dpif *dpif, const struct dpif_flow_get *get, bool dpif_supports_tnl_push_pop(const struct dpif *dpif) { - return !strcmp(dpif->dpif_class->type, "netdev") || - !strcmp(dpif->dpif_class->type, "dummy"); + return dpif_is_netdev(dpif); }