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 /* 22*1cb875aeSCathy Zhou * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 23d62bc4baSyz147064 * Use is subject to license terms. 24d62bc4baSyz147064 */ 25d62bc4baSyz147064 26d62bc4baSyz147064 #include <libdlvlan.h> 27da14cebeSEric Cheng #include <libdlvnic.h> 28*1cb875aeSCathy Zhou #include <libvrrpadm.h> 29d62bc4baSyz147064 30d62bc4baSyz147064 /* 31d62bc4baSyz147064 * VLAN Administration Library. 32d62bc4baSyz147064 * 33d62bc4baSyz147064 * This library is used by administration tools such as dladm(1M) to 34d62bc4baSyz147064 * configure VLANs. 35d62bc4baSyz147064 */ 36d62bc4baSyz147064 37d62bc4baSyz147064 /* 38d62bc4baSyz147064 * Returns the current attributes of the specified VLAN. 39d62bc4baSyz147064 */ 40d62bc4baSyz147064 dladm_status_t 414ac67f02SAnurag S. Maskey dladm_vlan_info(dladm_handle_t handle, datalink_id_t vlanid, 424ac67f02SAnurag S. Maskey dladm_vlan_attr_t *dvap, uint32_t flags) 43d62bc4baSyz147064 { 44d62bc4baSyz147064 dladm_status_t status; 45da14cebeSEric Cheng dladm_vnic_attr_t attr, *vnic = &attr; 46d62bc4baSyz147064 474ac67f02SAnurag S. Maskey if ((status = dladm_vnic_info(handle, vlanid, vnic, flags)) != 48da14cebeSEric Cheng DLADM_STATUS_OK) 49d62bc4baSyz147064 return (status); 50d62bc4baSyz147064 51da14cebeSEric Cheng dvap->dv_vid = vnic->va_vid; 52da14cebeSEric Cheng dvap->dv_linkid = vnic->va_link_id; 53da14cebeSEric Cheng dvap->dv_force = vnic->va_force; 54d62bc4baSyz147064 return (status); 55d62bc4baSyz147064 } 56d62bc4baSyz147064 57d62bc4baSyz147064 /* 58d62bc4baSyz147064 * Create a VLAN on given link. 59d62bc4baSyz147064 */ 60d62bc4baSyz147064 dladm_status_t 614ac67f02SAnurag S. Maskey dladm_vlan_create(dladm_handle_t handle, const char *vlan, datalink_id_t linkid, 624ac67f02SAnurag S. Maskey uint16_t vid, dladm_arg_list_t *proplist, uint32_t flags, 634ac67f02SAnurag S. Maskey datalink_id_t *vlan_id_out) 64d62bc4baSyz147064 { 654ac67f02SAnurag S. Maskey return (dladm_vnic_create(handle, vlan, linkid, 66*1cb875aeSCathy Zhou VNIC_MAC_ADDR_TYPE_PRIMARY, NULL, 0, NULL, 0, vid, VRRP_VRID_NONE, 67*1cb875aeSCathy Zhou AF_UNSPEC, vlan_id_out, proplist, flags | DLADM_OPT_VLAN)); 68d62bc4baSyz147064 } 69d62bc4baSyz147064 70d62bc4baSyz147064 /* 71d62bc4baSyz147064 * Delete a given VLAN. 72d62bc4baSyz147064 */ 73d62bc4baSyz147064 dladm_status_t 744ac67f02SAnurag S. Maskey dladm_vlan_delete(dladm_handle_t handle, datalink_id_t vlanid, uint32_t flags) 75d62bc4baSyz147064 { 764ac67f02SAnurag S. Maskey return (dladm_vnic_delete(handle, vlanid, flags | DLADM_OPT_VLAN)); 77d62bc4baSyz147064 } 78d62bc4baSyz147064 79d62bc4baSyz147064 dladm_status_t 804ac67f02SAnurag S. Maskey dladm_vlan_up(dladm_handle_t handle, datalink_id_t linkid) 81d62bc4baSyz147064 { 824ac67f02SAnurag S. Maskey return (dladm_vnic_up(handle, linkid, DLADM_OPT_VLAN)); 83d62bc4baSyz147064 } 84