// ===================================================================
// Title:       Network VLAN 2.7
// Filename:    Network27_VLAN.mof
// Version:     2.7.0
// Status:      Final
// Date:        March 31, 2003
// ===================================================================
// Copyright 1998-2003 Distributed Management Task Force, Inc. (DMTF).
// All rights reserved.  
// DMTF is a not-for-profit association of industry members dedicated 
// to promoting enterprise and systems management and interoperability. 
// DMTF specifications and documents may be reproduced for uses
// consistent with this purpose by members and non-members, 
// provided that correct attribution is given. 
// As DMTF specifications may be revised from time to time, 
// the particular version and release date should always be noted.
//
// Implementation of certain elements of this standard or proposed 
// standard may be subject to third party patent rights, including 
// provisional patent rights (herein "patent rights"). DMTF makes 
// no representations to users of the standard as to the existence 
// of such rights, and is not responsible to recognize, disclose, or
// identify any or all such third party patent right, owners or 
// claimants, nor for any incomplete or inaccurate identification or 
// disclosure of such rights, owners or claimants. DMTF shall have no 
// liability to any party, in any manner or circumstance, under any 
// legal theory whatsoever, for failure to recognize, disclose, or 
// identify any such third party patent rights, or for such party's
// reliance on the standard or incorporation thereof in its product, 
// protocols or testing procedures. DMTF shall have no liability to 
// any party implementing such standard, whether such implementation 
// is foreseeable or not, nor to any patent owner or claimant, and shall 
// have no liability or responsibility for costs or losses incurred if 
// a standard is withdrawn or modified after publication, and shall be
// indemnified and held harmless by any party implementing the 
// standard from any and all claims of infringement by a patent owner 
// for such implementations.
//
// For information about patents held by third-parties which have 
// notified the DMTF that, in their opinion, such patent may relate to 
// or impact implementations of DMTF standards, visit 
// http://www.dmtf.org/about/policies/disclosures.php.
// ===================================================================
// Description: The Network Model extends the management concepts to
//              represent protocol interfaces and network/protocol 
//              services.  This file defines VLAN (virtual LAN) 
//              concepts.  
//
//              The object classes below are listed in an order that
//              avoids forward references. Required objects, defined 
//              by other working groups, are omitted.
// ==================================================================
// Change Log for v2.7
// CR867 - Remove Min(1), Max(1) cardinality restrictions on Related
//         TransparentBridgingService
// CR920 - Add missing parenthesis to the Description for CIM_VLAN
// ===================================================================
 
#pragma Locale ("en_US")


// ==================================================================
// VLAN
// ==================================================================
   [Version ("2.6.0"), Description (
      "An instance of VLAN represents a VLAN within a switch. "
      "In a particular switch, there should be an instance of VLAN "
      "for every VLAN available. For example, in a switch with "
      "port-based VLANs, if there are 16 VLANs to which ports can "
      "be assigned (VLAN 1 through VLAN 16), there should "
      "be an instance of CIM_VLAN for each of VLAN 1 through "
      "VLAN 16. \n"
      "\n"
      "VLAN inherits Name from ServiceAccessPoint. Use this for "
      "the textual name of the VLAN, if there is one. Otherwise, "
      "synthesize a textual name, e.g., VLAN 0003. (Consider "
      "leading zero fill, as shown, to ensure that if the textual "
      "VLAN names are extracted and presented by a management "
      "applictions, the VLAN names will sort in the expected order.) "
      "The numeric part of the name should be at least four "
      "digits wide since 802.1Q specifies 4095 VLANs. \n"
      "\n"
      "It is intended that VLAN be subclassed only if necessary "
      "to add attributes. The type of the VLAN can be inferred from "
      "the VLANService(s) with which the VLAN is associated "
      "in the VLANFor association. \n"
      "\n"
      "An instance of VLAN may be associated with more than one "
      "VLANService. For example, there are switches that "
      "support both 802.1Q VLANs and the vendor's proprietary "
      "VLANs. In some such switches, if a broadcast packet is received "
      "on a port in an 802.1Q VLAN (VLAN 5, for example), it may be "
      "be transmitted from a port in a 'proprietary' VLAN 5. In effect, "
      "there is only one VLAN 5, and the type of port only determines "
      "the packet format for tagged packets. In the case just described, "
      "only one instance of CIM_VLAN should be instantiated for VLAN 5, "
      "and it should be associated both with the 802.1Q VLANService "
      "and the proprietary VLANService. \n"
      "\n"
      "In typical VLAN-aware switches, packets can be assigned to "
      "a VLAN based on the port on which they are received " 
      "(port-based VLANS), based on the source MAC address " 
      "(MAC-based VLANs), or based on the value of a set of bits in "
      "the packet (protocol-based VLANs). If it is desirable to "
      "represent the VLAN assignment predicate for some MAC-based "
      "VLAN switch, it will be necessary to subclass VLAN. The list "
      "of MAC addresses associated with a VLAN might be an "
      "attribute of the subclass. If it is desirable to represent"
      "the VLAN assignment predicate in a protocol-based VLAN "
      "switch, it will also be necessary to subclass VLAN, "
      "InboundVLAN, or both. If the predicate applies to all ports "
      "in the switch, then only VLAN need be used/instantiated. If "
      "the predicate may vary based on the port, then InboundVLAN must "
      "be subclassed, and CIM_VLAN might have to be subclassed "
      "as well.") ]
