ofp-util: Reload ofpbuf pointers after nx_put_match().
[openvswitch] / lib / vlandev.h
1 /*
2  * Copyright (c) 2011 Nicira, Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at:
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #ifndef VLANDEV_H
18 #define VLANDEV_H 1
19
20 #include "hmap.h"
21
22 /* Linux VLAN device support (e.g. "eth0.10" for VLAN 10.)
23  *
24  * This is deprecated.  It is only for compatibility with broken device
25  * drivers in old versions of Linux that do not properly support VLANs when
26  * VLAN devices are not used.  When broken device drivers are no longer in
27  * widespread use, we will delete these interfaces. */
28
29 /* A VLAN device (e.g. "eth0.10" for VLAN 10 on eth0). */
30 struct vlan_dev {
31     struct vlan_real_dev *real_dev; /* Parent, e.g. "eth0". */
32     struct hmap_node hmap_node;     /* In vlan_real_dev's "vlan_devs" map. */
33     char *name;                     /* VLAN device name, e.g. "eth0.10". */
34     int vid;                        /* VLAN ID, e.g. 10. */
35 };
36
37 /* A device that has VLAN devices broken out of it. */
38 struct vlan_real_dev {
39     char *name;                 /* Name, e.g. "eth0". */
40     struct hmap vlan_devs;      /* All child VLAN devices, hashed by VID. */
41 };
42
43 int vlandev_refresh(void);
44
45 struct shash *vlandev_get_real_devs(void);
46
47 const char *vlandev_get_name(const char *real_dev_name, int vid);
48
49 int vlandev_add(const char *real_dev, int vid);
50 int vlandev_del(const char *vlan_dev);
51
52 #endif /* vlandev.h */