datapath
struct path datapath;
ovl_path_lowerdata(dentry, &datapath);
if (WARN_ON_ONCE(datapath.dentry == NULL) ||
old_file = ovl_path_open(&datapath, O_LARGEFILE | O_RDONLY);
struct ovl_path datapath = {};
err = ovl_lookup_data_layers(dentry, redirect, &datapath);
err = ovl_dentry_set_lowerdata(dentry, &datapath);
dput(datapath.dentry);
struct path *datapath)
datapath);
if (ovl_dentry_weird(datapath->dentry))
if (!d_is_reg(datapath->dentry))
path_put(datapath);
struct path datapath;
err = ovl_lookup_data_layer(dentry, redirect, layer, &datapath);
mntput(datapath.mnt);
lowerdata->dentry = datapath.dentry;
struct path datapath, metapath;
ovl_path_lowerdata(dentry, &datapath);
if (!datapath.dentry)
err = ovl_validate_verity(ofs, &metapath, &datapath);
int ovl_dentry_set_lowerdata(struct dentry *dentry, struct ovl_path *datapath);
const struct path *datapath);
int ovl_ensure_verity_loaded(const struct path *datapath)
struct inode *inode = d_inode(datapath->dentry);
filp = kernel_file_open(datapath, O_RDONLY, current_cred());
const struct path *datapath)
err = ovl_ensure_verity_loaded(datapath);
datapath->dentry);
digest_size = fsverity_get_digest(d_inode(datapath->dentry), actual_digest,
pr_warn_ratelimited("lower file '%pd' has no fs-verity digest\n", datapath->dentry);
datapath->dentry);
int ovl_dentry_set_lowerdata(struct dentry *dentry, struct ovl_path *datapath)
struct dentry *datadentry = datapath->dentry;
WRITE_ONCE(lowerdata->layer, datapath->layer);
static int execute_recirc(struct datapath *dp, struct sk_buff *skb,
static int execute_check_pkt_len(struct datapath *dp, struct sk_buff *skb,
static int clone_execute(struct datapath *dp, struct sk_buff *skb,
static void execute_psample(struct datapath *dp, struct sk_buff *skb,
static void execute_psample(struct datapath *dp, struct sk_buff *skb,
static int do_execute_actions(struct datapath *dp, struct sk_buff *skb,
static int do_execute_actions(struct datapath *dp, struct sk_buff *skb,
static int clone_execute(struct datapath *dp, struct sk_buff *skb,
static void process_deferred_actions(struct datapath *dp)
int ovs_execute_actions(struct datapath *dp, struct sk_buff *skb,
static void do_output(struct datapath *dp, struct sk_buff *skb, int out_port,
static int output_userspace(struct datapath *dp, struct sk_buff *skb,
static int dec_ttl_exception_handler(struct datapath *dp, struct sk_buff *skb,
static int sample(struct datapath *dp, struct sk_buff *skb,
static int clone(struct datapath *dp, struct sk_buff *skb,
struct datapath *dp;
struct datapath *dp;
static int queue_gso_packets(struct datapath *dp, struct sk_buff *,
static int queue_userspace_packet(struct datapath *dp, struct sk_buff *,
struct datapath *dp;
static int ovs_dp_set_upcall_portids(struct datapath *, const struct nlattr *);
const char *ovs_dp_name(const struct datapath *dp)
struct datapath *dp;
static int get_dpifindex(const struct datapath *dp)
struct datapath *dp;
static int ovs_dp_cmd_fill_info(struct datapath *dp, struct sk_buff *skb,
static struct datapath *lookup_datapath(struct net *net,
struct datapath *dp;
struct datapath *dp = container_of(rcu, struct datapath, rcu);
struct datapath *dp;
static int ovs_dp_set_upcall_portids(struct datapath *dp,
u32 ovs_dp_get_upcall_portid(const struct datapath *dp, uint32_t cpu_id)
static int ovs_dp_change(struct datapath *dp, struct nlattr *a[])
static struct hlist_head *vport_hash_bucket(const struct datapath *dp,
static int ovs_dp_stats_init(struct datapath *dp)
static int ovs_dp_vport_init(struct datapath *dp)
struct datapath *dp;
struct vport *ovs_lookup_vport(const struct datapath *dp, u16 port_no)
static void __dp_destroy(struct datapath *dp)
struct datapath *dp;
struct datapath *dp;
struct datapath *dp;
struct datapath *dp = parms->dp;
struct datapath *dp;
struct datapath *dp;
static unsigned int ovs_get_max_headroom(struct datapath *dp)
static void ovs_update_headroom(struct datapath *dp, unsigned int new_headroom)
struct datapath *dp;
struct datapath *dp;
struct datapath *dp = p->dp;
struct datapath *dp;
struct datapath *dp;
struct datapath *dp;
struct datapath *dp, *dp_next;
int ovs_dp_upcall(struct datapath *dp, struct sk_buff *skb,
static int queue_gso_packets(struct datapath *dp, struct sk_buff *skb,
static void pad_packet(struct datapath *dp, struct sk_buff *skb)
static int queue_userspace_packet(struct datapath *dp, struct sk_buff *skb,
struct datapath *dp;
static void get_dp_stats(const struct datapath *dp, struct ovs_dp_stats *stats,
static inline struct net *ovs_dp_get_net(const struct datapath *dp)
static inline void ovs_dp_set_net(struct datapath *dp, struct net *net)
struct vport *ovs_lookup_vport(const struct datapath *dp, u16 port_no);
static inline struct vport *ovs_vport_rcu(const struct datapath *dp, int port_no)
static inline struct vport *ovs_vport_ovsl_rcu(const struct datapath *dp, int port_no)
static inline struct vport *ovs_vport_ovsl(const struct datapath *dp, int port_no)
static inline struct datapath *get_dp_rcu(struct net *net, int dp_ifindex)
static inline struct datapath *get_dp(struct net *net, int dp_ifindex)
struct datapath *dp;
int ovs_dp_upcall(struct datapath *, struct sk_buff *,
u32 ovs_dp_get_upcall_portid(const struct datapath *dp, uint32_t cpu_id);
const char *ovs_dp_name(const struct datapath *dp);
int ovs_execute_actions(struct datapath *dp, struct sk_buff *skb,
struct datapath *dp;
struct datapath *dp;
struct datapath *dp;
struct datapath *dp;
struct datapath *dp;
struct datapath *dp;
bool ovs_meter_execute(struct datapath *dp, struct sk_buff *skb,
int ovs_meters_init(struct datapath *dp)
void ovs_meters_exit(struct datapath *dp)
struct datapath;
int ovs_meters_init(struct datapath *dp);
void ovs_meters_exit(struct datapath *dp);
bool ovs_meter_execute(struct datapath *dp, struct sk_buff *skb,
TP_PROTO(struct datapath *dp, struct sk_buff *skb,
TP_PROTO(struct datapath *dp, struct sk_buff *skb,
static struct net_device *get_dpdev(const struct datapath *dp)
struct datapath *dp;
struct datapath *dp;