Print this page
7388 Support DHCP Client FQDN. Allow IAID/DUID for all v4.

Split Close
Expand all
Collapse all
          --- old/usr/src/cmd/cmd-inet/usr.sbin/nwamcfg/nwamcfg.c
          +++ new/usr/src/cmd/cmd-inet/usr.sbin/nwamcfg/nwamcfg.c
↓ open down ↓ 13 lines elided ↑ open up ↑
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22   22  /*
  23   23   * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
       24 + * Copyright (c) 2016, Chris Fraire <cfraire@me.com>.
  24   25   */
  25   26  
  26   27  /*
  27   28   * nwamcfg is a lex/yacc based command interpreter used to manage network
  28   29   * configurations.  The lexer (see nwamcfg_lex.l) builds up tokens, which
  29   30   * the grammar (see nwamcfg_grammar.y) builds up into commands, some of
  30   31   * which takes resources and/or properties as arguments.
  31   32   */
  32   33  
  33   34  #include <arpa/inet.h>
↓ open down ↓ 157 lines elided ↑ open up ↑
 191  192          NWAM_LOC_PROP_IPFILTER_CONFIG_FILE,
 192  193          NWAM_LOC_PROP_IPFILTER_V6_CONFIG_FILE,
 193  194          NWAM_LOC_PROP_IPNAT_CONFIG_FILE,
 194  195          NWAM_LOC_PROP_IPPOOL_CONFIG_FILE,
 195  196          NWAM_LOC_PROP_IKE_CONFIG_FILE,
 196  197          NWAM_LOC_PROP_IPSECPOLICY_CONFIG_FILE,
 197  198          NWAM_KNOWN_WLAN_PROP_BSSIDS,
 198  199          NWAM_KNOWN_WLAN_PROP_PRIORITY,
 199  200          NWAM_KNOWN_WLAN_PROP_KEYNAME,
 200  201          NWAM_KNOWN_WLAN_PROP_KEYSLOT,
 201      -        NWAM_KNOWN_WLAN_PROP_SECURITY_MODE
      202 +        NWAM_KNOWN_WLAN_PROP_SECURITY_MODE,
      203 +        NWAM_NCU_PROP_IP_PRIMARY,
      204 +        NWAM_NCU_PROP_IP_REQHOST
 202  205  };
 203  206  
 204  207  /* properties table: maps PT_* constants to property names */
 205  208  typedef struct prop_table_entry {
 206  209          int                     pte_type;
 207  210          const char              *pte_name;
 208  211  } prop_table_entry_t;
 209  212  
 210  213  /* NCU properties table */
 211  214  static prop_table_entry_t ncu_prop_table[] = {
↓ open down ↓ 7 lines elided ↑ open up ↑
 219  222          { PT_LINK_MACADDR,              NWAM_NCU_PROP_LINK_MAC_ADDR },
 220  223          { PT_LINK_AUTOPUSH,             NWAM_NCU_PROP_LINK_AUTOPUSH },
 221  224          { PT_LINK_MTU,                  NWAM_NCU_PROP_LINK_MTU },
 222  225          { PT_IP_VERSION,                NWAM_NCU_PROP_IP_VERSION },
 223  226          { PT_IPV4_ADDRSRC,              NWAM_NCU_PROP_IPV4_ADDRSRC },
 224  227          { PT_IPV4_ADDR,                 NWAM_NCU_PROP_IPV4_ADDR },
 225  228          { PT_IPV4_DEFAULT_ROUTE,        NWAM_NCU_PROP_IPV4_DEFAULT_ROUTE },
 226  229          { PT_IPV6_ADDRSRC,              NWAM_NCU_PROP_IPV6_ADDRSRC },
 227  230          { PT_IPV6_ADDR,                 NWAM_NCU_PROP_IPV6_ADDR },
 228  231          { PT_IPV6_DEFAULT_ROUTE,        NWAM_NCU_PROP_IPV6_DEFAULT_ROUTE },
      232 +        { PT_IP_PRIMARY,                NWAM_NCU_PROP_IP_PRIMARY },
      233 +        { PT_IP_REQHOST,                NWAM_NCU_PROP_IP_REQHOST },
 229  234          { 0, NULL }
 230  235  };
 231  236  
 232  237  /* ENM properties table */
 233  238  static prop_table_entry_t enm_prop_table[] = {
 234  239          { PT_ENM_FMRI,          NWAM_ENM_PROP_FMRI },
 235  240          { PT_ENM_START,         NWAM_ENM_PROP_START },
 236  241          { PT_ENM_STOP,          NWAM_ENM_PROP_STOP },
 237  242          { PT_ACTIVATION_MODE,   NWAM_ENM_PROP_ACTIVATION_MODE },
 238  243          { PT_CONDITIONS,        NWAM_ENM_PROP_CONDITIONS },
↓ open down ↓ 418 lines elided ↑ open up ↑
 657  662  }
 658  663  
 659  664  /* Given an int for a prop, returns it as string */
 660  665  static const char *
 661  666  pt_to_str(int prop_type)
 662  667  {
 663  668          assert(prop_type >= PT_MIN && prop_type <= PT_MAX);
 664  669          return (pt_types[prop_type]);
 665  670  }
 666  671  
 667      -/* Return B_TRUE if string starts with "t" or is 1, B_FALSE otherwise */
      672 +/*
      673 + * Return B_TRUE if string starts with "t" or "on" or is 1;
      674 + * B_FALSE otherwise
      675 + */
 668  676  static boolean_t
 669  677  str_to_boolean(const char *str)
 670  678  {
 671      -        if (strncasecmp(str, "t", 1) == 0 || atoi(str) == 1)
      679 +        if (strncasecmp(str, "t", 1) == 0 || strncasecmp(str, "on", 2) == 0 ||
      680 +            atoi(str) == 1)
 672  681                  return (B_TRUE);
 673  682          else
 674  683                  return (B_FALSE);
 675  684  }
 676  685  
 677  686  /*
 678  687   * This is a separate function rather than a set of define's because of the
 679  688   * gettext() wrapping.
 680  689   */
 681  690  
