mirror of
https://github.com/openvswitch/ovs
synced 2025-10-13 14:07:02 +00:00
dpif: Make dpif_class 'open' function take class instead of type name.
This makes it easier for dpif_provider implementations to share code but distinguish the class actually in use, because comparing a pointer is easier than comparing a string.
This commit is contained in:
@@ -112,8 +112,8 @@ dpif_linux_enumerate(struct svec *all_dps)
|
||||
}
|
||||
|
||||
static int
|
||||
dpif_linux_open(const char *name, const char *type OVS_UNUSED, bool create,
|
||||
struct dpif **dpifp)
|
||||
dpif_linux_open(const struct dpif_class *class OVS_UNUSED, const char *name,
|
||||
bool create, struct dpif **dpifp)
|
||||
{
|
||||
int minor;
|
||||
|
||||
|
@@ -238,8 +238,8 @@ create_dp_netdev(const char *name, int dp_idx, struct dpif **dpifp)
|
||||
}
|
||||
|
||||
static int
|
||||
dpif_netdev_open(const char *name, const char *type OVS_UNUSED, bool create,
|
||||
struct dpif **dpifp)
|
||||
dpif_netdev_open(const struct dpif_class *class OVS_UNUSED, const char *name,
|
||||
bool create, struct dpif **dpifp)
|
||||
{
|
||||
if (create) {
|
||||
if (find_dp_netdev(name)) {
|
||||
|
@@ -90,13 +90,14 @@ struct dpif_class {
|
||||
|
||||
/* Attempts to open an existing dpif called 'name', if 'create' is false,
|
||||
* or to open an existing dpif or create a new one, if 'create' is true.
|
||||
* 'type' corresponds to the 'type' field used in the dpif_class
|
||||
* structure.
|
||||
*
|
||||
* If successful, stores a pointer to the new dpif in '*dpifp'. On failure
|
||||
* there are no requirements on what is stored in '*dpifp'. */
|
||||
int (*open)(const char *name, const char *type, bool create,
|
||||
struct dpif **dpifp);
|
||||
* 'dpif_class' is the class of dpif to open.
|
||||
*
|
||||
* If successful, stores a pointer to the new dpif in '*dpifp', which must
|
||||
* have class 'dpif_class'. On failure there are no requirements on what
|
||||
* is stored in '*dpifp'. */
|
||||
int (*open)(const struct dpif_class *dpif_class,
|
||||
const char *name, bool create, struct dpif **dpifp);
|
||||
|
||||
/* Closes 'dpif' and frees associated memory. */
|
||||
void (*close)(struct dpif *dpif);
|
||||
|
@@ -258,8 +258,10 @@ do_open(const char *name, const char *type, bool create, struct dpif **dpifp)
|
||||
goto exit;
|
||||
}
|
||||
|
||||
error = registered_class->dpif_class->open(name, type, create, &dpif);
|
||||
error = registered_class->dpif_class->open(registered_class->dpif_class,
|
||||
name, create, &dpif);
|
||||
if (!error) {
|
||||
assert(dpif->dpif_class == registered_class->dpif_class);
|
||||
registered_class->refcount++;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user