author | Mark Haywood <Mark.Haywood@Oracle.COM> |
Mon, 16 Nov 2015 16:49:19 -0500 | |
changeset 5090 | 5f131162e136 |
child 5918 | 3cbac9806123 |
permissions | -rw-r--r-- |
5090
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
1 |
/* |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
2 |
* CDDL HEADER START |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
3 |
* |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
4 |
* The contents of this file are subject to the terms of the |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
5 |
* Common Development and Distribution License (the "License"). |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
6 |
* You may not use this file except in compliance with the License. |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
7 |
* |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
8 |
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
9 |
* or http://www.opensolaris.org/os/licensing. |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
10 |
* See the License for the specific language governing permissions |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
11 |
* and limitations under the License. |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
12 |
* |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
13 |
* When distributing Covered Code, include this CDDL HEADER in each |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
14 |
* file and include the License file at usr/src/OPENSOLARIS.LICENSE. |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
15 |
* If applicable, add the following below this CDDL HEADER, with the |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
16 |
* fields enclosed by brackets "[]" replaced with your own identifying |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
17 |
* information: Portions Copyright [yyyy] [name of copyright owner] |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
18 |
* |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
19 |
* CDDL HEADER END |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
20 |
*/ |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
21 |
|
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
22 |
/* |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
23 |
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
24 |
*/ |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
25 |
|
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
26 |
#ifndef UTIL_SOLARIS_H |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
27 |
#define UTIL_SOLARIS_H |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
28 |
|
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
29 |
#include <libdladm.h> |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
30 |
#include <linux/openvswitch.h> |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
31 |
#include <lib/packets.h> |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
32 |
#include <sys/types.h> |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
33 |
#include <kstat2.h> |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
34 |
#include "odp-util.h" |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
35 |
|
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
36 |
extern kstat2_handle_t khandle; |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
37 |
|
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
38 |
/* |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
39 |
* These functions are Solaris specific, so they should be used directly |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
40 |
* only by Solaris-specific code. |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
41 |
*/ |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
42 |
|
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
43 |
struct action_output { |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
44 |
int nofports; |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
45 |
uint32_t ofports[MAC_OF_MAXPORT]; |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
46 |
}; |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
47 |
|
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
48 |
struct action_set { |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
49 |
uint_t flags; |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
50 |
uint_t priority; |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
51 |
}; |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
52 |
|
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
53 |
#define FLOW_SET_PRIORITY 0x1 |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
54 |
#define MAX_FLOW_ACTIONS 64 |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
55 |
|
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
56 |
struct flow; |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
57 |
struct nlattr; |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
58 |
|
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
59 |
int solaris_dladm_status2error(dladm_status_t); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
60 |
int solaris_if_enabled(int, const char *, uint64_t *); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
61 |
int solaris_init_rad(void); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
62 |
int solaris_get_dlclass(const char *, char *, size_t); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
63 |
int solaris_get_devname(const char *, char *, size_t); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
64 |
int solaris_get_dllower(const char *, char *, size_t); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
65 |
int solaris_get_dlprop(const char *, const char *, const char *, char *, |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
66 |
size_t); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
67 |
int solaris_set_dlprop_ulong(const char *, const char *, void *); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
68 |
int solaris_set_dlprop_boolean(const char *, const char *, void *); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
69 |
int solaris_set_dlprop_string(const char *, const char *, void *); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
70 |
int solaris_plumb_if(int, const char *, sa_family_t); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
71 |
int solaris_unplumb_if(int, const char *, sa_family_t); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
72 |
boolean_t dlparse_drvppa(const char *, char *, uint_t, uint_t *); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
73 |
|
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
74 |
int solaris_create_vnic(const char *, const char *); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
75 |
int solaris_delete_vnic(const char *); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
76 |
int solaris_modify_vnic(const char *, const char *); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
77 |
int solaris_create_etherstub(const char *); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
78 |
int solaris_delete_etherstub(const char *); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
79 |
boolean_t solaris_etherstub_exists(const char *); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
80 |
|
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
81 |
/* void * since struct dpif causes conflict with the list implementation */ |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
82 |
int solaris_add_flow(void *, const char *, const char *, struct flow *, |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
83 |
struct flow *, const struct nlattr *, size_t); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
84 |
int solaris_modify_flow(void *, const char *, const struct nlattr *, size_t); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
85 |
int solaris_remove_flow(const char *, const char *); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
86 |
int solaris_get_flowattr(const char *, struct flow *, struct flow *); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
87 |
int solaris_get_flowaction(const char *, struct ofpbuf *); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
88 |
void slowpath_to_actions(enum slow_path_reason, struct ofpbuf *); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
89 |
int solaris_get_flowstats(const char *, uint64_t *, uint64_t *, uint64_t *); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
90 |
|
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
91 |
boolean_t kstat_handle_init(kstat2_handle_t *); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
92 |
boolean_t kstat_handle_update(kstat2_handle_t); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
93 |
void kstat_handle_close(kstat2_handle_t *); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
94 |
uint64_t get_nvvt_int(kstat2_map_t, char *); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
95 |
|
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
96 |
void solaris_port_walk(void *, void (*)(void *, const char *, char *, |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
97 |
odp_port_t)); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
98 |
uint64_t solaris_flow_walk(void *, struct ofpbuf *, boolean_t, |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
99 |
void (*)(void *, const char *, boolean_t, struct flow *, struct flow *, |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
100 |
struct ofpbuf *, uint64_t, uint64_t, uint64_t)); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
101 |
|
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
102 |
boolean_t solaris_is_uplink_class(const char *); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
103 |
boolean_t solaris_dlparse_zonelinkname(const char *, char *, zoneid_t *); |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
104 |
|
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
105 |
|
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
106 |
#define SOLARIS_MAX_BUFSIZE 1024 |
5f131162e136
PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff
changeset
|
107 |
#endif /* UTIL_SOLARIS_H */ |