openvswitch: export get_dp() API.
Later patches will invoke get_dp() outside of datapath.c. Export it. Signed-off-by: Andy Zhou <azhou@ovn.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
5794040647
commit
9602c01e57
@@ -142,35 +142,6 @@ static int queue_userspace_packet(struct datapath *dp, struct sk_buff *,
|
|||||||
const struct dp_upcall_info *,
|
const struct dp_upcall_info *,
|
||||||
uint32_t cutlen);
|
uint32_t cutlen);
|
||||||
|
|
||||||
/* Must be called with rcu_read_lock. */
|
|
||||||
static struct datapath *get_dp_rcu(struct net *net, int dp_ifindex)
|
|
||||||
{
|
|
||||||
struct net_device *dev = dev_get_by_index_rcu(net, dp_ifindex);
|
|
||||||
|
|
||||||
if (dev) {
|
|
||||||
struct vport *vport = ovs_internal_dev_get_vport(dev);
|
|
||||||
if (vport)
|
|
||||||
return vport->dp;
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The caller must hold either ovs_mutex or rcu_read_lock to keep the
|
|
||||||
* returned dp pointer valid.
|
|
||||||
*/
|
|
||||||
static inline struct datapath *get_dp(struct net *net, int dp_ifindex)
|
|
||||||
{
|
|
||||||
struct datapath *dp;
|
|
||||||
|
|
||||||
WARN_ON_ONCE(!rcu_read_lock_held() && !lockdep_ovsl_is_held());
|
|
||||||
rcu_read_lock();
|
|
||||||
dp = get_dp_rcu(net, dp_ifindex);
|
|
||||||
rcu_read_unlock();
|
|
||||||
|
|
||||||
return dp;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Must be called with rcu_read_lock or ovs_mutex. */
|
/* Must be called with rcu_read_lock or ovs_mutex. */
|
||||||
const char *ovs_dp_name(const struct datapath *dp)
|
const char *ovs_dp_name(const struct datapath *dp)
|
||||||
{
|
{
|
||||||
|
@@ -30,6 +30,7 @@
|
|||||||
#include "conntrack.h"
|
#include "conntrack.h"
|
||||||
#include "flow.h"
|
#include "flow.h"
|
||||||
#include "flow_table.h"
|
#include "flow_table.h"
|
||||||
|
#include "vport-internal_dev.h"
|
||||||
|
|
||||||
#define DP_MAX_PORTS USHRT_MAX
|
#define DP_MAX_PORTS USHRT_MAX
|
||||||
#define DP_VPORT_HASH_BUCKETS 1024
|
#define DP_VPORT_HASH_BUCKETS 1024
|
||||||
@@ -190,6 +191,36 @@ static inline struct vport *ovs_vport_ovsl(const struct datapath *dp, int port_n
|
|||||||
return ovs_lookup_vport(dp, port_no);
|
return ovs_lookup_vport(dp, port_no);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Must be called with rcu_read_lock. */
|
||||||
|
static inline struct datapath *get_dp_rcu(struct net *net, int dp_ifindex)
|
||||||
|
{
|
||||||
|
struct net_device *dev = dev_get_by_index_rcu(net, dp_ifindex);
|
||||||
|
|
||||||
|
if (dev) {
|
||||||
|
struct vport *vport = ovs_internal_dev_get_vport(dev);
|
||||||
|
|
||||||
|
if (vport)
|
||||||
|
return vport->dp;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The caller must hold either ovs_mutex or rcu_read_lock to keep the
|
||||||
|
* returned dp pointer valid.
|
||||||
|
*/
|
||||||
|
static inline struct datapath *get_dp(struct net *net, int dp_ifindex)
|
||||||
|
{
|
||||||
|
struct datapath *dp;
|
||||||
|
|
||||||
|
WARN_ON_ONCE(!rcu_read_lock_held() && !lockdep_ovsl_is_held());
|
||||||
|
rcu_read_lock();
|
||||||
|
dp = get_dp_rcu(net, dp_ifindex);
|
||||||
|
rcu_read_unlock();
|
||||||
|
|
||||||
|
return dp;
|
||||||
|
}
|
||||||
|
|
||||||
extern struct notifier_block ovs_dp_device_notifier;
|
extern struct notifier_block ovs_dp_device_notifier;
|
||||||
extern struct genl_family dp_vport_genl_family;
|
extern struct genl_family dp_vport_genl_family;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user