1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 /* 22 * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 package com.sun.dhcpmgr.data; 26 27 import java.util.*; 28 import java.io.Serializable; 29 30 /** 31 * This class defines the set of standard DHCP options we know about. 32 */ 33 public class StandardOptions implements Serializable { 34 35 /* 36 * The following list of options are the ones that we use 37 * in order to configure DHCP for the user. 38 */ 39 public static final String CD_SUBNETMASK = "Subnet"; 40 public static final String CD_TIMEOFFSET = "UTCoffst"; 41 public static final String CD_ROUTER = "Router"; 42 public static final String CD_TIMESERV = "Timeserv"; 43 public static final String CD_DNSSERV = "DNSserv"; 44 public static final String CD_DNSDOMAIN = "DNSdmain"; 45 public static final String CD_BROADCASTADDR = "Broadcst"; 46 public static final String CD_ROUTER_DISCVRY_ON = "RDiscvyF"; 47 public static final String CD_NIS_DOMAIN = "NISdmain"; 48 public static final String CD_NIS_SERV = "NISservs"; 49 public static final String CD_LEASE_TIME = "LeaseTim"; 50 public static final String CD_BOOL_LEASENEG = "LeaseNeg"; 51 52 /* 53 * Following list of options must be kept in sync with the list in 54 * usr/src/cmd/cmd-inet/usr.lib/in.dhcpd/dhcptab.c in SunOS source tree. 55 */ 56 private static Option [] options = null; 57 58 /** 59 * Return the size of this list 60 * @return the number of options known 61 */ 62 public static int size() { 63 return (options == null) ? 0 :options.length; 64 } 65 66 /** 67 * Enumerate the options defined here. 68 * @return an Enumeration of the standard options. 69 */ 70 public Enumeration enumOptions() { 71 return new Enumeration() { 72 int cursor = 0; 73 74 public boolean hasMoreElements() { 75 return (cursor < size()); 76 } 77 78 public Object nextElement() throws NoSuchElementException { 79 if (cursor >= size()) { 80 throw new NoSuchElementException(); 81 } 82 return (options[cursor++]); 83 } 84 }; 85 } 86 87 /** 88 * Return all options as an array 89 * @return the array of options defined here 90 */ 91 public static Option [] getAllOptions() { 92 return options; 93 } 94 95 /** 96 * Set all options as an array 97 * @param options array of STANDARD options 98 */ 99 public static void setAllOptions(Option [] ops) { 100 options = ops; 101 } 102 103 /** 104 * Find the option name for a given code. This could be 105 * much faster but not clear that it needs to be yet. 106 * @return the name of the option, or null if that code is unknown. 107 */ 108 public static String nameForCode(int code) { 109 for (int i = 0; i < options.length; ++i) { 110 if (options[i].getCode() == code) { 111 return options[i].getKey(); 112 } 113 } 114 return null; 115 } 116 }