61 lines
1.2 KiB
C
61 lines
1.2 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
#include <ynl.h>
|
|
|
|
#include "ovs_datapath-user.h"
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
struct ynl_sock *ys;
|
|
int err;
|
|
|
|
ys = ynl_sock_create(&ynl_ovs_datapath_family, NULL);
|
|
if (!ys)
|
|
return 1;
|
|
|
|
if (argc > 1) {
|
|
struct ovs_datapath_new_req *req;
|
|
|
|
req = ovs_datapath_new_req_alloc();
|
|
if (!req)
|
|
goto err_close;
|
|
|
|
ovs_datapath_new_req_set_upcall_pid(req, 1);
|
|
ovs_datapath_new_req_set_name(req, argv[1]);
|
|
|
|
err = ovs_datapath_new(ys, req);
|
|
ovs_datapath_new_req_free(req);
|
|
if (err)
|
|
goto err_close;
|
|
} else {
|
|
struct ovs_datapath_get_req_dump *req;
|
|
struct ovs_datapath_get_list *dps;
|
|
|
|
printf("Dump:\n");
|
|
req = ovs_datapath_get_req_dump_alloc();
|
|
|
|
dps = ovs_datapath_get_dump(ys, req);
|
|
ovs_datapath_get_req_dump_free(req);
|
|
if (!dps)
|
|
goto err_close;
|
|
|
|
ynl_dump_foreach(dps, dp) {
|
|
printf(" %s(%d): pid:%u cache:%u\n",
|
|
dp->name, dp->_hdr.dp_ifindex,
|
|
dp->upcall_pid, dp->masks_cache_size);
|
|
}
|
|
ovs_datapath_get_list_free(dps);
|
|
}
|
|
|
|
ynl_sock_destroy(ys);
|
|
|
|
return 0;
|
|
|
|
err_close:
|
|
fprintf(stderr, "YNL (%d): %s\n", ys->err.code, ys->err.msg);
|
|
ynl_sock_destroy(ys);
|
|
return 2;
|
|
}
|