class CIM_VLAN : CIM_ServiceAccessPoint {

        [Description ("VLAN identifying number.") ]
    uint32 VLANNumber;
};


// ==================================================================
// InboundVLAN
// ==================================================================
   [Association, Version ("2.6.0"), Description (
      "This association makes explicit the operational "
      "dependencies of a SwitchPort when operating in a VLAN. If "
      "there is an association between a particular "
      "SwitchPort and a particular VLAN, then there is the "
      "possibility that a packet received by the port will be "
      "assigned to the VLAN (or if the packet already has a VLAN "
      "tag, that the packet will not be dropped). If there is no "
      "such association, then there is NO possibility that a "
      "packet received by the port will progress through the "
      "switch having been assigned to the referenced VLAN.") ]
class CIM_InboundVLAN : CIM_SAPSAPDependency {

        [Override ("Antecedent"), 
         Description ("The VLAN to which the SwitchPort is assigned.") ]
    CIM_VLAN REF Antecedent;

        [Override ("Dependent"), 
         Description ("The SwitchPort on the VLAN.") ]
    CIM_SwitchPort REF Dependent;

        [Description (
         "If TRUE, packets already tagged with this VLAN number will "
         "be accepted when arriving at this port. For example, if "
         "there is an InboundVLAN association between port 12 and "
         "VLAN 7 for which Tagged is true, then when a packet tagged "
         "with VLAN 7 arrives at port 12, the packet will be "
         "accepted into the switch for further processing. If there "
         "is no such association, then the packet will be dropped. \n"
         "\n"
         "If FALSE, it means that any untagged packets arriving at "
         "this port MIGHT be classified into the associated VLAN. "
         "If, for a particular SwitchPort, there is only one instance "
         "of the association for which Tagged is FALSE, then all "
         "incoming untagged packets will be classified into that VLAN. "
         "This is the typical configuration of a non-trunk port in a "
         "switch implementing port-based VLANs. If there is more than "
         "one such association instance, then the packet MIGHT be "
         "classified into any one of them, based on some criterion "
         "other than the identity of the switch port. For example, "
         "in a MAC-based VLAN switch, the decision would be based on "
         "the source MAC address. In a protocol-based VLAN switch, "
         "the decision would be based on the values of some set of "
         "bits in the packet. \n"
         "\n"
         "Note that the MAC address is formatted as twelve "
         "hexadecimal digits (e.g., \"010203040506\"), with each "
         "pair representing one of the six octets of the MAC address "
         "in \"canonical\" bit order according to RFC 2469.") ]
    boolean Tagged;

        [Description (
         "Default should be TRUE if untagged packets received by the "
         "SwitchPort are assigned to the VLAN. For 802.1Q-compliant "
         "ports, the Default property should be TRUE on the "
         "association instance connecting a SwitchPort to the VLAN "
         "corresponding to the port's PVID. Default MUST never be "
         "TRUE if Tagged is true -- it applies only to untagged "
         "packets.") ]
    boolean Default;
};