↓ open down ↓ 1508 lines elided ↑ open up ↑
2190 2199              { IPV4_VERSION, -1 } },
2191 2200          /* show ipv6-addrsrc if ip-version == ipv6 */
2192 2201          { NWAM_NCU_PROP_IPV6_ADDRSRC, NWAM_NCU_PROP_IP_VERSION,
2193 2202              { IPV6_VERSION, -1 } },
2194 2203          /* show ipv6-addr if ipv6-addrsrc == static */
2195 2204          { NWAM_NCU_PROP_IPV6_ADDR, NWAM_NCU_PROP_IPV6_ADDRSRC,
2196 2205              { NWAM_ADDRSRC_STATIC, -1 } },
2197 2206          /* show ipv6-default-route if ip-version == ipv6 */
2198 2207          { NWAM_NCU_PROP_IPV6_DEFAULT_ROUTE, NWAM_NCU_PROP_IP_VERSION,
2199 2208              { IPV6_VERSION, -1 } },
     2209 +        /* show ip-primary if ipv4-addrsrc == dhcp */
     2210 +        { NWAM_NCU_PROP_IP_PRIMARY, NWAM_NCU_PROP_IPV4_ADDRSRC,
     2211 +            { NWAM_ADDRSRC_DHCP, -1 } },
     2212 +        /* show ip-primary if ipv6-addrsrc == dhcp */
     2213 +        { NWAM_NCU_PROP_IP_PRIMARY, NWAM_NCU_PROP_IPV6_ADDRSRC,
     2214 +            { NWAM_ADDRSRC_DHCP, -1 } },
     2215 +        /* show ip-reqhost if ipv4-addrsrc == dhcp */
     2216 +        { NWAM_NCU_PROP_IP_REQHOST, NWAM_NCU_PROP_IPV4_ADDRSRC,
     2217 +            { NWAM_ADDRSRC_DHCP, -1 } },
     2218 +        /* show ip-reqhost if ipv6-addrsrc == dhcp */
     2219 +        { NWAM_NCU_PROP_IP_REQHOST, NWAM_NCU_PROP_IPV6_ADDRSRC,
     2220 +            { NWAM_ADDRSRC_DHCP, -1 } },
2200 2221          { NULL, NULL, { -1 } }
2201 2222  };
2202 2223  
2203 2224  /* Rules for ENMs */
2204 2225  static prop_display_entry_t enm_prop_display_entry_table[] = {
2205 2226          /* show conditions if activation-mode == conditional-{all,any} */
2206 2227          { NWAM_ENM_PROP_CONDITIONS, NWAM_ENM_PROP_ACTIVATION_MODE,
2207 2228              { NWAM_ACTIVATION_MODE_CONDITIONAL_ALL,
2208 2229              NWAM_ACTIVATION_MODE_CONDITIONAL_ANY, -1 } },
2209 2230          { NULL, NULL, { -1 } }
↓ open down ↓ 2129 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX