2
0
mirror of https://github.com/openvswitch/ovs synced 2025-10-27 15:18:06 +00:00
Files
openvswitch/lib/dpif-linux.h
Pravin Shelar f613a0d72c datapath: Always use generic stats for devices (vports)
Currently ovs is using device stats for Linux devices and count them
itself in other situations. This leads to overlap with hardware stats,
inconsistencies, etc. It's much better to just always count the packets
flowing through the switch and let userspace do any merging that it wants.

Following patch removes vport->get_stats() interface. vport-stat is changed
to use new `struct ovs_vport_stat` rather than rtnl_link_stats64.
Definitions of rtnl_link_stats64 is removed from OVS.  dipf_port->stat is also
removed as aggregate stats are only available at netdev layer.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
2011-09-15 19:36:17 -07:00

58 lines
1.9 KiB
C

/*
* Copyright (c) 2010, 2011 Nicira Networks.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef DPIF_LINUX_H
#define DPIF_LINUX_H 1
#include <stdbool.h>
#include <stdint.h>
#include "openvswitch/datapath-protocol.h"
struct ofpbuf;
struct dpif_linux_vport {
/* Generic Netlink header. */
uint8_t cmd;
/* ovs_vport header. */
int dp_ifindex;
uint32_t port_no; /* UINT32_MAX if unknown. */
enum ovs_vport_type type;
/* Attributes. */
const char *name; /* OVS_VPORT_ATTR_NAME. */
const struct ovs_vport_stats *stats; /* OVS_VPORT_ATTR_STATS. */
const uint8_t *address; /* OVS_VPORT_ATTR_ADDRESS. */
const struct nlattr *options; /* OVS_VPORT_ATTR_OPTIONS. */
size_t options_len;
int ifindex; /* OVS_VPORT_ATTR_IFINDEX. */
};
void dpif_linux_vport_init(struct dpif_linux_vport *);
int dpif_linux_vport_transact(const struct dpif_linux_vport *request,
struct dpif_linux_vport *reply,
struct ofpbuf **bufp);
int dpif_linux_vport_get(const char *name, struct dpif_linux_vport *reply,
struct ofpbuf **bufp);
bool dpif_linux_is_internal_device(const char *name);
int dpif_linux_vport_send(int dp_ifindex, uint32_t port_no,
const void *data, size_t size);
#endif /* dpif-linux.h */