1d62bc4baSyz147064 /* 2d62bc4baSyz147064 * CDDL HEADER START 3d62bc4baSyz147064 * 4d62bc4baSyz147064 * The contents of this file are subject to the terms of the 5d62bc4baSyz147064 * Common Development and Distribution License (the "License"). 6d62bc4baSyz147064 * You may not use this file except in compliance with the License. 7d62bc4baSyz147064 * 8d62bc4baSyz147064 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9d62bc4baSyz147064 * or http://www.opensolaris.org/os/licensing. 10d62bc4baSyz147064 * See the License for the specific language governing permissions 11d62bc4baSyz147064 * and limitations under the License. 12d62bc4baSyz147064 * 13d62bc4baSyz147064 * When distributing Covered Code, include this CDDL HEADER in each 14d62bc4baSyz147064 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15d62bc4baSyz147064 * If applicable, add the following below this CDDL HEADER, with the 16d62bc4baSyz147064 * fields enclosed by brackets "[]" replaced with your own identifying 17d62bc4baSyz147064 * information: Portions Copyright [yyyy] [name of copyright owner] 18d62bc4baSyz147064 * 19d62bc4baSyz147064 * CDDL HEADER END 20d62bc4baSyz147064 */ 21d62bc4baSyz147064 /* 22d62bc4baSyz147064 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 23d62bc4baSyz147064 * Use is subject to license terms. 24d62bc4baSyz147064 */ 25d62bc4baSyz147064 26d62bc4baSyz147064 #include <libdlvlan.h> 27da14cebeSEric Cheng #include <libdlvnic.h> 28d62bc4baSyz147064 29d62bc4baSyz147064 /* 30d62bc4baSyz147064 * VLAN Administration Library. 31d62bc4baSyz147064 * 32d62bc4baSyz147064 * This library is used by administration tools such as dladm(1M) to 33d62bc4baSyz147064 * configure VLANs. 34d62bc4baSyz147064 */ 35d62bc4baSyz147064 36d62bc4baSyz147064 /* 37d62bc4baSyz147064 * Returns the current attributes of the specified VLAN. 38d62bc4baSyz147064 */ 39d62bc4baSyz147064 dladm_status_t 40*4ac67f02SAnurag S. Maskey dladm_vlan_info(dladm_handle_t handle, datalink_id_t vlanid, 41*4ac67f02SAnurag S. Maskey dladm_vlan_attr_t *dvap, uint32_t flags) 42d62bc4baSyz147064 { 43d62bc4baSyz147064 dladm_status_t status; 44da14cebeSEric Cheng dladm_vnic_attr_t attr, *vnic = &attr; 45d62bc4baSyz147064 46*4ac67f02SAnurag S. Maskey if ((status = dladm_vnic_info(handle, vlanid, vnic, flags)) != 47da14cebeSEric Cheng DLADM_STATUS_OK) 48d62bc4baSyz147064 return (status); 49d62bc4baSyz147064 50da14cebeSEric Cheng dvap->dv_vid = vnic->va_vid; 51da14cebeSEric Cheng dvap->dv_linkid = vnic->va_link_id; 52da14cebeSEric Cheng dvap->dv_force = vnic->va_force; 53d62bc4baSyz147064 return (status); 54d62bc4baSyz147064 } 55d62bc4baSyz147064 56d62bc4baSyz147064 /* 57d62bc4baSyz147064 * Create a VLAN on given link. 58d62bc4baSyz147064 */ 59d62bc4baSyz147064 dladm_status_t 60*4ac67f02SAnurag S. Maskey dladm_vlan_create(dladm_handle_t handle, const char *vlan, datalink_id_t linkid, 61*4ac67f02SAnurag S. Maskey uint16_t vid, dladm_arg_list_t *proplist, uint32_t flags, 62*4ac67f02SAnurag S. Maskey datalink_id_t *vlan_id_out) 63d62bc4baSyz147064 { 64*4ac67f02SAnurag S. Maskey return (dladm_vnic_create(handle, vlan, linkid, 65*4ac67f02SAnurag S. Maskey VNIC_MAC_ADDR_TYPE_PRIMARY, NULL, 0, NULL, 0, vid, vlan_id_out, 66*4ac67f02SAnurag S. Maskey proplist, flags | DLADM_OPT_VLAN)); 67d62bc4baSyz147064 } 68d62bc4baSyz147064 69d62bc4baSyz147064 /* 70d62bc4baSyz147064 * Delete a given VLAN. 71d62bc4baSyz147064 */ 72d62bc4baSyz147064 dladm_status_t 73*4ac67f02SAnurag S. Maskey dladm_vlan_delete(dladm_handle_t handle, datalink_id_t vlanid, uint32_t flags) 74d62bc4baSyz147064 { 75*4ac67f02SAnurag S. Maskey return (dladm_vnic_delete(handle, vlanid, flags | DLADM_OPT_VLAN)); 76d62bc4baSyz147064 } 77d62bc4baSyz147064 78d62bc4baSyz147064 dladm_status_t 79*4ac67f02SAnurag S. Maskey dladm_vlan_up(dladm_handle_t handle, datalink_id_t linkid) 80d62bc4baSyz147064 { 81*4ac67f02SAnurag S. Maskey return (dladm_vnic_up(handle, linkid, DLADM_OPT_VLAN)); 82d62bc4baSyz147064 } 83