// ==================================================================
// OutboundVLAN
// ==================================================================
   [Association, Version ("2.6.0"), Description (
      "This association makes explicit the operational "
      "dependencies of a SwitchPort when operating in a VLAN. "
      "If there is no instance of OutboundVLAN between a given "
      "SwitchPort and VLAN, then any packet that has been "
      "assigned to the VLAN and whose destination address is "
      "associated with the port will be dropped by the switch "
      "without being transmitted. Otherwise, the packet will be "
      "transmitted.") ]
class CIM_OutboundVLAN : CIM_SAPSAPDependency {

        [Override ("Antecedent"), 
         Description ("The VLAN to which the SwitchPort is assigned.") ]
    CIM_VLAN REF Antecedent;

        [Override ("Dependent"), 
         Description ("The SwitchPort on the VLAN.") ]
    CIM_SwitchPort REF Dependent;

        [Description (
         "If Tagged is TRUE, then the packet will be transmitted in "
         "encapsulated form, tagged with the associated VLAN tag. If "
         "Tagged is FALSE, the packet will be trasmitted without any "
         "VLAN tag.") ]
    boolean Tagged;
};


// ==================================================================
// VLANService
// ==================================================================
   [Abstract, Version ("2.6.0"), Description (
      "VLANService represents the VLAN aspects of the function "
      "performed by a switch. Some VLAN-aware devices participate "
      "in protocols where VLAN information is propagated among "
      "switches, e.g., GVRP in 802.1Q switches and VTP in Cisco "
      "Catalyst switches. VLANService also represents the function "
      "performed by the switch as a participant in such a protocol. "
      "VLANService must be subclassed so that the type of instance "
      "can be distinguished by its class.") ]
class CIM_VLANService : CIM_Service {
};


// ==================================================================
// 802dot1QVLANService
// ==================================================================
   [Version ("2.6.0"), Description (
      "If a switch supports 802.1Q, an instance of this class "
      "should be instantiated in the switch. If the switch "
      "supports GVRP, this class represents the function that "
      "the switch performs with respect to GVRP.") ]
class CIM_802dot1QVLANService : CIM_VLANService {
};


// ==================================================================
// VLANFor
// ==================================================================
   [Association, Version ("2.6.0"), Description(
      "The VLAN for the VLAN Service.") ]
class CIM_VLANFor : CIM_ServiceSAPDependency {

        [Override ("Antecedent"), Description (
         "The VLAN for the VLANService.") ]
    CIM_VLAN REF Antecedent;

        [Override ("Dependent"), Min (1), Description (
         "The VLANService which uses the VLAN for processing.") ]
    CIM_VLANService REF Dependent;
};


// ==================================================================
// SwitchServiceVLAN
// ==================================================================
   [Association, Aggregation, Version ("2.6.0"), 
    Description (
      "An association linking SwitchService to a component "
      "VLANService.") ] 
class CIM_SwitchServiceVLAN : CIM_ServiceComponent {

        [Override ("GroupComponent"), Aggregate, Min (1), Max (1),
         Description (
         "The SwitchService containing the VLANService.") ]
    CIM_SwitchService REF GroupComponent;

        [Override ("PartComponent"), Description (
         "The VLANService that is a component of the SwitchService.") ]
    CIM_VLANService REF PartComponent;
};


// ==================================================================
// RelatedTransparentBridgingService
// ==================================================================
   [Association, Version ("2.6.0"), Description (
      "The association between a VLAN and the forwarding database "
      "(some use the term filtering database) used to determine "
      "which port a packet should be transmitted on, given that it "
      "is assigned to the VLAN and that it has a particular "
      "destination MAC address. The TransparentBridgingService "
      "represents a forwarding database.") ]
class CIM_RelatedTransparentBridgingService : 
 CIM_ServiceSAPDependency {

        [Override ("Antecedent"), Description ("The VLAN.") ]
    CIM_VLAN REF Antecedent;

        [Override ("Dependent"), Description (
         "The BridgingService that determines the port, given the "
         "the VLAN and addressing information.")  ]
    CIM_TransparentBridgingService REF Dependent;
};


// ===================================================================
// end of file
// ===================================================================
