public bool Matches(DhcpV6VendorClassOption that, @operator op)
        {
            if (that == null)
            {
                return(false);
            }
            if (that.GetCode() != this.GetCode())
            {
                return(false);
            }
            if (that.GetEnterpriseNumber() != this.GetEnterpriseNumber())
            {
                return(false);
            }

            return(base.Matches(that, op));
        }
        /**
         * Gets the DhcpOption for the given option code.
         *
         * @param code the DHCP option code
         *
         * @return the DhcpOption object for the option code.
         */
        public static DhcpOption GetDhcpOption(int code)
        {
            DhcpOption option = null;

            switch (code)
            {
            case DhcpConstants.V6OPTION_CLIENTID:       // 1
                option = new DhcpV6ClientIdOption();
                break;

            case DhcpConstants.V6OPTION_SERVERID:       // 2
                option = new DhcpV6ServerIdOption();
                break;

            case DhcpConstants.V6OPTION_IA_NA:      // 3
                option = new DhcpV6IaNaOption();
                break;

            case DhcpConstants.V6OPTION_IA_TA:      // 4
                option = new DhcpV6IaTaOption();
                break;

            case DhcpConstants.V6OPTION_IAADDR:     // 5
                option = new DhcpV6IaAddrOption();
                break;

            case DhcpConstants.V6OPTION_ORO:        // 6
                option = new DhcpV6OptionRequestOption();
                break;

            case DhcpConstants.V6OPTION_PREFERENCE:     // 7
                option = new DhcpV6PreferenceOption();
                break;

            case DhcpConstants.V6OPTION_ELAPSED_TIME:       // 8
                option = new DhcpV6ElapsedTimeOption();
                break;

            case DhcpConstants.V6OPTION_RELAY_MSG:      // 9
                option = new DhcpV6RelayOption();
                break;

            // option code 10 is unassigned

            case DhcpConstants.V6OPTION_AUTH:           // 11
                option = new DhcpV6AuthenticationOption();
                break;

            case DhcpConstants.V6OPTION_UNICAST:        // 12
                option = new DhcpV6ServerUnicastOption();
                break;

            case DhcpConstants.V6OPTION_STATUS_CODE:        // 13
                option = new DhcpV6StatusCodeOption();
                break;

            case DhcpConstants.V6OPTION_RAPID_COMMIT:       // 14
                option = new DhcpV6RapidCommitOption();
                break;

            case DhcpConstants.V6OPTION_USER_CLASS:     // 15
                option = new DhcpV6UserClassOption();
                break;

            case DhcpConstants.V6OPTION_VENDOR_CLASS:       // 16
                option = new DhcpV6VendorClassOption();
                break;

            case DhcpConstants.V6OPTION_VENDOR_OPTS:        // 17
                option = new DhcpV6VendorInfoOption();
                break;

            case DhcpConstants.V6OPTION_INTERFACE_ID:       // 18
                option = new DhcpV6InterfaceIdOption();
                break;

            case DhcpConstants.V6OPTION_RECONF_MSG:     // 19
                option = new DhcpV6ReconfigureMessageOption();
                break;

            case DhcpConstants.V6OPTION_RECONF_ACCEPT:      // 20
                option = new DhcpV6ReconfigureAcceptOption();
                break;

            case DhcpConstants.V6OPTION_SIP_SERVERS_DOMAIN_LIST:        // 21
                option = new DhcpV6SipServerDomainNamesOption();
                break;

            case DhcpConstants.V6OPTION_SIP_SERVERS_ADDRESS_LIST:       // 22
                option = new DhcpV6SipServerAddressesOption();
                break;

            case DhcpConstants.V6OPTION_DNS_SERVERS:        // 23
                option = new DhcpV6DnsServersOption();
                break;

            case DhcpConstants.V6OPTION_DOMAIN_SEARCH_LIST:     // 24
                option = new DhcpV6DomainSearchListOption();
                break;

            case DhcpConstants.V6OPTION_IA_PD:      // 25
                option = new DhcpV6IaPdOption();
                break;

            case DhcpConstants.V6OPTION_IA_PD_PREFIX:       // 26
                option = new DhcpV6IaPrefixOption();
                break;

            case DhcpConstants.V6OPTION_NIS_SERVERS:        // 27
                option = new DhcpV6NisServersOption();
                break;

            case DhcpConstants.V6OPTION_NISPLUS_SERVERS:        // 28
                option = new DhcpV6NisPlusServersOption();
                break;

            case DhcpConstants.V6OPTION_NIS_DOMAIN_NAME:        // 29
                option = new DhcpV6NisDomainNameOption();
                break;

            case DhcpConstants.V6OPTION_NISPLUS_DOMAIN_NAME:        // 30
                option = new DhcpV6NisPlusDomainNameOption();
                break;

            case DhcpConstants.V6OPTION_SNTP_SERVERS:       // 31
                option = new DhcpV6SntpServersOption();
                break;

            case DhcpConstants.V6OPTION_INFO_REFRESH_TIME:      // 32
                option = new DhcpV6InfoRefreshTimeOption();
                break;

            case DhcpConstants.V6OPTION_BCMCS_DOMAIN_NAMES:     // 33
                option = new DhcpV6BcmcsDomainNamesOption();
                break;

            case DhcpConstants.V6OPTION_BCMCS_ADDRESSES:        // 34
                option = new DhcpV6BcmcsAddressesOption();
                break;

            // option code 35 is unassigned

            case DhcpConstants.V6OPTION_GEOCONF_CIVIC:      // 36
                option = new DhcpV6GeoconfCivicOption();
                break;

            case DhcpConstants.V6OPTION_REMOTE_ID:      // 37
                option = new DhcpV6RemoteIdOption();
                break;

            case DhcpConstants.V6OPTION_SUBSCRIBER_ID:      // 38
                option = new DhcpV6SubscriberIdOption();
                break;

            case DhcpConstants.V6OPTION_CLIENT_FQDN:        // 39
                option = new DhcpV6ClientFqdnOption();
                break;

            case DhcpConstants.V6OPTION_PANA_AGENT_ADDRESSES:       // 40
                option = new DhcpV6PanaAgentAddressesOption();
                break;

            case DhcpConstants.V6OPTION_NEW_POSIX_TIMEZONE:     // 41
                option = new DhcpV6NewPosixTimezoneOption();
                break;

            case DhcpConstants.V6OPTION_NEW_TZDB_TIMEZONE:      // 42
                option = new DhcpV6NewTzdbTimezoneOption();
                break;

            case DhcpConstants.V6OPTION_ECHO_REQUEST:       // 43
                option = new DhcpV6EchoRequestOption();
                break;

            // option codes 44-48 for Lease Query RFCs
            // option codes 49-50 for Mobile IPv6 Home Information draft

            case DhcpConstants.V6OPTION_LOST_SERVER_DOMAIN_NAME:        // 51
                option = new DhcpV6LostServerDomainNameOption();
                break;

            default:
                // Unknown option code, build an opaque option to hold it
                DhcpUnknownOption unknownOption = new DhcpUnknownOption();
                unknownOption.SetCode(code);
                option = unknownOption;
                break;
            }
            return(option);
        }