61 lines · c
1// SPDX-License-Identifier: GPL-2.02#include <stdio.h>3#include <string.h>4 5#include <ynl.h>6 7#include "ovs_datapath-user.h"8 9int main(int argc, char **argv)10{11 struct ynl_sock *ys;12 int err;13 14 ys = ynl_sock_create(&ynl_ovs_datapath_family, NULL);15 if (!ys)16 return 1;17 18 if (argc > 1) {19 struct ovs_datapath_new_req *req;20 21 req = ovs_datapath_new_req_alloc();22 if (!req)23 goto err_close;24 25 ovs_datapath_new_req_set_upcall_pid(req, 1);26 ovs_datapath_new_req_set_name(req, argv[1]);27 28 err = ovs_datapath_new(ys, req);29 ovs_datapath_new_req_free(req);30 if (err)31 goto err_close;32 } else {33 struct ovs_datapath_get_req_dump *req;34 struct ovs_datapath_get_list *dps;35 36 printf("Dump:\n");37 req = ovs_datapath_get_req_dump_alloc();38 39 dps = ovs_datapath_get_dump(ys, req);40 ovs_datapath_get_req_dump_free(req);41 if (!dps)42 goto err_close;43 44 ynl_dump_foreach(dps, dp) {45 printf(" %s(%d): pid:%u cache:%u\n",46 dp->name, dp->_hdr.dp_ifindex,47 dp->upcall_pid, dp->masks_cache_size);48 }49 ovs_datapath_get_list_free(dps);50 }51 52 ynl_sock_destroy(ys);53 54 return 0;55 56err_close:57 fprintf(stderr, "YNL (%d): %s\n", ys->err.code, ys->err.msg);58 ynl_sock_destroy(ys);59 return 2;60}61