Parcourir la source

[5357] Bison code regenerated

Tomek Mrugalski il y a 7 ans
Parent
commit
596625b540
6 fichiers modifiés avec 5722 ajouts et 5950 suppressions
  1. 1247 1437
      src/bin/dhcp4/dhcp4_lexer.cc
  2. 1439 1375
      src/bin/dhcp4/dhcp4_parser.cc
  3. 150 138
      src/bin/dhcp4/dhcp4_parser.h
  4. 1263 1451
      src/bin/dhcp6/dhcp6_lexer.cc
  5. 1474 1411
      src/bin/dhcp6/dhcp6_parser.cc
  6. 149 138
      src/bin/dhcp6/dhcp6_parser.h

Fichier diff supprimé car celui-ci est trop grand
+ 1247 - 1437
src/bin/dhcp4/dhcp4_lexer.cc


Fichier diff supprimé car celui-ci est trop grand
+ 1439 - 1375
src/bin/dhcp4/dhcp4_parser.cc


+ 150 - 138
src/bin/dhcp4/dhcp4_parser.h

@@ -402,93 +402,94 @@ namespace isc { namespace dhcp {
         TOKEN_RECORD_TYPES = 310,
         TOKEN_RECORD_TYPES = 310,
         TOKEN_ENCAPSULATE = 311,
         TOKEN_ENCAPSULATE = 311,
         TOKEN_ARRAY = 312,
         TOKEN_ARRAY = 312,
-        TOKEN_POOLS = 313,
-        TOKEN_POOL = 314,
-        TOKEN_USER_CONTEXT = 315,
-        TOKEN_SUBNET = 316,
-        TOKEN_INTERFACE = 317,
-        TOKEN_INTERFACE_ID = 318,
-        TOKEN_ID = 319,
-        TOKEN_RAPID_COMMIT = 320,
-        TOKEN_RESERVATION_MODE = 321,
-        TOKEN_DISABLED = 322,
-        TOKEN_OUT_OF_POOL = 323,
-        TOKEN_ALL = 324,
-        TOKEN_HOST_RESERVATION_IDENTIFIERS = 325,
-        TOKEN_CLIENT_CLASSES = 326,
-        TOKEN_TEST = 327,
-        TOKEN_CLIENT_CLASS = 328,
-        TOKEN_RESERVATIONS = 329,
-        TOKEN_DUID = 330,
-        TOKEN_HW_ADDRESS = 331,
-        TOKEN_CIRCUIT_ID = 332,
-        TOKEN_CLIENT_ID = 333,
-        TOKEN_HOSTNAME = 334,
-        TOKEN_FLEX_ID = 335,
-        TOKEN_RELAY = 336,
-        TOKEN_IP_ADDRESS = 337,
-        TOKEN_HOOKS_LIBRARIES = 338,
-        TOKEN_LIBRARY = 339,
-        TOKEN_PARAMETERS = 340,
-        TOKEN_EXPIRED_LEASES_PROCESSING = 341,
-        TOKEN_RECLAIM_TIMER_WAIT_TIME = 342,
-        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 343,
-        TOKEN_HOLD_RECLAIMED_TIME = 344,
-        TOKEN_MAX_RECLAIM_LEASES = 345,
-        TOKEN_MAX_RECLAIM_TIME = 346,
-        TOKEN_UNWARNED_RECLAIM_CYCLES = 347,
-        TOKEN_DHCP4O6_PORT = 348,
-        TOKEN_CONTROL_SOCKET = 349,
-        TOKEN_SOCKET_TYPE = 350,
-        TOKEN_SOCKET_NAME = 351,
-        TOKEN_DHCP_DDNS = 352,
-        TOKEN_ENABLE_UPDATES = 353,
-        TOKEN_QUALIFYING_SUFFIX = 354,
-        TOKEN_SERVER_IP = 355,
-        TOKEN_SERVER_PORT = 356,
-        TOKEN_SENDER_IP = 357,
-        TOKEN_SENDER_PORT = 358,
-        TOKEN_MAX_QUEUE_SIZE = 359,
-        TOKEN_NCR_PROTOCOL = 360,
-        TOKEN_NCR_FORMAT = 361,
-        TOKEN_ALWAYS_INCLUDE_FQDN = 362,
-        TOKEN_OVERRIDE_NO_UPDATE = 363,
-        TOKEN_OVERRIDE_CLIENT_UPDATE = 364,
-        TOKEN_REPLACE_CLIENT_NAME = 365,
-        TOKEN_GENERATED_PREFIX = 366,
-        TOKEN_TCP = 367,
-        TOKEN_JSON = 368,
-        TOKEN_WHEN_PRESENT = 369,
-        TOKEN_NEVER = 370,
-        TOKEN_ALWAYS = 371,
-        TOKEN_WHEN_NOT_PRESENT = 372,
-        TOKEN_LOGGING = 373,
-        TOKEN_LOGGERS = 374,
-        TOKEN_OUTPUT_OPTIONS = 375,
-        TOKEN_OUTPUT = 376,
-        TOKEN_DEBUGLEVEL = 377,
-        TOKEN_SEVERITY = 378,
-        TOKEN_FLUSH = 379,
-        TOKEN_MAXSIZE = 380,
-        TOKEN_MAXVER = 381,
-        TOKEN_DHCP6 = 382,
-        TOKEN_DHCPDDNS = 383,
-        TOKEN_CONTROL_AGENT = 384,
-        TOKEN_TOPLEVEL_JSON = 385,
-        TOKEN_TOPLEVEL_DHCP4 = 386,
-        TOKEN_SUB_DHCP4 = 387,
-        TOKEN_SUB_INTERFACES4 = 388,
-        TOKEN_SUB_SUBNET4 = 389,
-        TOKEN_SUB_POOL4 = 390,
-        TOKEN_SUB_RESERVATION = 391,
-        TOKEN_SUB_OPTION_DEF = 392,
-        TOKEN_SUB_OPTION_DATA = 393,
-        TOKEN_SUB_HOOKS_LIBRARY = 394,
-        TOKEN_SUB_DHCP_DDNS = 395,
-        TOKEN_STRING = 396,
-        TOKEN_INTEGER = 397,
-        TOKEN_FLOAT = 398,
-        TOKEN_BOOLEAN = 399
+        TOKEN_SHARED_NETWORKS = 313,
+        TOKEN_POOLS = 314,
+        TOKEN_POOL = 315,
+        TOKEN_USER_CONTEXT = 316,
+        TOKEN_SUBNET = 317,
+        TOKEN_INTERFACE = 318,
+        TOKEN_INTERFACE_ID = 319,
+        TOKEN_ID = 320,
+        TOKEN_RAPID_COMMIT = 321,
+        TOKEN_RESERVATION_MODE = 322,
+        TOKEN_DISABLED = 323,
+        TOKEN_OUT_OF_POOL = 324,
+        TOKEN_ALL = 325,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 326,
+        TOKEN_CLIENT_CLASSES = 327,
+        TOKEN_TEST = 328,
+        TOKEN_CLIENT_CLASS = 329,
+        TOKEN_RESERVATIONS = 330,
+        TOKEN_DUID = 331,
+        TOKEN_HW_ADDRESS = 332,
+        TOKEN_CIRCUIT_ID = 333,
+        TOKEN_CLIENT_ID = 334,
+        TOKEN_HOSTNAME = 335,
+        TOKEN_FLEX_ID = 336,
+        TOKEN_RELAY = 337,
+        TOKEN_IP_ADDRESS = 338,
+        TOKEN_HOOKS_LIBRARIES = 339,
+        TOKEN_LIBRARY = 340,
+        TOKEN_PARAMETERS = 341,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 342,
+        TOKEN_RECLAIM_TIMER_WAIT_TIME = 343,
+        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 344,
+        TOKEN_HOLD_RECLAIMED_TIME = 345,
+        TOKEN_MAX_RECLAIM_LEASES = 346,
+        TOKEN_MAX_RECLAIM_TIME = 347,
+        TOKEN_UNWARNED_RECLAIM_CYCLES = 348,
+        TOKEN_DHCP4O6_PORT = 349,
+        TOKEN_CONTROL_SOCKET = 350,
+        TOKEN_SOCKET_TYPE = 351,
+        TOKEN_SOCKET_NAME = 352,
+        TOKEN_DHCP_DDNS = 353,
+        TOKEN_ENABLE_UPDATES = 354,
+        TOKEN_QUALIFYING_SUFFIX = 355,
+        TOKEN_SERVER_IP = 356,
+        TOKEN_SERVER_PORT = 357,
+        TOKEN_SENDER_IP = 358,
+        TOKEN_SENDER_PORT = 359,
+        TOKEN_MAX_QUEUE_SIZE = 360,
+        TOKEN_NCR_PROTOCOL = 361,
+        TOKEN_NCR_FORMAT = 362,
+        TOKEN_ALWAYS_INCLUDE_FQDN = 363,
+        TOKEN_OVERRIDE_NO_UPDATE = 364,
+        TOKEN_OVERRIDE_CLIENT_UPDATE = 365,
+        TOKEN_REPLACE_CLIENT_NAME = 366,
+        TOKEN_GENERATED_PREFIX = 367,
+        TOKEN_TCP = 368,
+        TOKEN_JSON = 369,
+        TOKEN_WHEN_PRESENT = 370,
+        TOKEN_NEVER = 371,
+        TOKEN_ALWAYS = 372,
+        TOKEN_WHEN_NOT_PRESENT = 373,
+        TOKEN_LOGGING = 374,
+        TOKEN_LOGGERS = 375,
+        TOKEN_OUTPUT_OPTIONS = 376,
+        TOKEN_OUTPUT = 377,
+        TOKEN_DEBUGLEVEL = 378,
+        TOKEN_SEVERITY = 379,
+        TOKEN_FLUSH = 380,
+        TOKEN_MAXSIZE = 381,
+        TOKEN_MAXVER = 382,
+        TOKEN_DHCP6 = 383,
+        TOKEN_DHCPDDNS = 384,
+        TOKEN_CONTROL_AGENT = 385,
+        TOKEN_TOPLEVEL_JSON = 386,
+        TOKEN_TOPLEVEL_DHCP4 = 387,
+        TOKEN_SUB_DHCP4 = 388,
+        TOKEN_SUB_INTERFACES4 = 389,
+        TOKEN_SUB_SUBNET4 = 390,
+        TOKEN_SUB_POOL4 = 391,
+        TOKEN_SUB_RESERVATION = 392,
+        TOKEN_SUB_OPTION_DEF = 393,
+        TOKEN_SUB_OPTION_DATA = 394,
+        TOKEN_SUB_HOOKS_LIBRARY = 395,
+        TOKEN_SUB_DHCP_DDNS = 396,
+        TOKEN_STRING = 397,
+        TOKEN_INTEGER = 398,
+        TOKEN_FLOAT = 399,
+        TOKEN_BOOLEAN = 400
       };
       };
     };
     };
 
 
@@ -829,6 +830,10 @@ namespace isc { namespace dhcp {
 
 
     static inline
     static inline
     symbol_type
     symbol_type
+    make_SHARED_NETWORKS (const location_type& l);
+
+    static inline
+    symbol_type
     make_POOLS (const location_type& l);
     make_POOLS (const location_type& l);
 
 
     static inline
     static inline
@@ -1380,12 +1385,12 @@ namespace isc { namespace dhcp {
     enum
     enum
     {
     {
       yyeof_ = 0,
       yyeof_ = 0,
-      yylast_ = 756,     ///< Last index in yytable_.
-      yynnts_ = 318,  ///< Number of nonterminal symbols.
+      yylast_ = 788,     ///< Last index in yytable_.
+      yynnts_ = 326,  ///< Number of nonterminal symbols.
       yyfinal_ = 24, ///< Termination state number.
       yyfinal_ = 24, ///< Termination state number.
       yyterror_ = 1,
       yyterror_ = 1,
       yyerrcode_ = 256,
       yyerrcode_ = 256,
-      yyntokens_ = 145  ///< Number of tokens.
+      yyntokens_ = 146  ///< Number of tokens.
     };
     };
 
 
 
 
@@ -1441,9 +1446,10 @@ namespace isc { namespace dhcp {
      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,   142,   143,   144
+     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+     145
     };
     };
-    const unsigned int user_token_number_max_ = 399;
+    const unsigned int user_token_number_max_ = 400;
     const token_number_type undef_token_ = 2;
     const token_number_type undef_token_ = 2;
 
 
     if (static_cast<int>(t) <= yyeof_)
     if (static_cast<int>(t) <= yyeof_)
@@ -1476,29 +1482,29 @@ namespace isc { namespace dhcp {
   {
   {
       switch (other.type_get ())
       switch (other.type_get ())
     {
     {
-      case 158: // value
-      case 162: // map_value
-      case 200: // socket_type
-      case 210: // db_type
-      case 287: // hr_mode
-      case 420: // ncr_protocol_value
-      case 428: // replace_client_name_value
+      case 159: // value
+      case 163: // map_value
+      case 201: // socket_type
+      case 211: // db_type
+      case 288: // hr_mode
+      case 429: // ncr_protocol_value
+      case 437: // replace_client_name_value
         value.copy< ElementPtr > (other.value);
         value.copy< ElementPtr > (other.value);
         break;
         break;
 
 
-      case 144: // "boolean"
+      case 145: // "boolean"
         value.copy< bool > (other.value);
         value.copy< bool > (other.value);
         break;
         break;
 
 
-      case 143: // "floating point"
+      case 144: // "floating point"
         value.copy< double > (other.value);
         value.copy< double > (other.value);
         break;
         break;
 
 
-      case 142: // "integer"
+      case 143: // "integer"
         value.copy< int64_t > (other.value);
         value.copy< int64_t > (other.value);
         break;
         break;
 
 
-      case 141: // "constant string"
+      case 142: // "constant string"
         value.copy< std::string > (other.value);
         value.copy< std::string > (other.value);
         break;
         break;
 
 
@@ -1519,29 +1525,29 @@ namespace isc { namespace dhcp {
     (void) v;
     (void) v;
       switch (this->type_get ())
       switch (this->type_get ())
     {
     {
-      case 158: // value
-      case 162: // map_value
-      case 200: // socket_type
-      case 210: // db_type
-      case 287: // hr_mode
-      case 420: // ncr_protocol_value
-      case 428: // replace_client_name_value
+      case 159: // value
+      case 163: // map_value
+      case 201: // socket_type
+      case 211: // db_type
+      case 288: // hr_mode
+      case 429: // ncr_protocol_value
+      case 437: // replace_client_name_value
         value.copy< ElementPtr > (v);
         value.copy< ElementPtr > (v);
         break;
         break;
 
 
-      case 144: // "boolean"
+      case 145: // "boolean"
         value.copy< bool > (v);
         value.copy< bool > (v);
         break;
         break;
 
 
-      case 143: // "floating point"
+      case 144: // "floating point"
         value.copy< double > (v);
         value.copy< double > (v);
         break;
         break;
 
 
-      case 142: // "integer"
+      case 143: // "integer"
         value.copy< int64_t > (v);
         value.copy< int64_t > (v);
         break;
         break;
 
 
-      case 141: // "constant string"
+      case 142: // "constant string"
         value.copy< std::string > (v);
         value.copy< std::string > (v);
         break;
         break;
 
 
@@ -1621,29 +1627,29 @@ namespace isc { namespace dhcp {
     // Type destructor.
     // Type destructor.
     switch (yytype)
     switch (yytype)
     {
     {
-      case 158: // value
-      case 162: // map_value
-      case 200: // socket_type
-      case 210: // db_type
-      case 287: // hr_mode
-      case 420: // ncr_protocol_value
-      case 428: // replace_client_name_value
+      case 159: // value
+      case 163: // map_value
+      case 201: // socket_type
+      case 211: // db_type
+      case 288: // hr_mode
+      case 429: // ncr_protocol_value
+      case 437: // replace_client_name_value
         value.template destroy< ElementPtr > ();
         value.template destroy< ElementPtr > ();
         break;
         break;
 
 
-      case 144: // "boolean"
+      case 145: // "boolean"
         value.template destroy< bool > ();
         value.template destroy< bool > ();
         break;
         break;
 
 
-      case 143: // "floating point"
+      case 144: // "floating point"
         value.template destroy< double > ();
         value.template destroy< double > ();
         break;
         break;
 
 
-      case 142: // "integer"
+      case 143: // "integer"
         value.template destroy< int64_t > ();
         value.template destroy< int64_t > ();
         break;
         break;
 
 
-      case 141: // "constant string"
+      case 142: // "constant string"
         value.template destroy< std::string > ();
         value.template destroy< std::string > ();
         break;
         break;
 
 
@@ -1670,29 +1676,29 @@ namespace isc { namespace dhcp {
     super_type::move(s);
     super_type::move(s);
       switch (this->type_get ())
       switch (this->type_get ())
     {
     {
-      case 158: // value
-      case 162: // map_value
-      case 200: // socket_type
-      case 210: // db_type
-      case 287: // hr_mode
-      case 420: // ncr_protocol_value
-      case 428: // replace_client_name_value
+      case 159: // value
+      case 163: // map_value
+      case 201: // socket_type
+      case 211: // db_type
+      case 288: // hr_mode
+      case 429: // ncr_protocol_value
+      case 437: // replace_client_name_value
         value.move< ElementPtr > (s.value);
         value.move< ElementPtr > (s.value);
         break;
         break;
 
 
-      case 144: // "boolean"
+      case 145: // "boolean"
         value.move< bool > (s.value);
         value.move< bool > (s.value);
         break;
         break;
 
 
-      case 143: // "floating point"
+      case 144: // "floating point"
         value.move< double > (s.value);
         value.move< double > (s.value);
         break;
         break;
 
 
-      case 142: // "integer"
+      case 143: // "integer"
         value.move< int64_t > (s.value);
         value.move< int64_t > (s.value);
         break;
         break;
 
 
-      case 141: // "constant string"
+      case 142: // "constant string"
         value.move< std::string > (s.value);
         value.move< std::string > (s.value);
         break;
         break;
 
 
@@ -1765,7 +1771,7 @@ namespace isc { namespace dhcp {
      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
-     395,   396,   397,   398,   399
+     395,   396,   397,   398,   399,   400
     };
     };
     return static_cast<token_type> (yytoken_number_[type]);
     return static_cast<token_type> (yytoken_number_[type]);
   }
   }
@@ -2107,6 +2113,12 @@ namespace isc { namespace dhcp {
   }
   }
 
 
   Dhcp4Parser::symbol_type
   Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_SHARED_NETWORKS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SHARED_NETWORKS, l);
+  }
+
+  Dhcp4Parser::symbol_type
   Dhcp4Parser::make_POOLS (const location_type& l)
   Dhcp4Parser::make_POOLS (const location_type& l)
   {
   {
     return symbol_type (token::TOKEN_POOLS, l);
     return symbol_type (token::TOKEN_POOLS, l);
@@ -2631,7 +2643,7 @@ namespace isc { namespace dhcp {
 
 
 #line 14 "dhcp4_parser.yy" // lalr1.cc:377
 #line 14 "dhcp4_parser.yy" // lalr1.cc:377
 } } // isc::dhcp
 } } // isc::dhcp
-#line 2635 "dhcp4_parser.h" // lalr1.cc:377
+#line 2647 "dhcp4_parser.h" // lalr1.cc:377
 
 
 
 
 
 

Fichier diff supprimé car celui-ci est trop grand
+ 1263 - 1451
src/bin/dhcp6/dhcp6_lexer.cc


Fichier diff supprimé car celui-ci est trop grand
+ 1474 - 1411
src/bin/dhcp6/dhcp6_parser.cc


+ 149 - 138
src/bin/dhcp6/dhcp6_parser.h

@@ -410,93 +410,94 @@ namespace isc { namespace dhcp {
         TOKEN_DISABLED = 318,
         TOKEN_DISABLED = 318,
         TOKEN_OUT_OF_POOL = 319,
         TOKEN_OUT_OF_POOL = 319,
         TOKEN_ALL = 320,
         TOKEN_ALL = 320,
-        TOKEN_MAC_SOURCES = 321,
-        TOKEN_RELAY_SUPPLIED_OPTIONS = 322,
-        TOKEN_HOST_RESERVATION_IDENTIFIERS = 323,
-        TOKEN_CLIENT_CLASSES = 324,
-        TOKEN_TEST = 325,
-        TOKEN_CLIENT_CLASS = 326,
-        TOKEN_RESERVATIONS = 327,
-        TOKEN_IP_ADDRESSES = 328,
-        TOKEN_PREFIXES = 329,
-        TOKEN_DUID = 330,
-        TOKEN_HW_ADDRESS = 331,
-        TOKEN_HOSTNAME = 332,
-        TOKEN_FLEX_ID = 333,
-        TOKEN_RELAY = 334,
-        TOKEN_IP_ADDRESS = 335,
-        TOKEN_HOOKS_LIBRARIES = 336,
-        TOKEN_LIBRARY = 337,
-        TOKEN_PARAMETERS = 338,
-        TOKEN_EXPIRED_LEASES_PROCESSING = 339,
-        TOKEN_RECLAIM_TIMER_WAIT_TIME = 340,
-        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 341,
-        TOKEN_HOLD_RECLAIMED_TIME = 342,
-        TOKEN_MAX_RECLAIM_LEASES = 343,
-        TOKEN_MAX_RECLAIM_TIME = 344,
-        TOKEN_UNWARNED_RECLAIM_CYCLES = 345,
-        TOKEN_SERVER_ID = 346,
-        TOKEN_LLT = 347,
-        TOKEN_EN = 348,
-        TOKEN_LL = 349,
-        TOKEN_IDENTIFIER = 350,
-        TOKEN_HTYPE = 351,
-        TOKEN_TIME = 352,
-        TOKEN_ENTERPRISE_ID = 353,
-        TOKEN_DHCP4O6_PORT = 354,
-        TOKEN_CONTROL_SOCKET = 355,
-        TOKEN_SOCKET_TYPE = 356,
-        TOKEN_SOCKET_NAME = 357,
-        TOKEN_DHCP_DDNS = 358,
-        TOKEN_ENABLE_UPDATES = 359,
-        TOKEN_QUALIFYING_SUFFIX = 360,
-        TOKEN_SERVER_IP = 361,
-        TOKEN_SERVER_PORT = 362,
-        TOKEN_SENDER_IP = 363,
-        TOKEN_SENDER_PORT = 364,
-        TOKEN_MAX_QUEUE_SIZE = 365,
-        TOKEN_NCR_PROTOCOL = 366,
-        TOKEN_NCR_FORMAT = 367,
-        TOKEN_ALWAYS_INCLUDE_FQDN = 368,
-        TOKEN_OVERRIDE_NO_UPDATE = 369,
-        TOKEN_OVERRIDE_CLIENT_UPDATE = 370,
-        TOKEN_REPLACE_CLIENT_NAME = 371,
-        TOKEN_GENERATED_PREFIX = 372,
-        TOKEN_UDP = 373,
-        TOKEN_TCP = 374,
-        TOKEN_JSON = 375,
-        TOKEN_WHEN_PRESENT = 376,
-        TOKEN_NEVER = 377,
-        TOKEN_ALWAYS = 378,
-        TOKEN_WHEN_NOT_PRESENT = 379,
-        TOKEN_LOGGING = 380,
-        TOKEN_LOGGERS = 381,
-        TOKEN_OUTPUT_OPTIONS = 382,
-        TOKEN_OUTPUT = 383,
-        TOKEN_DEBUGLEVEL = 384,
-        TOKEN_SEVERITY = 385,
-        TOKEN_FLUSH = 386,
-        TOKEN_MAXSIZE = 387,
-        TOKEN_MAXVER = 388,
-        TOKEN_DHCP4 = 389,
-        TOKEN_DHCPDDNS = 390,
-        TOKEN_CONTROL_AGENT = 391,
-        TOKEN_TOPLEVEL_JSON = 392,
-        TOKEN_TOPLEVEL_DHCP6 = 393,
-        TOKEN_SUB_DHCP6 = 394,
-        TOKEN_SUB_INTERFACES6 = 395,
-        TOKEN_SUB_SUBNET6 = 396,
-        TOKEN_SUB_POOL6 = 397,
-        TOKEN_SUB_PD_POOL = 398,
-        TOKEN_SUB_RESERVATION = 399,
-        TOKEN_SUB_OPTION_DEF = 400,
-        TOKEN_SUB_OPTION_DATA = 401,
-        TOKEN_SUB_HOOKS_LIBRARY = 402,
-        TOKEN_SUB_DHCP_DDNS = 403,
-        TOKEN_STRING = 404,
-        TOKEN_INTEGER = 405,
-        TOKEN_FLOAT = 406,
-        TOKEN_BOOLEAN = 407
+        TOKEN_SHARED_NETWORKS = 321,
+        TOKEN_MAC_SOURCES = 322,
+        TOKEN_RELAY_SUPPLIED_OPTIONS = 323,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 324,
+        TOKEN_CLIENT_CLASSES = 325,
+        TOKEN_TEST = 326,
+        TOKEN_CLIENT_CLASS = 327,
+        TOKEN_RESERVATIONS = 328,
+        TOKEN_IP_ADDRESSES = 329,
+        TOKEN_PREFIXES = 330,
+        TOKEN_DUID = 331,
+        TOKEN_HW_ADDRESS = 332,
+        TOKEN_HOSTNAME = 333,
+        TOKEN_FLEX_ID = 334,
+        TOKEN_RELAY = 335,
+        TOKEN_IP_ADDRESS = 336,
+        TOKEN_HOOKS_LIBRARIES = 337,
+        TOKEN_LIBRARY = 338,
+        TOKEN_PARAMETERS = 339,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 340,
+        TOKEN_RECLAIM_TIMER_WAIT_TIME = 341,
+        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 342,
+        TOKEN_HOLD_RECLAIMED_TIME = 343,
+        TOKEN_MAX_RECLAIM_LEASES = 344,
+        TOKEN_MAX_RECLAIM_TIME = 345,
+        TOKEN_UNWARNED_RECLAIM_CYCLES = 346,
+        TOKEN_SERVER_ID = 347,
+        TOKEN_LLT = 348,
+        TOKEN_EN = 349,
+        TOKEN_LL = 350,
+        TOKEN_IDENTIFIER = 351,
+        TOKEN_HTYPE = 352,
+        TOKEN_TIME = 353,
+        TOKEN_ENTERPRISE_ID = 354,
+        TOKEN_DHCP4O6_PORT = 355,
+        TOKEN_CONTROL_SOCKET = 356,
+        TOKEN_SOCKET_TYPE = 357,
+        TOKEN_SOCKET_NAME = 358,
+        TOKEN_DHCP_DDNS = 359,
+        TOKEN_ENABLE_UPDATES = 360,
+        TOKEN_QUALIFYING_SUFFIX = 361,
+        TOKEN_SERVER_IP = 362,
+        TOKEN_SERVER_PORT = 363,
+        TOKEN_SENDER_IP = 364,
+        TOKEN_SENDER_PORT = 365,
+        TOKEN_MAX_QUEUE_SIZE = 366,
+        TOKEN_NCR_PROTOCOL = 367,
+        TOKEN_NCR_FORMAT = 368,
+        TOKEN_ALWAYS_INCLUDE_FQDN = 369,
+        TOKEN_OVERRIDE_NO_UPDATE = 370,
+        TOKEN_OVERRIDE_CLIENT_UPDATE = 371,
+        TOKEN_REPLACE_CLIENT_NAME = 372,
+        TOKEN_GENERATED_PREFIX = 373,
+        TOKEN_UDP = 374,
+        TOKEN_TCP = 375,
+        TOKEN_JSON = 376,
+        TOKEN_WHEN_PRESENT = 377,
+        TOKEN_NEVER = 378,
+        TOKEN_ALWAYS = 379,
+        TOKEN_WHEN_NOT_PRESENT = 380,
+        TOKEN_LOGGING = 381,
+        TOKEN_LOGGERS = 382,
+        TOKEN_OUTPUT_OPTIONS = 383,
+        TOKEN_OUTPUT = 384,
+        TOKEN_DEBUGLEVEL = 385,
+        TOKEN_SEVERITY = 386,
+        TOKEN_FLUSH = 387,
+        TOKEN_MAXSIZE = 388,
+        TOKEN_MAXVER = 389,
+        TOKEN_DHCP4 = 390,
+        TOKEN_DHCPDDNS = 391,
+        TOKEN_CONTROL_AGENT = 392,
+        TOKEN_TOPLEVEL_JSON = 393,
+        TOKEN_TOPLEVEL_DHCP6 = 394,
+        TOKEN_SUB_DHCP6 = 395,
+        TOKEN_SUB_INTERFACES6 = 396,
+        TOKEN_SUB_SUBNET6 = 397,
+        TOKEN_SUB_POOL6 = 398,
+        TOKEN_SUB_PD_POOL = 399,
+        TOKEN_SUB_RESERVATION = 400,
+        TOKEN_SUB_OPTION_DEF = 401,
+        TOKEN_SUB_OPTION_DATA = 402,
+        TOKEN_SUB_HOOKS_LIBRARY = 403,
+        TOKEN_SUB_DHCP_DDNS = 404,
+        TOKEN_STRING = 405,
+        TOKEN_INTEGER = 406,
+        TOKEN_FLOAT = 407,
+        TOKEN_BOOLEAN = 408
       };
       };
     };
     };
 
 
@@ -869,6 +870,10 @@ namespace isc { namespace dhcp {
 
 
     static inline
     static inline
     symbol_type
     symbol_type
+    make_SHARED_NETWORKS (const location_type& l);
+
+    static inline
+    symbol_type
     make_MAC_SOURCES (const location_type& l);
     make_MAC_SOURCES (const location_type& l);
 
 
     static inline
     static inline
@@ -1420,12 +1425,12 @@ namespace isc { namespace dhcp {
     enum
     enum
     {
     {
       yyeof_ = 0,
       yyeof_ = 0,
-      yylast_ = 804,     ///< Last index in yytable_.
-      yynnts_ = 335,  ///< Number of nonterminal symbols.
+      yylast_ = 835,     ///< Last index in yytable_.
+      yynnts_ = 343,  ///< Number of nonterminal symbols.
       yyfinal_ = 26, ///< Termination state number.
       yyfinal_ = 26, ///< Termination state number.
       yyterror_ = 1,
       yyterror_ = 1,
       yyerrcode_ = 256,
       yyerrcode_ = 256,
-      yyntokens_ = 153  ///< Number of tokens.
+      yyntokens_ = 154  ///< Number of tokens.
     };
     };
 
 
 
 
@@ -1482,9 +1487,9 @@ namespace isc { namespace dhcp {
      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,   149,   150,   151,   152
+     145,   146,   147,   148,   149,   150,   151,   152,   153
     };
     };
-    const unsigned int user_token_number_max_ = 407;
+    const unsigned int user_token_number_max_ = 408;
     const token_number_type undef_token_ = 2;
     const token_number_type undef_token_ = 2;
 
 
     if (static_cast<int>(t) <= yyeof_)
     if (static_cast<int>(t) <= yyeof_)
@@ -1517,29 +1522,29 @@ namespace isc { namespace dhcp {
   {
   {
       switch (other.type_get ())
       switch (other.type_get ())
     {
     {
-      case 167: // value
-      case 171: // map_value
-      case 215: // db_type
-      case 291: // hr_mode
-      case 412: // duid_type
-      case 445: // ncr_protocol_value
-      case 453: // replace_client_name_value
+      case 168: // value
+      case 172: // map_value
+      case 216: // db_type
+      case 292: // hr_mode
+      case 421: // duid_type
+      case 454: // ncr_protocol_value
+      case 462: // replace_client_name_value
         value.copy< ElementPtr > (other.value);
         value.copy< ElementPtr > (other.value);
         break;
         break;
 
 
-      case 152: // "boolean"
+      case 153: // "boolean"
         value.copy< bool > (other.value);
         value.copy< bool > (other.value);
         break;
         break;
 
 
-      case 151: // "floating point"
+      case 152: // "floating point"
         value.copy< double > (other.value);
         value.copy< double > (other.value);
         break;
         break;
 
 
-      case 150: // "integer"
+      case 151: // "integer"
         value.copy< int64_t > (other.value);
         value.copy< int64_t > (other.value);
         break;
         break;
 
 
-      case 149: // "constant string"
+      case 150: // "constant string"
         value.copy< std::string > (other.value);
         value.copy< std::string > (other.value);
         break;
         break;
 
 
@@ -1560,29 +1565,29 @@ namespace isc { namespace dhcp {
     (void) v;
     (void) v;
       switch (this->type_get ())
       switch (this->type_get ())
     {
     {
-      case 167: // value
-      case 171: // map_value
-      case 215: // db_type
-      case 291: // hr_mode
-      case 412: // duid_type
-      case 445: // ncr_protocol_value
-      case 453: // replace_client_name_value
+      case 168: // value
+      case 172: // map_value
+      case 216: // db_type
+      case 292: // hr_mode
+      case 421: // duid_type
+      case 454: // ncr_protocol_value
+      case 462: // replace_client_name_value
         value.copy< ElementPtr > (v);
         value.copy< ElementPtr > (v);
         break;
         break;
 
 
-      case 152: // "boolean"
+      case 153: // "boolean"
         value.copy< bool > (v);
         value.copy< bool > (v);
         break;
         break;
 
 
-      case 151: // "floating point"
+      case 152: // "floating point"
         value.copy< double > (v);
         value.copy< double > (v);
         break;
         break;
 
 
-      case 150: // "integer"
+      case 151: // "integer"
         value.copy< int64_t > (v);
         value.copy< int64_t > (v);
         break;
         break;
 
 
-      case 149: // "constant string"
+      case 150: // "constant string"
         value.copy< std::string > (v);
         value.copy< std::string > (v);
         break;
         break;
 
 
@@ -1662,29 +1667,29 @@ namespace isc { namespace dhcp {
     // Type destructor.
     // Type destructor.
     switch (yytype)
     switch (yytype)
     {
     {
-      case 167: // value
-      case 171: // map_value
-      case 215: // db_type
-      case 291: // hr_mode
-      case 412: // duid_type
-      case 445: // ncr_protocol_value
-      case 453: // replace_client_name_value
+      case 168: // value
+      case 172: // map_value
+      case 216: // db_type
+      case 292: // hr_mode
+      case 421: // duid_type
+      case 454: // ncr_protocol_value
+      case 462: // replace_client_name_value
         value.template destroy< ElementPtr > ();
         value.template destroy< ElementPtr > ();
         break;
         break;
 
 
-      case 152: // "boolean"
+      case 153: // "boolean"
         value.template destroy< bool > ();
         value.template destroy< bool > ();
         break;
         break;
 
 
-      case 151: // "floating point"
+      case 152: // "floating point"
         value.template destroy< double > ();
         value.template destroy< double > ();
         break;
         break;
 
 
-      case 150: // "integer"
+      case 151: // "integer"
         value.template destroy< int64_t > ();
         value.template destroy< int64_t > ();
         break;
         break;
 
 
-      case 149: // "constant string"
+      case 150: // "constant string"
         value.template destroy< std::string > ();
         value.template destroy< std::string > ();
         break;
         break;
 
 
@@ -1711,29 +1716,29 @@ namespace isc { namespace dhcp {
     super_type::move(s);
     super_type::move(s);
       switch (this->type_get ())
       switch (this->type_get ())
     {
     {
-      case 167: // value
-      case 171: // map_value
-      case 215: // db_type
-      case 291: // hr_mode
-      case 412: // duid_type
-      case 445: // ncr_protocol_value
-      case 453: // replace_client_name_value
+      case 168: // value
+      case 172: // map_value
+      case 216: // db_type
+      case 292: // hr_mode
+      case 421: // duid_type
+      case 454: // ncr_protocol_value
+      case 462: // replace_client_name_value
         value.move< ElementPtr > (s.value);
         value.move< ElementPtr > (s.value);
         break;
         break;
 
 
-      case 152: // "boolean"
+      case 153: // "boolean"
         value.move< bool > (s.value);
         value.move< bool > (s.value);
         break;
         break;
 
 
-      case 151: // "floating point"
+      case 152: // "floating point"
         value.move< double > (s.value);
         value.move< double > (s.value);
         break;
         break;
 
 
-      case 150: // "integer"
+      case 151: // "integer"
         value.move< int64_t > (s.value);
         value.move< int64_t > (s.value);
         break;
         break;
 
 
-      case 149: // "constant string"
+      case 150: // "constant string"
         value.move< std::string > (s.value);
         value.move< std::string > (s.value);
         break;
         break;
 
 
@@ -1807,7 +1812,7 @@ namespace isc { namespace dhcp {
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
-     405,   406,   407
+     405,   406,   407,   408
     };
     };
     return static_cast<token_type> (yytoken_number_[type]);
     return static_cast<token_type> (yytoken_number_[type]);
   }
   }
@@ -2197,6 +2202,12 @@ namespace isc { namespace dhcp {
   }
   }
 
 
   Dhcp6Parser::symbol_type
   Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_SHARED_NETWORKS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_SHARED_NETWORKS, l);
+  }
+
+  Dhcp6Parser::symbol_type
   Dhcp6Parser::make_MAC_SOURCES (const location_type& l)
   Dhcp6Parser::make_MAC_SOURCES (const location_type& l)
   {
   {
     return symbol_type (token::TOKEN_MAC_SOURCES, l);
     return symbol_type (token::TOKEN_MAC_SOURCES, l);
@@ -2721,7 +2732,7 @@ namespace isc { namespace dhcp {
 
 
 #line 14 "dhcp6_parser.yy" // lalr1.cc:377
 #line 14 "dhcp6_parser.yy" // lalr1.cc:377
 } } // isc::dhcp
 } } // isc::dhcp
-#line 2725 "dhcp6_parser.h" // lalr1.cc:377
+#line 2736 "dhcp6_parser.h" // lalr1.cc:377