dhcp6_parser.cc 146 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321
  1. // A Bison parser, made by GNU Bison 3.0.4.
  2. // Skeleton implementation for Bison LALR(1) parsers in C++
  3. // Copyright (C) 2002-2015 Free Software Foundation, Inc.
  4. // This program is free software: you can redistribute it and/or modify
  5. // it under the terms of the GNU General Public License as published by
  6. // the Free Software Foundation, either version 3 of the License, or
  7. // (at your option) any later version.
  8. // This program is distributed in the hope that it will be useful,
  9. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. // GNU General Public License for more details.
  12. // You should have received a copy of the GNU General Public License
  13. // along with this program. If not, see <http://www.gnu.org/licenses/>.
  14. // As a special exception, you may create a larger work that contains
  15. // part or all of the Bison parser skeleton and distribute that work
  16. // under terms of your choice, so long as that work isn't itself a
  17. // parser generator using the skeleton or a modified version thereof
  18. // as a parser skeleton. Alternatively, if you modify or redistribute
  19. // the parser skeleton itself, you may (at your option) remove this
  20. // special exception, which will cause the skeleton and the resulting
  21. // Bison output files to be licensed under the GNU General Public
  22. // License without this special exception.
  23. // This special exception was added by the Free Software Foundation in
  24. // version 2.2 of Bison.
  25. // Take the name prefix into account.
  26. #define yylex parser6_lex
  27. // First part of user declarations.
  28. #line 39 "dhcp6_parser.cc" // lalr1.cc:404
  29. # ifndef YY_NULLPTR
  30. # if defined __cplusplus && 201103L <= __cplusplus
  31. # define YY_NULLPTR nullptr
  32. # else
  33. # define YY_NULLPTR 0
  34. # endif
  35. # endif
  36. #include "dhcp6_parser.h"
  37. // User implementation prologue.
  38. #line 53 "dhcp6_parser.cc" // lalr1.cc:412
  39. // Unqualified %code blocks.
  40. #line 34 "dhcp6_parser.yy" // lalr1.cc:413
  41. #include <dhcp6/parser_context.h>
  42. #line 59 "dhcp6_parser.cc" // lalr1.cc:413
  43. #ifndef YY_
  44. # if defined YYENABLE_NLS && YYENABLE_NLS
  45. # if ENABLE_NLS
  46. # include <libintl.h> // FIXME: INFRINGES ON USER NAME SPACE.
  47. # define YY_(msgid) dgettext ("bison-runtime", msgid)
  48. # endif
  49. # endif
  50. # ifndef YY_
  51. # define YY_(msgid) msgid
  52. # endif
  53. #endif
  54. #define YYRHSLOC(Rhs, K) ((Rhs)[K].location)
  55. /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
  56. If N is 0, then set CURRENT to the empty location which ends
  57. the previous symbol: RHS[0] (always defined). */
  58. # ifndef YYLLOC_DEFAULT
  59. # define YYLLOC_DEFAULT(Current, Rhs, N) \
  60. do \
  61. if (N) \
  62. { \
  63. (Current).begin = YYRHSLOC (Rhs, 1).begin; \
  64. (Current).end = YYRHSLOC (Rhs, N).end; \
  65. } \
  66. else \
  67. { \
  68. (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \
  69. } \
  70. while (/*CONSTCOND*/ false)
  71. # endif
  72. // Suppress unused-variable warnings by "using" E.
  73. #define YYUSE(E) ((void) (E))
  74. // Enable debugging if requested.
  75. #if PARSER6_DEBUG
  76. // A pseudo ostream that takes yydebug_ into account.
  77. # define YYCDEBUG if (yydebug_) (*yycdebug_)
  78. # define YY_SYMBOL_PRINT(Title, Symbol) \
  79. do { \
  80. if (yydebug_) \
  81. { \
  82. *yycdebug_ << Title << ' '; \
  83. yy_print_ (*yycdebug_, Symbol); \
  84. *yycdebug_ << std::endl; \
  85. } \
  86. } while (false)
  87. # define YY_REDUCE_PRINT(Rule) \
  88. do { \
  89. if (yydebug_) \
  90. yy_reduce_print_ (Rule); \
  91. } while (false)
  92. # define YY_STACK_PRINT() \
  93. do { \
  94. if (yydebug_) \
  95. yystack_print_ (); \
  96. } while (false)
  97. #else // !PARSER6_DEBUG
  98. # define YYCDEBUG if (false) std::cerr
  99. # define YY_SYMBOL_PRINT(Title, Symbol) YYUSE(Symbol)
  100. # define YY_REDUCE_PRINT(Rule) static_cast<void>(0)
  101. # define YY_STACK_PRINT() static_cast<void>(0)
  102. #endif // !PARSER6_DEBUG
  103. #define yyerrok (yyerrstatus_ = 0)
  104. #define yyclearin (yyla.clear ())
  105. #define YYACCEPT goto yyacceptlab
  106. #define YYABORT goto yyabortlab
  107. #define YYERROR goto yyerrorlab
  108. #define YYRECOVERING() (!!yyerrstatus_)
  109. #line 14 "dhcp6_parser.yy" // lalr1.cc:479
  110. namespace isc { namespace dhcp {
  111. #line 145 "dhcp6_parser.cc" // lalr1.cc:479
  112. /* Return YYSTR after stripping away unnecessary quotes and
  113. backslashes, so that it's suitable for yyerror. The heuristic is
  114. that double-quoting is unnecessary unless the string contains an
  115. apostrophe, a comma, or backslash (other than backslash-backslash).
  116. YYSTR is taken from yytname. */
  117. std::string
  118. Dhcp6Parser::yytnamerr_ (const char *yystr)
  119. {
  120. if (*yystr == '"')
  121. {
  122. std::string yyr = "";
  123. char const *yyp = yystr;
  124. for (;;)
  125. switch (*++yyp)
  126. {
  127. case '\'':
  128. case ',':
  129. goto do_not_strip_quotes;
  130. case '\\':
  131. if (*++yyp != '\\')
  132. goto do_not_strip_quotes;
  133. // Fall through.
  134. default:
  135. yyr += *yyp;
  136. break;
  137. case '"':
  138. return yyr;
  139. }
  140. do_not_strip_quotes: ;
  141. }
  142. return yystr;
  143. }
  144. /// Build a parser object.
  145. Dhcp6Parser::Dhcp6Parser (isc::dhcp::Parser6Context& ctx_yyarg)
  146. :
  147. #if PARSER6_DEBUG
  148. yydebug_ (false),
  149. yycdebug_ (&std::cerr),
  150. #endif
  151. ctx (ctx_yyarg)
  152. {}
  153. Dhcp6Parser::~Dhcp6Parser ()
  154. {}
  155. /*---------------.
  156. | Symbol types. |
  157. `---------------*/
  158. // by_state.
  159. inline
  160. Dhcp6Parser::by_state::by_state ()
  161. : state (empty_state)
  162. {}
  163. inline
  164. Dhcp6Parser::by_state::by_state (const by_state& other)
  165. : state (other.state)
  166. {}
  167. inline
  168. void
  169. Dhcp6Parser::by_state::clear ()
  170. {
  171. state = empty_state;
  172. }
  173. inline
  174. void
  175. Dhcp6Parser::by_state::move (by_state& that)
  176. {
  177. state = that.state;
  178. that.clear ();
  179. }
  180. inline
  181. Dhcp6Parser::by_state::by_state (state_type s)
  182. : state (s)
  183. {}
  184. inline
  185. Dhcp6Parser::symbol_number_type
  186. Dhcp6Parser::by_state::type_get () const
  187. {
  188. if (state == empty_state)
  189. return empty_symbol;
  190. else
  191. return yystos_[state];
  192. }
  193. inline
  194. Dhcp6Parser::stack_symbol_type::stack_symbol_type ()
  195. {}
  196. inline
  197. Dhcp6Parser::stack_symbol_type::stack_symbol_type (state_type s, symbol_type& that)
  198. : super_type (s, that.location)
  199. {
  200. switch (that.type_get ())
  201. {
  202. case 166: // value
  203. case 170: // map_value
  204. case 214: // db_type
  205. case 290: // hr_mode
  206. case 410: // duid_type
  207. case 443: // ncr_protocol_value
  208. case 451: // replace_client_name_value
  209. value.move< ElementPtr > (that.value);
  210. break;
  211. case 151: // "boolean"
  212. value.move< bool > (that.value);
  213. break;
  214. case 150: // "floating point"
  215. value.move< double > (that.value);
  216. break;
  217. case 149: // "integer"
  218. value.move< int64_t > (that.value);
  219. break;
  220. case 148: // "constant string"
  221. value.move< std::string > (that.value);
  222. break;
  223. default:
  224. break;
  225. }
  226. // that is emptied.
  227. that.type = empty_symbol;
  228. }
  229. inline
  230. Dhcp6Parser::stack_symbol_type&
  231. Dhcp6Parser::stack_symbol_type::operator= (const stack_symbol_type& that)
  232. {
  233. state = that.state;
  234. switch (that.type_get ())
  235. {
  236. case 166: // value
  237. case 170: // map_value
  238. case 214: // db_type
  239. case 290: // hr_mode
  240. case 410: // duid_type
  241. case 443: // ncr_protocol_value
  242. case 451: // replace_client_name_value
  243. value.copy< ElementPtr > (that.value);
  244. break;
  245. case 151: // "boolean"
  246. value.copy< bool > (that.value);
  247. break;
  248. case 150: // "floating point"
  249. value.copy< double > (that.value);
  250. break;
  251. case 149: // "integer"
  252. value.copy< int64_t > (that.value);
  253. break;
  254. case 148: // "constant string"
  255. value.copy< std::string > (that.value);
  256. break;
  257. default:
  258. break;
  259. }
  260. location = that.location;
  261. return *this;
  262. }
  263. template <typename Base>
  264. inline
  265. void
  266. Dhcp6Parser::yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const
  267. {
  268. if (yymsg)
  269. YY_SYMBOL_PRINT (yymsg, yysym);
  270. }
  271. #if PARSER6_DEBUG
  272. template <typename Base>
  273. void
  274. Dhcp6Parser::yy_print_ (std::ostream& yyo,
  275. const basic_symbol<Base>& yysym) const
  276. {
  277. std::ostream& yyoutput = yyo;
  278. YYUSE (yyoutput);
  279. symbol_number_type yytype = yysym.type_get ();
  280. // Avoid a (spurious) G++ 4.8 warning about "array subscript is
  281. // below array bounds".
  282. if (yysym.empty ())
  283. std::abort ();
  284. yyo << (yytype < yyntokens_ ? "token" : "nterm")
  285. << ' ' << yytname_[yytype] << " ("
  286. << yysym.location << ": ";
  287. switch (yytype)
  288. {
  289. case 148: // "constant string"
  290. #line 224 "dhcp6_parser.yy" // lalr1.cc:636
  291. { yyoutput << yysym.value.template as< std::string > (); }
  292. #line 364 "dhcp6_parser.cc" // lalr1.cc:636
  293. break;
  294. case 149: // "integer"
  295. #line 224 "dhcp6_parser.yy" // lalr1.cc:636
  296. { yyoutput << yysym.value.template as< int64_t > (); }
  297. #line 371 "dhcp6_parser.cc" // lalr1.cc:636
  298. break;
  299. case 150: // "floating point"
  300. #line 224 "dhcp6_parser.yy" // lalr1.cc:636
  301. { yyoutput << yysym.value.template as< double > (); }
  302. #line 378 "dhcp6_parser.cc" // lalr1.cc:636
  303. break;
  304. case 151: // "boolean"
  305. #line 224 "dhcp6_parser.yy" // lalr1.cc:636
  306. { yyoutput << yysym.value.template as< bool > (); }
  307. #line 385 "dhcp6_parser.cc" // lalr1.cc:636
  308. break;
  309. case 166: // value
  310. #line 224 "dhcp6_parser.yy" // lalr1.cc:636
  311. { yyoutput << yysym.value.template as< ElementPtr > (); }
  312. #line 392 "dhcp6_parser.cc" // lalr1.cc:636
  313. break;
  314. case 170: // map_value
  315. #line 224 "dhcp6_parser.yy" // lalr1.cc:636
  316. { yyoutput << yysym.value.template as< ElementPtr > (); }
  317. #line 399 "dhcp6_parser.cc" // lalr1.cc:636
  318. break;
  319. case 214: // db_type
  320. #line 224 "dhcp6_parser.yy" // lalr1.cc:636
  321. { yyoutput << yysym.value.template as< ElementPtr > (); }
  322. #line 406 "dhcp6_parser.cc" // lalr1.cc:636
  323. break;
  324. case 290: // hr_mode
  325. #line 224 "dhcp6_parser.yy" // lalr1.cc:636
  326. { yyoutput << yysym.value.template as< ElementPtr > (); }
  327. #line 413 "dhcp6_parser.cc" // lalr1.cc:636
  328. break;
  329. case 410: // duid_type
  330. #line 224 "dhcp6_parser.yy" // lalr1.cc:636
  331. { yyoutput << yysym.value.template as< ElementPtr > (); }
  332. #line 420 "dhcp6_parser.cc" // lalr1.cc:636
  333. break;
  334. case 443: // ncr_protocol_value
  335. #line 224 "dhcp6_parser.yy" // lalr1.cc:636
  336. { yyoutput << yysym.value.template as< ElementPtr > (); }
  337. #line 427 "dhcp6_parser.cc" // lalr1.cc:636
  338. break;
  339. case 451: // replace_client_name_value
  340. #line 224 "dhcp6_parser.yy" // lalr1.cc:636
  341. { yyoutput << yysym.value.template as< ElementPtr > (); }
  342. #line 434 "dhcp6_parser.cc" // lalr1.cc:636
  343. break;
  344. default:
  345. break;
  346. }
  347. yyo << ')';
  348. }
  349. #endif
  350. inline
  351. void
  352. Dhcp6Parser::yypush_ (const char* m, state_type s, symbol_type& sym)
  353. {
  354. stack_symbol_type t (s, sym);
  355. yypush_ (m, t);
  356. }
  357. inline
  358. void
  359. Dhcp6Parser::yypush_ (const char* m, stack_symbol_type& s)
  360. {
  361. if (m)
  362. YY_SYMBOL_PRINT (m, s);
  363. yystack_.push (s);
  364. }
  365. inline
  366. void
  367. Dhcp6Parser::yypop_ (unsigned int n)
  368. {
  369. yystack_.pop (n);
  370. }
  371. #if PARSER6_DEBUG
  372. std::ostream&
  373. Dhcp6Parser::debug_stream () const
  374. {
  375. return *yycdebug_;
  376. }
  377. void
  378. Dhcp6Parser::set_debug_stream (std::ostream& o)
  379. {
  380. yycdebug_ = &o;
  381. }
  382. Dhcp6Parser::debug_level_type
  383. Dhcp6Parser::debug_level () const
  384. {
  385. return yydebug_;
  386. }
  387. void
  388. Dhcp6Parser::set_debug_level (debug_level_type l)
  389. {
  390. yydebug_ = l;
  391. }
  392. #endif // PARSER6_DEBUG
  393. inline Dhcp6Parser::state_type
  394. Dhcp6Parser::yy_lr_goto_state_ (state_type yystate, int yysym)
  395. {
  396. int yyr = yypgoto_[yysym - yyntokens_] + yystate;
  397. if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
  398. return yytable_[yyr];
  399. else
  400. return yydefgoto_[yysym - yyntokens_];
  401. }
  402. inline bool
  403. Dhcp6Parser::yy_pact_value_is_default_ (int yyvalue)
  404. {
  405. return yyvalue == yypact_ninf_;
  406. }
  407. inline bool
  408. Dhcp6Parser::yy_table_value_is_error_ (int yyvalue)
  409. {
  410. return yyvalue == yytable_ninf_;
  411. }
  412. int
  413. Dhcp6Parser::parse ()
  414. {
  415. // State.
  416. int yyn;
  417. /// Length of the RHS of the rule being reduced.
  418. int yylen = 0;
  419. // Error handling.
  420. int yynerrs_ = 0;
  421. int yyerrstatus_ = 0;
  422. /// The lookahead symbol.
  423. symbol_type yyla;
  424. /// The locations where the error started and ended.
  425. stack_symbol_type yyerror_range[3];
  426. /// The return value of parse ().
  427. int yyresult;
  428. // FIXME: This should be completely indented. It is not yet to
  429. // avoid gratuitous conflicts when merging into the master branch.
  430. try
  431. {
  432. YYCDEBUG << "Starting parse" << std::endl;
  433. /* Initialize the stack. The initial state will be set in
  434. yynewstate, since the latter expects the semantical and the
  435. location values to have been already stored, initialize these
  436. stacks with a primary value. */
  437. yystack_.clear ();
  438. yypush_ (YY_NULLPTR, 0, yyla);
  439. // A new symbol was pushed on the stack.
  440. yynewstate:
  441. YYCDEBUG << "Entering state " << yystack_[0].state << std::endl;
  442. // Accept?
  443. if (yystack_[0].state == yyfinal_)
  444. goto yyacceptlab;
  445. goto yybackup;
  446. // Backup.
  447. yybackup:
  448. // Try to take a decision without lookahead.
  449. yyn = yypact_[yystack_[0].state];
  450. if (yy_pact_value_is_default_ (yyn))
  451. goto yydefault;
  452. // Read a lookahead token.
  453. if (yyla.empty ())
  454. {
  455. YYCDEBUG << "Reading a token: ";
  456. try
  457. {
  458. symbol_type yylookahead (yylex (ctx));
  459. yyla.move (yylookahead);
  460. }
  461. catch (const syntax_error& yyexc)
  462. {
  463. error (yyexc);
  464. goto yyerrlab1;
  465. }
  466. }
  467. YY_SYMBOL_PRINT ("Next token is", yyla);
  468. /* If the proper action on seeing token YYLA.TYPE is to reduce or
  469. to detect an error, take that action. */
  470. yyn += yyla.type_get ();
  471. if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.type_get ())
  472. goto yydefault;
  473. // Reduce or error.
  474. yyn = yytable_[yyn];
  475. if (yyn <= 0)
  476. {
  477. if (yy_table_value_is_error_ (yyn))
  478. goto yyerrlab;
  479. yyn = -yyn;
  480. goto yyreduce;
  481. }
  482. // Count tokens shifted since error; after three, turn off error status.
  483. if (yyerrstatus_)
  484. --yyerrstatus_;
  485. // Shift the lookahead token.
  486. yypush_ ("Shifting", yyn, yyla);
  487. goto yynewstate;
  488. /*-----------------------------------------------------------.
  489. | yydefault -- do the default action for the current state. |
  490. `-----------------------------------------------------------*/
  491. yydefault:
  492. yyn = yydefact_[yystack_[0].state];
  493. if (yyn == 0)
  494. goto yyerrlab;
  495. goto yyreduce;
  496. /*-----------------------------.
  497. | yyreduce -- Do a reduction. |
  498. `-----------------------------*/
  499. yyreduce:
  500. yylen = yyr2_[yyn];
  501. {
  502. stack_symbol_type yylhs;
  503. yylhs.state = yy_lr_goto_state_(yystack_[yylen].state, yyr1_[yyn]);
  504. /* Variants are always initialized to an empty instance of the
  505. correct type. The default '$$ = $1' action is NOT applied
  506. when using variants. */
  507. switch (yyr1_[yyn])
  508. {
  509. case 166: // value
  510. case 170: // map_value
  511. case 214: // db_type
  512. case 290: // hr_mode
  513. case 410: // duid_type
  514. case 443: // ncr_protocol_value
  515. case 451: // replace_client_name_value
  516. yylhs.value.build< ElementPtr > ();
  517. break;
  518. case 151: // "boolean"
  519. yylhs.value.build< bool > ();
  520. break;
  521. case 150: // "floating point"
  522. yylhs.value.build< double > ();
  523. break;
  524. case 149: // "integer"
  525. yylhs.value.build< int64_t > ();
  526. break;
  527. case 148: // "constant string"
  528. yylhs.value.build< std::string > ();
  529. break;
  530. default:
  531. break;
  532. }
  533. // Compute the default @$.
  534. {
  535. slice<stack_symbol_type, stack_type> slice (yystack_, yylen);
  536. YYLLOC_DEFAULT (yylhs.location, slice, yylen);
  537. }
  538. // Perform the reduction.
  539. YY_REDUCE_PRINT (yyn);
  540. try
  541. {
  542. switch (yyn)
  543. {
  544. case 2:
  545. #line 233 "dhcp6_parser.yy" // lalr1.cc:859
  546. { ctx.ctx_ = ctx.NO_KEYWORD; }
  547. #line 680 "dhcp6_parser.cc" // lalr1.cc:859
  548. break;
  549. case 4:
  550. #line 234 "dhcp6_parser.yy" // lalr1.cc:859
  551. { ctx.ctx_ = ctx.CONFIG; }
  552. #line 686 "dhcp6_parser.cc" // lalr1.cc:859
  553. break;
  554. case 6:
  555. #line 235 "dhcp6_parser.yy" // lalr1.cc:859
  556. { ctx.ctx_ = ctx.DHCP6; }
  557. #line 692 "dhcp6_parser.cc" // lalr1.cc:859
  558. break;
  559. case 8:
  560. #line 236 "dhcp6_parser.yy" // lalr1.cc:859
  561. { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
  562. #line 698 "dhcp6_parser.cc" // lalr1.cc:859
  563. break;
  564. case 10:
  565. #line 237 "dhcp6_parser.yy" // lalr1.cc:859
  566. { ctx.ctx_ = ctx.SUBNET6; }
  567. #line 704 "dhcp6_parser.cc" // lalr1.cc:859
  568. break;
  569. case 12:
  570. #line 238 "dhcp6_parser.yy" // lalr1.cc:859
  571. { ctx.ctx_ = ctx.POOLS; }
  572. #line 710 "dhcp6_parser.cc" // lalr1.cc:859
  573. break;
  574. case 14:
  575. #line 239 "dhcp6_parser.yy" // lalr1.cc:859
  576. { ctx.ctx_ = ctx.PD_POOLS; }
  577. #line 716 "dhcp6_parser.cc" // lalr1.cc:859
  578. break;
  579. case 16:
  580. #line 240 "dhcp6_parser.yy" // lalr1.cc:859
  581. { ctx.ctx_ = ctx.RESERVATIONS; }
  582. #line 722 "dhcp6_parser.cc" // lalr1.cc:859
  583. break;
  584. case 18:
  585. #line 241 "dhcp6_parser.yy" // lalr1.cc:859
  586. { ctx.ctx_ = ctx.OPTION_DEF; }
  587. #line 728 "dhcp6_parser.cc" // lalr1.cc:859
  588. break;
  589. case 20:
  590. #line 242 "dhcp6_parser.yy" // lalr1.cc:859
  591. { ctx.ctx_ = ctx.OPTION_DATA; }
  592. #line 734 "dhcp6_parser.cc" // lalr1.cc:859
  593. break;
  594. case 22:
  595. #line 243 "dhcp6_parser.yy" // lalr1.cc:859
  596. { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
  597. #line 740 "dhcp6_parser.cc" // lalr1.cc:859
  598. break;
  599. case 24:
  600. #line 244 "dhcp6_parser.yy" // lalr1.cc:859
  601. { ctx.ctx_ = ctx.DHCP_DDNS; }
  602. #line 746 "dhcp6_parser.cc" // lalr1.cc:859
  603. break;
  604. case 26:
  605. #line 252 "dhcp6_parser.yy" // lalr1.cc:859
  606. { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
  607. #line 752 "dhcp6_parser.cc" // lalr1.cc:859
  608. break;
  609. case 27:
  610. #line 253 "dhcp6_parser.yy" // lalr1.cc:859
  611. { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
  612. #line 758 "dhcp6_parser.cc" // lalr1.cc:859
  613. break;
  614. case 28:
  615. #line 254 "dhcp6_parser.yy" // lalr1.cc:859
  616. { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
  617. #line 764 "dhcp6_parser.cc" // lalr1.cc:859
  618. break;
  619. case 29:
  620. #line 255 "dhcp6_parser.yy" // lalr1.cc:859
  621. { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
  622. #line 770 "dhcp6_parser.cc" // lalr1.cc:859
  623. break;
  624. case 30:
  625. #line 256 "dhcp6_parser.yy" // lalr1.cc:859
  626. { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
  627. #line 776 "dhcp6_parser.cc" // lalr1.cc:859
  628. break;
  629. case 31:
  630. #line 257 "dhcp6_parser.yy" // lalr1.cc:859
  631. { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
  632. #line 782 "dhcp6_parser.cc" // lalr1.cc:859
  633. break;
  634. case 32:
  635. #line 258 "dhcp6_parser.yy" // lalr1.cc:859
  636. { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
  637. #line 788 "dhcp6_parser.cc" // lalr1.cc:859
  638. break;
  639. case 33:
  640. #line 261 "dhcp6_parser.yy" // lalr1.cc:859
  641. {
  642. // Push back the JSON value on the stack
  643. ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
  644. }
  645. #line 797 "dhcp6_parser.cc" // lalr1.cc:859
  646. break;
  647. case 34:
  648. #line 266 "dhcp6_parser.yy" // lalr1.cc:859
  649. {
  650. // This code is executed when we're about to start parsing
  651. // the content of the map
  652. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  653. ctx.stack_.push_back(m);
  654. }
  655. #line 808 "dhcp6_parser.cc" // lalr1.cc:859
  656. break;
  657. case 35:
  658. #line 271 "dhcp6_parser.yy" // lalr1.cc:859
  659. {
  660. // map parsing completed. If we ever want to do any wrap up
  661. // (maybe some sanity checking), this would be the best place
  662. // for it.
  663. }
  664. #line 818 "dhcp6_parser.cc" // lalr1.cc:859
  665. break;
  666. case 36:
  667. #line 277 "dhcp6_parser.yy" // lalr1.cc:859
  668. { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
  669. #line 824 "dhcp6_parser.cc" // lalr1.cc:859
  670. break;
  671. case 39:
  672. #line 284 "dhcp6_parser.yy" // lalr1.cc:859
  673. {
  674. // map containing a single entry
  675. ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
  676. }
  677. #line 833 "dhcp6_parser.cc" // lalr1.cc:859
  678. break;
  679. case 40:
  680. #line 288 "dhcp6_parser.yy" // lalr1.cc:859
  681. {
  682. // map consisting of a shorter map followed by
  683. // comma and string:value
  684. ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
  685. }
  686. #line 843 "dhcp6_parser.cc" // lalr1.cc:859
  687. break;
  688. case 41:
  689. #line 295 "dhcp6_parser.yy" // lalr1.cc:859
  690. {
  691. ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
  692. ctx.stack_.push_back(l);
  693. }
  694. #line 852 "dhcp6_parser.cc" // lalr1.cc:859
  695. break;
  696. case 42:
  697. #line 298 "dhcp6_parser.yy" // lalr1.cc:859
  698. {
  699. // list parsing complete. Put any sanity checking here
  700. }
  701. #line 860 "dhcp6_parser.cc" // lalr1.cc:859
  702. break;
  703. case 45:
  704. #line 306 "dhcp6_parser.yy" // lalr1.cc:859
  705. {
  706. // List consisting of a single element.
  707. ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
  708. }
  709. #line 869 "dhcp6_parser.cc" // lalr1.cc:859
  710. break;
  711. case 46:
  712. #line 310 "dhcp6_parser.yy" // lalr1.cc:859
  713. {
  714. // List ending with , and a value.
  715. ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
  716. }
  717. #line 878 "dhcp6_parser.cc" // lalr1.cc:859
  718. break;
  719. case 47:
  720. #line 317 "dhcp6_parser.yy" // lalr1.cc:859
  721. {
  722. // List parsing about to start
  723. }
  724. #line 886 "dhcp6_parser.cc" // lalr1.cc:859
  725. break;
  726. case 48:
  727. #line 319 "dhcp6_parser.yy" // lalr1.cc:859
  728. {
  729. // list parsing complete. Put any sanity checking here
  730. //ctx.stack_.pop_back();
  731. }
  732. #line 895 "dhcp6_parser.cc" // lalr1.cc:859
  733. break;
  734. case 51:
  735. #line 328 "dhcp6_parser.yy" // lalr1.cc:859
  736. {
  737. ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  738. ctx.stack_.back()->add(s);
  739. }
  740. #line 904 "dhcp6_parser.cc" // lalr1.cc:859
  741. break;
  742. case 52:
  743. #line 332 "dhcp6_parser.yy" // lalr1.cc:859
  744. {
  745. ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  746. ctx.stack_.back()->add(s);
  747. }
  748. #line 913 "dhcp6_parser.cc" // lalr1.cc:859
  749. break;
  750. case 53:
  751. #line 343 "dhcp6_parser.yy" // lalr1.cc:859
  752. {
  753. const std::string& where = ctx.contextName();
  754. const std::string& keyword = yystack_[1].value.as< std::string > ();
  755. error(yystack_[1].location,
  756. "got unexpected keyword \"" + keyword + "\" in " + where + " map.");
  757. }
  758. #line 924 "dhcp6_parser.cc" // lalr1.cc:859
  759. break;
  760. case 54:
  761. #line 353 "dhcp6_parser.yy" // lalr1.cc:859
  762. {
  763. // This code is executed when we're about to start parsing
  764. // the content of the map
  765. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  766. ctx.stack_.push_back(m);
  767. }
  768. #line 935 "dhcp6_parser.cc" // lalr1.cc:859
  769. break;
  770. case 55:
  771. #line 358 "dhcp6_parser.yy" // lalr1.cc:859
  772. {
  773. // map parsing completed. If we ever want to do any wrap up
  774. // (maybe some sanity checking), this would be the best place
  775. // for it.
  776. }
  777. #line 945 "dhcp6_parser.cc" // lalr1.cc:859
  778. break;
  779. case 64:
  780. #line 378 "dhcp6_parser.yy" // lalr1.cc:859
  781. {
  782. // This code is executed when we're about to start parsing
  783. // the content of the map
  784. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  785. ctx.stack_.back()->set("Dhcp6", m);
  786. ctx.stack_.push_back(m);
  787. ctx.enter(ctx.DHCP6);
  788. }
  789. #line 958 "dhcp6_parser.cc" // lalr1.cc:859
  790. break;
  791. case 65:
  792. #line 385 "dhcp6_parser.yy" // lalr1.cc:859
  793. {
  794. // map parsing completed. If we ever want to do any wrap up
  795. // (maybe some sanity checking), this would be the best place
  796. // for it.
  797. ctx.stack_.pop_back();
  798. ctx.leave();
  799. }
  800. #line 970 "dhcp6_parser.cc" // lalr1.cc:859
  801. break;
  802. case 66:
  803. #line 395 "dhcp6_parser.yy" // lalr1.cc:859
  804. {
  805. // Parse the Dhcp6 map
  806. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  807. ctx.stack_.push_back(m);
  808. }
  809. #line 980 "dhcp6_parser.cc" // lalr1.cc:859
  810. break;
  811. case 67:
  812. #line 399 "dhcp6_parser.yy" // lalr1.cc:859
  813. {
  814. // parsing completed
  815. }
  816. #line 988 "dhcp6_parser.cc" // lalr1.cc:859
  817. break;
  818. case 92:
  819. #line 433 "dhcp6_parser.yy" // lalr1.cc:859
  820. {
  821. ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  822. ctx.stack_.back()->set("preferred-lifetime", prf);
  823. }
  824. #line 997 "dhcp6_parser.cc" // lalr1.cc:859
  825. break;
  826. case 93:
  827. #line 438 "dhcp6_parser.yy" // lalr1.cc:859
  828. {
  829. ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  830. ctx.stack_.back()->set("valid-lifetime", prf);
  831. }
  832. #line 1006 "dhcp6_parser.cc" // lalr1.cc:859
  833. break;
  834. case 94:
  835. #line 443 "dhcp6_parser.yy" // lalr1.cc:859
  836. {
  837. ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  838. ctx.stack_.back()->set("renew-timer", prf);
  839. }
  840. #line 1015 "dhcp6_parser.cc" // lalr1.cc:859
  841. break;
  842. case 95:
  843. #line 448 "dhcp6_parser.yy" // lalr1.cc:859
  844. {
  845. ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  846. ctx.stack_.back()->set("rebind-timer", prf);
  847. }
  848. #line 1024 "dhcp6_parser.cc" // lalr1.cc:859
  849. break;
  850. case 96:
  851. #line 453 "dhcp6_parser.yy" // lalr1.cc:859
  852. {
  853. ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  854. ctx.stack_.back()->set("decline-probation-period", dpp);
  855. }
  856. #line 1033 "dhcp6_parser.cc" // lalr1.cc:859
  857. break;
  858. case 97:
  859. #line 458 "dhcp6_parser.yy" // lalr1.cc:859
  860. {
  861. ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
  862. ctx.stack_.back()->set("interfaces-config", i);
  863. ctx.stack_.push_back(i);
  864. ctx.enter(ctx.INTERFACES_CONFIG);
  865. }
  866. #line 1044 "dhcp6_parser.cc" // lalr1.cc:859
  867. break;
  868. case 98:
  869. #line 463 "dhcp6_parser.yy" // lalr1.cc:859
  870. {
  871. ctx.stack_.pop_back();
  872. ctx.leave();
  873. }
  874. #line 1053 "dhcp6_parser.cc" // lalr1.cc:859
  875. break;
  876. case 99:
  877. #line 468 "dhcp6_parser.yy" // lalr1.cc:859
  878. {
  879. // Parse the interfaces-config map
  880. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  881. ctx.stack_.push_back(m);
  882. }
  883. #line 1063 "dhcp6_parser.cc" // lalr1.cc:859
  884. break;
  885. case 100:
  886. #line 472 "dhcp6_parser.yy" // lalr1.cc:859
  887. {
  888. // parsing completed
  889. }
  890. #line 1071 "dhcp6_parser.cc" // lalr1.cc:859
  891. break;
  892. case 105:
  893. #line 484 "dhcp6_parser.yy" // lalr1.cc:859
  894. {
  895. ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
  896. ctx.stack_.back()->set("interfaces", l);
  897. ctx.stack_.push_back(l);
  898. ctx.enter(ctx.NO_KEYWORD);
  899. }
  900. #line 1082 "dhcp6_parser.cc" // lalr1.cc:859
  901. break;
  902. case 106:
  903. #line 489 "dhcp6_parser.yy" // lalr1.cc:859
  904. {
  905. ctx.stack_.pop_back();
  906. ctx.leave();
  907. }
  908. #line 1091 "dhcp6_parser.cc" // lalr1.cc:859
  909. break;
  910. case 107:
  911. #line 494 "dhcp6_parser.yy" // lalr1.cc:859
  912. {
  913. ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
  914. ctx.stack_.back()->set("re-detect", b);
  915. }
  916. #line 1100 "dhcp6_parser.cc" // lalr1.cc:859
  917. break;
  918. case 108:
  919. #line 500 "dhcp6_parser.yy" // lalr1.cc:859
  920. {
  921. ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
  922. ctx.stack_.back()->set("lease-database", i);
  923. ctx.stack_.push_back(i);
  924. ctx.enter(ctx.LEASE_DATABASE);
  925. }
  926. #line 1111 "dhcp6_parser.cc" // lalr1.cc:859
  927. break;
  928. case 109:
  929. #line 505 "dhcp6_parser.yy" // lalr1.cc:859
  930. {
  931. ctx.stack_.pop_back();
  932. ctx.leave();
  933. }
  934. #line 1120 "dhcp6_parser.cc" // lalr1.cc:859
  935. break;
  936. case 110:
  937. #line 510 "dhcp6_parser.yy" // lalr1.cc:859
  938. {
  939. ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
  940. ctx.stack_.back()->set("hosts-database", i);
  941. ctx.stack_.push_back(i);
  942. ctx.enter(ctx.HOSTS_DATABASE);
  943. }
  944. #line 1131 "dhcp6_parser.cc" // lalr1.cc:859
  945. break;
  946. case 111:
  947. #line 515 "dhcp6_parser.yy" // lalr1.cc:859
  948. {
  949. ctx.stack_.pop_back();
  950. ctx.leave();
  951. }
  952. #line 1140 "dhcp6_parser.cc" // lalr1.cc:859
  953. break;
  954. case 127:
  955. #line 539 "dhcp6_parser.yy" // lalr1.cc:859
  956. {
  957. ctx.enter(ctx.DATABASE_TYPE);
  958. }
  959. #line 1148 "dhcp6_parser.cc" // lalr1.cc:859
  960. break;
  961. case 128:
  962. #line 541 "dhcp6_parser.yy" // lalr1.cc:859
  963. {
  964. ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
  965. ctx.leave();
  966. }
  967. #line 1157 "dhcp6_parser.cc" // lalr1.cc:859
  968. break;
  969. case 129:
  970. #line 546 "dhcp6_parser.yy" // lalr1.cc:859
  971. { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
  972. #line 1163 "dhcp6_parser.cc" // lalr1.cc:859
  973. break;
  974. case 130:
  975. #line 547 "dhcp6_parser.yy" // lalr1.cc:859
  976. { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
  977. #line 1169 "dhcp6_parser.cc" // lalr1.cc:859
  978. break;
  979. case 131:
  980. #line 548 "dhcp6_parser.yy" // lalr1.cc:859
  981. { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
  982. #line 1175 "dhcp6_parser.cc" // lalr1.cc:859
  983. break;
  984. case 132:
  985. #line 549 "dhcp6_parser.yy" // lalr1.cc:859
  986. { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
  987. #line 1181 "dhcp6_parser.cc" // lalr1.cc:859
  988. break;
  989. case 133:
  990. #line 552 "dhcp6_parser.yy" // lalr1.cc:859
  991. {
  992. ctx.enter(ctx.NO_KEYWORD);
  993. }
  994. #line 1189 "dhcp6_parser.cc" // lalr1.cc:859
  995. break;
  996. case 134:
  997. #line 554 "dhcp6_parser.yy" // lalr1.cc:859
  998. {
  999. ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  1000. ctx.stack_.back()->set("user", user);
  1001. ctx.leave();
  1002. }
  1003. #line 1199 "dhcp6_parser.cc" // lalr1.cc:859
  1004. break;
  1005. case 135:
  1006. #line 560 "dhcp6_parser.yy" // lalr1.cc:859
  1007. {
  1008. ctx.enter(ctx.NO_KEYWORD);
  1009. }
  1010. #line 1207 "dhcp6_parser.cc" // lalr1.cc:859
  1011. break;
  1012. case 136:
  1013. #line 562 "dhcp6_parser.yy" // lalr1.cc:859
  1014. {
  1015. ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  1016. ctx.stack_.back()->set("password", pwd);
  1017. ctx.leave();
  1018. }
  1019. #line 1217 "dhcp6_parser.cc" // lalr1.cc:859
  1020. break;
  1021. case 137:
  1022. #line 568 "dhcp6_parser.yy" // lalr1.cc:859
  1023. {
  1024. ctx.enter(ctx.NO_KEYWORD);
  1025. }
  1026. #line 1225 "dhcp6_parser.cc" // lalr1.cc:859
  1027. break;
  1028. case 138:
  1029. #line 570 "dhcp6_parser.yy" // lalr1.cc:859
  1030. {
  1031. ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  1032. ctx.stack_.back()->set("host", h);
  1033. ctx.leave();
  1034. }
  1035. #line 1235 "dhcp6_parser.cc" // lalr1.cc:859
  1036. break;
  1037. case 139:
  1038. #line 576 "dhcp6_parser.yy" // lalr1.cc:859
  1039. {
  1040. ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  1041. ctx.stack_.back()->set("port", p);
  1042. }
  1043. #line 1244 "dhcp6_parser.cc" // lalr1.cc:859
  1044. break;
  1045. case 140:
  1046. #line 581 "dhcp6_parser.yy" // lalr1.cc:859
  1047. {
  1048. ctx.enter(ctx.NO_KEYWORD);
  1049. }
  1050. #line 1252 "dhcp6_parser.cc" // lalr1.cc:859
  1051. break;
  1052. case 141:
  1053. #line 583 "dhcp6_parser.yy" // lalr1.cc:859
  1054. {
  1055. ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  1056. ctx.stack_.back()->set("name", name);
  1057. ctx.leave();
  1058. }
  1059. #line 1262 "dhcp6_parser.cc" // lalr1.cc:859
  1060. break;
  1061. case 142:
  1062. #line 589 "dhcp6_parser.yy" // lalr1.cc:859
  1063. {
  1064. ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
  1065. ctx.stack_.back()->set("persist", n);
  1066. }
  1067. #line 1271 "dhcp6_parser.cc" // lalr1.cc:859
  1068. break;
  1069. case 143:
  1070. #line 594 "dhcp6_parser.yy" // lalr1.cc:859
  1071. {
  1072. ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  1073. ctx.stack_.back()->set("lfc-interval", n);
  1074. }
  1075. #line 1280 "dhcp6_parser.cc" // lalr1.cc:859
  1076. break;
  1077. case 144:
  1078. #line 599 "dhcp6_parser.yy" // lalr1.cc:859
  1079. {
  1080. ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
  1081. ctx.stack_.back()->set("readonly", n);
  1082. }
  1083. #line 1289 "dhcp6_parser.cc" // lalr1.cc:859
  1084. break;
  1085. case 145:
  1086. #line 604 "dhcp6_parser.yy" // lalr1.cc:859
  1087. {
  1088. ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  1089. ctx.stack_.back()->set("connect-timeout", n);
  1090. }
  1091. #line 1298 "dhcp6_parser.cc" // lalr1.cc:859
  1092. break;
  1093. case 146:
  1094. #line 609 "dhcp6_parser.yy" // lalr1.cc:859
  1095. {
  1096. ctx.enter(ctx.NO_KEYWORD);
  1097. }
  1098. #line 1306 "dhcp6_parser.cc" // lalr1.cc:859
  1099. break;
  1100. case 147:
  1101. #line 611 "dhcp6_parser.yy" // lalr1.cc:859
  1102. {
  1103. ElementPtr cp(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  1104. ctx.stack_.back()->set("contact-points", cp);
  1105. ctx.leave();
  1106. }
  1107. #line 1316 "dhcp6_parser.cc" // lalr1.cc:859
  1108. break;
  1109. case 148:
  1110. #line 617 "dhcp6_parser.yy" // lalr1.cc:859
  1111. {
  1112. ctx.enter(ctx.NO_KEYWORD);
  1113. }
  1114. #line 1324 "dhcp6_parser.cc" // lalr1.cc:859
  1115. break;
  1116. case 149:
  1117. #line 619 "dhcp6_parser.yy" // lalr1.cc:859
  1118. {
  1119. ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  1120. ctx.stack_.back()->set("keyspace", ks);
  1121. ctx.leave();
  1122. }
  1123. #line 1334 "dhcp6_parser.cc" // lalr1.cc:859
  1124. break;
  1125. case 150:
  1126. #line 626 "dhcp6_parser.yy" // lalr1.cc:859
  1127. {
  1128. ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
  1129. ctx.stack_.back()->set("mac-sources", l);
  1130. ctx.stack_.push_back(l);
  1131. ctx.enter(ctx.MAC_SOURCES);
  1132. }
  1133. #line 1345 "dhcp6_parser.cc" // lalr1.cc:859
  1134. break;
  1135. case 151:
  1136. #line 631 "dhcp6_parser.yy" // lalr1.cc:859
  1137. {
  1138. ctx.stack_.pop_back();
  1139. ctx.leave();
  1140. }
  1141. #line 1354 "dhcp6_parser.cc" // lalr1.cc:859
  1142. break;
  1143. case 156:
  1144. #line 644 "dhcp6_parser.yy" // lalr1.cc:859
  1145. {
  1146. ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
  1147. ctx.stack_.back()->add(duid);
  1148. }
  1149. #line 1363 "dhcp6_parser.cc" // lalr1.cc:859
  1150. break;
  1151. case 157:
  1152. #line 649 "dhcp6_parser.yy" // lalr1.cc:859
  1153. {
  1154. ElementPtr duid(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  1155. ctx.stack_.back()->add(duid);
  1156. }
  1157. #line 1372 "dhcp6_parser.cc" // lalr1.cc:859
  1158. break;
  1159. case 158:
  1160. #line 654 "dhcp6_parser.yy" // lalr1.cc:859
  1161. {
  1162. ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
  1163. ctx.stack_.back()->set("host-reservation-identifiers", l);
  1164. ctx.stack_.push_back(l);
  1165. ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
  1166. }
  1167. #line 1383 "dhcp6_parser.cc" // lalr1.cc:859
  1168. break;
  1169. case 159:
  1170. #line 659 "dhcp6_parser.yy" // lalr1.cc:859
  1171. {
  1172. ctx.stack_.pop_back();
  1173. ctx.leave();
  1174. }
  1175. #line 1392 "dhcp6_parser.cc" // lalr1.cc:859
  1176. break;
  1177. case 165:
  1178. #line 673 "dhcp6_parser.yy" // lalr1.cc:859
  1179. {
  1180. ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
  1181. ctx.stack_.back()->add(hwaddr);
  1182. }
  1183. #line 1401 "dhcp6_parser.cc" // lalr1.cc:859
  1184. break;
  1185. case 166:
  1186. #line 678 "dhcp6_parser.yy" // lalr1.cc:859
  1187. {
  1188. ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
  1189. ctx.stack_.back()->add(flex_id);
  1190. }
  1191. #line 1410 "dhcp6_parser.cc" // lalr1.cc:859
  1192. break;
  1193. case 167:
  1194. #line 685 "dhcp6_parser.yy" // lalr1.cc:859
  1195. {
  1196. ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
  1197. ctx.stack_.back()->set("relay-supplied-options", l);
  1198. ctx.stack_.push_back(l);
  1199. ctx.enter(ctx.NO_KEYWORD);
  1200. }
  1201. #line 1421 "dhcp6_parser.cc" // lalr1.cc:859
  1202. break;
  1203. case 168:
  1204. #line 690 "dhcp6_parser.yy" // lalr1.cc:859
  1205. {
  1206. ctx.stack_.pop_back();
  1207. ctx.leave();
  1208. }
  1209. #line 1430 "dhcp6_parser.cc" // lalr1.cc:859
  1210. break;
  1211. case 169:
  1212. #line 695 "dhcp6_parser.yy" // lalr1.cc:859
  1213. {
  1214. ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
  1215. ctx.stack_.back()->set("hooks-libraries", l);
  1216. ctx.stack_.push_back(l);
  1217. ctx.enter(ctx.HOOKS_LIBRARIES);
  1218. }
  1219. #line 1441 "dhcp6_parser.cc" // lalr1.cc:859
  1220. break;
  1221. case 170:
  1222. #line 700 "dhcp6_parser.yy" // lalr1.cc:859
  1223. {
  1224. ctx.stack_.pop_back();
  1225. ctx.leave();
  1226. }
  1227. #line 1450 "dhcp6_parser.cc" // lalr1.cc:859
  1228. break;
  1229. case 175:
  1230. #line 713 "dhcp6_parser.yy" // lalr1.cc:859
  1231. {
  1232. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  1233. ctx.stack_.back()->add(m);
  1234. ctx.stack_.push_back(m);
  1235. }
  1236. #line 1460 "dhcp6_parser.cc" // lalr1.cc:859
  1237. break;
  1238. case 176:
  1239. #line 717 "dhcp6_parser.yy" // lalr1.cc:859
  1240. {
  1241. ctx.stack_.pop_back();
  1242. }
  1243. #line 1468 "dhcp6_parser.cc" // lalr1.cc:859
  1244. break;
  1245. case 177:
  1246. #line 721 "dhcp6_parser.yy" // lalr1.cc:859
  1247. {
  1248. // Parse the hooks-libraries list entry map
  1249. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  1250. ctx.stack_.push_back(m);
  1251. }
  1252. #line 1478 "dhcp6_parser.cc" // lalr1.cc:859
  1253. break;
  1254. case 178:
  1255. #line 725 "dhcp6_parser.yy" // lalr1.cc:859
  1256. {
  1257. // parsing completed
  1258. }
  1259. #line 1486 "dhcp6_parser.cc" // lalr1.cc:859
  1260. break;
  1261. case 184:
  1262. #line 738 "dhcp6_parser.yy" // lalr1.cc:859
  1263. {
  1264. ctx.enter(ctx.NO_KEYWORD);
  1265. }
  1266. #line 1494 "dhcp6_parser.cc" // lalr1.cc:859
  1267. break;
  1268. case 185:
  1269. #line 740 "dhcp6_parser.yy" // lalr1.cc:859
  1270. {
  1271. ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  1272. ctx.stack_.back()->set("library", lib);
  1273. ctx.leave();
  1274. }
  1275. #line 1504 "dhcp6_parser.cc" // lalr1.cc:859
  1276. break;
  1277. case 186:
  1278. #line 746 "dhcp6_parser.yy" // lalr1.cc:859
  1279. {
  1280. ctx.enter(ctx.NO_KEYWORD);
  1281. }
  1282. #line 1512 "dhcp6_parser.cc" // lalr1.cc:859
  1283. break;
  1284. case 187:
  1285. #line 748 "dhcp6_parser.yy" // lalr1.cc:859
  1286. {
  1287. ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
  1288. ctx.leave();
  1289. }
  1290. #line 1521 "dhcp6_parser.cc" // lalr1.cc:859
  1291. break;
  1292. case 188:
  1293. #line 754 "dhcp6_parser.yy" // lalr1.cc:859
  1294. {
  1295. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  1296. ctx.stack_.back()->set("expired-leases-processing", m);
  1297. ctx.stack_.push_back(m);
  1298. ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
  1299. }
  1300. #line 1532 "dhcp6_parser.cc" // lalr1.cc:859
  1301. break;
  1302. case 189:
  1303. #line 759 "dhcp6_parser.yy" // lalr1.cc:859
  1304. {
  1305. ctx.stack_.pop_back();
  1306. ctx.leave();
  1307. }
  1308. #line 1541 "dhcp6_parser.cc" // lalr1.cc:859
  1309. break;
  1310. case 198:
  1311. #line 776 "dhcp6_parser.yy" // lalr1.cc:859
  1312. {
  1313. ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  1314. ctx.stack_.back()->set("reclaim-timer-wait-time", value);
  1315. }
  1316. #line 1550 "dhcp6_parser.cc" // lalr1.cc:859
  1317. break;
  1318. case 199:
  1319. #line 781 "dhcp6_parser.yy" // lalr1.cc:859
  1320. {
  1321. ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  1322. ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value);
  1323. }
  1324. #line 1559 "dhcp6_parser.cc" // lalr1.cc:859
  1325. break;
  1326. case 200:
  1327. #line 786 "dhcp6_parser.yy" // lalr1.cc:859
  1328. {
  1329. ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  1330. ctx.stack_.back()->set("hold-reclaimed-time", value);
  1331. }
  1332. #line 1568 "dhcp6_parser.cc" // lalr1.cc:859
  1333. break;
  1334. case 201:
  1335. #line 791 "dhcp6_parser.yy" // lalr1.cc:859
  1336. {
  1337. ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  1338. ctx.stack_.back()->set("max-reclaim-leases", value);
  1339. }
  1340. #line 1577 "dhcp6_parser.cc" // lalr1.cc:859
  1341. break;
  1342. case 202:
  1343. #line 796 "dhcp6_parser.yy" // lalr1.cc:859
  1344. {
  1345. ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  1346. ctx.stack_.back()->set("max-reclaim-time", value);
  1347. }
  1348. #line 1586 "dhcp6_parser.cc" // lalr1.cc:859
  1349. break;
  1350. case 203:
  1351. #line 801 "dhcp6_parser.yy" // lalr1.cc:859
  1352. {
  1353. ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  1354. ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
  1355. }
  1356. #line 1595 "dhcp6_parser.cc" // lalr1.cc:859
  1357. break;
  1358. case 204:
  1359. #line 809 "dhcp6_parser.yy" // lalr1.cc:859
  1360. {
  1361. ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
  1362. ctx.stack_.back()->set("subnet6", l);
  1363. ctx.stack_.push_back(l);
  1364. ctx.enter(ctx.SUBNET6);
  1365. }
  1366. #line 1606 "dhcp6_parser.cc" // lalr1.cc:859
  1367. break;
  1368. case 205:
  1369. #line 814 "dhcp6_parser.yy" // lalr1.cc:859
  1370. {
  1371. ctx.stack_.pop_back();
  1372. ctx.leave();
  1373. }
  1374. #line 1615 "dhcp6_parser.cc" // lalr1.cc:859
  1375. break;
  1376. case 210:
  1377. #line 834 "dhcp6_parser.yy" // lalr1.cc:859
  1378. {
  1379. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  1380. ctx.stack_.back()->add(m);
  1381. ctx.stack_.push_back(m);
  1382. }
  1383. #line 1625 "dhcp6_parser.cc" // lalr1.cc:859
  1384. break;
  1385. case 211:
  1386. #line 838 "dhcp6_parser.yy" // lalr1.cc:859
  1387. {
  1388. // Once we reached this place, the subnet parsing is now complete.
  1389. // If we want to, we can implement default values here.
  1390. // In particular we can do things like this:
  1391. // if (!ctx.stack_.back()->get("interface")) {
  1392. // ctx.stack_.back()->set("interface", StringElement("loopback"));
  1393. // }
  1394. //
  1395. // We can also stack up one level (Dhcp6) and copy over whatever
  1396. // global parameters we want to:
  1397. // if (!ctx.stack_.back()->get("renew-timer")) {
  1398. // ElementPtr renew = ctx_stack_[...].get("renew-timer");
  1399. // if (renew) {
  1400. // ctx.stack_.back()->set("renew-timer", renew);
  1401. // }
  1402. // }
  1403. ctx.stack_.pop_back();
  1404. }
  1405. #line 1648 "dhcp6_parser.cc" // lalr1.cc:859
  1406. break;
  1407. case 212:
  1408. #line 857 "dhcp6_parser.yy" // lalr1.cc:859
  1409. {
  1410. // Parse the subnet6 list entry map
  1411. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  1412. ctx.stack_.push_back(m);
  1413. }
  1414. #line 1658 "dhcp6_parser.cc" // lalr1.cc:859
  1415. break;
  1416. case 213:
  1417. #line 861 "dhcp6_parser.yy" // lalr1.cc:859
  1418. {
  1419. // parsing completed
  1420. }
  1421. #line 1666 "dhcp6_parser.cc" // lalr1.cc:859
  1422. break;
  1423. case 233:
  1424. #line 890 "dhcp6_parser.yy" // lalr1.cc:859
  1425. {
  1426. ctx.enter(ctx.NO_KEYWORD);
  1427. }
  1428. #line 1674 "dhcp6_parser.cc" // lalr1.cc:859
  1429. break;
  1430. case 234:
  1431. #line 892 "dhcp6_parser.yy" // lalr1.cc:859
  1432. {
  1433. ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  1434. ctx.stack_.back()->set("subnet", subnet);
  1435. ctx.leave();
  1436. }
  1437. #line 1684 "dhcp6_parser.cc" // lalr1.cc:859
  1438. break;
  1439. case 235:
  1440. #line 898 "dhcp6_parser.yy" // lalr1.cc:859
  1441. {
  1442. ctx.enter(ctx.NO_KEYWORD);
  1443. }
  1444. #line 1692 "dhcp6_parser.cc" // lalr1.cc:859
  1445. break;
  1446. case 236:
  1447. #line 900 "dhcp6_parser.yy" // lalr1.cc:859
  1448. {
  1449. ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  1450. ctx.stack_.back()->set("interface", iface);
  1451. ctx.leave();
  1452. }
  1453. #line 1702 "dhcp6_parser.cc" // lalr1.cc:859
  1454. break;
  1455. case 237:
  1456. #line 906 "dhcp6_parser.yy" // lalr1.cc:859
  1457. {
  1458. ctx.enter(ctx.NO_KEYWORD);
  1459. }
  1460. #line 1710 "dhcp6_parser.cc" // lalr1.cc:859
  1461. break;
  1462. case 238:
  1463. #line 908 "dhcp6_parser.yy" // lalr1.cc:859
  1464. {
  1465. ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  1466. ctx.stack_.back()->set("interface-id", iface);
  1467. ctx.leave();
  1468. }
  1469. #line 1720 "dhcp6_parser.cc" // lalr1.cc:859
  1470. break;
  1471. case 239:
  1472. #line 914 "dhcp6_parser.yy" // lalr1.cc:859
  1473. {
  1474. ctx.enter(ctx.CLIENT_CLASS);
  1475. }
  1476. #line 1728 "dhcp6_parser.cc" // lalr1.cc:859
  1477. break;
  1478. case 240:
  1479. #line 916 "dhcp6_parser.yy" // lalr1.cc:859
  1480. {
  1481. ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  1482. ctx.stack_.back()->set("client-class", cls);
  1483. ctx.leave();
  1484. }
  1485. #line 1738 "dhcp6_parser.cc" // lalr1.cc:859
  1486. break;
  1487. case 241:
  1488. #line 922 "dhcp6_parser.yy" // lalr1.cc:859
  1489. {
  1490. ctx.enter(ctx.RESERVATION_MODE);
  1491. }
  1492. #line 1746 "dhcp6_parser.cc" // lalr1.cc:859
  1493. break;
  1494. case 242:
  1495. #line 924 "dhcp6_parser.yy" // lalr1.cc:859
  1496. {
  1497. ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
  1498. ctx.leave();
  1499. }
  1500. #line 1755 "dhcp6_parser.cc" // lalr1.cc:859
  1501. break;
  1502. case 243:
  1503. #line 929 "dhcp6_parser.yy" // lalr1.cc:859
  1504. { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
  1505. #line 1761 "dhcp6_parser.cc" // lalr1.cc:859
  1506. break;
  1507. case 244:
  1508. #line 930 "dhcp6_parser.yy" // lalr1.cc:859
  1509. { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
  1510. #line 1767 "dhcp6_parser.cc" // lalr1.cc:859
  1511. break;
  1512. case 245:
  1513. #line 931 "dhcp6_parser.yy" // lalr1.cc:859
  1514. { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
  1515. #line 1773 "dhcp6_parser.cc" // lalr1.cc:859
  1516. break;
  1517. case 246:
  1518. #line 934 "dhcp6_parser.yy" // lalr1.cc:859
  1519. {
  1520. ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  1521. ctx.stack_.back()->set("id", id);
  1522. }
  1523. #line 1782 "dhcp6_parser.cc" // lalr1.cc:859
  1524. break;
  1525. case 247:
  1526. #line 939 "dhcp6_parser.yy" // lalr1.cc:859
  1527. {
  1528. ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
  1529. ctx.stack_.back()->set("rapid-commit", rc);
  1530. }
  1531. #line 1791 "dhcp6_parser.cc" // lalr1.cc:859
  1532. break;
  1533. case 248:
  1534. #line 948 "dhcp6_parser.yy" // lalr1.cc:859
  1535. {
  1536. ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
  1537. ctx.stack_.back()->set("option-def", l);
  1538. ctx.stack_.push_back(l);
  1539. ctx.enter(ctx.OPTION_DEF);
  1540. }
  1541. #line 1802 "dhcp6_parser.cc" // lalr1.cc:859
  1542. break;
  1543. case 249:
  1544. #line 953 "dhcp6_parser.yy" // lalr1.cc:859
  1545. {
  1546. ctx.stack_.pop_back();
  1547. ctx.leave();
  1548. }
  1549. #line 1811 "dhcp6_parser.cc" // lalr1.cc:859
  1550. break;
  1551. case 254:
  1552. #line 970 "dhcp6_parser.yy" // lalr1.cc:859
  1553. {
  1554. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  1555. ctx.stack_.back()->add(m);
  1556. ctx.stack_.push_back(m);
  1557. }
  1558. #line 1821 "dhcp6_parser.cc" // lalr1.cc:859
  1559. break;
  1560. case 255:
  1561. #line 974 "dhcp6_parser.yy" // lalr1.cc:859
  1562. {
  1563. ctx.stack_.pop_back();
  1564. }
  1565. #line 1829 "dhcp6_parser.cc" // lalr1.cc:859
  1566. break;
  1567. case 256:
  1568. #line 981 "dhcp6_parser.yy" // lalr1.cc:859
  1569. {
  1570. // Parse the option-def list entry map
  1571. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  1572. ctx.stack_.push_back(m);
  1573. }
  1574. #line 1839 "dhcp6_parser.cc" // lalr1.cc:859
  1575. break;
  1576. case 257:
  1577. #line 985 "dhcp6_parser.yy" // lalr1.cc:859
  1578. {
  1579. // parsing completed
  1580. }
  1581. #line 1847 "dhcp6_parser.cc" // lalr1.cc:859
  1582. break;
  1583. case 271:
  1584. #line 1011 "dhcp6_parser.yy" // lalr1.cc:859
  1585. {
  1586. ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  1587. ctx.stack_.back()->set("code", code);
  1588. }
  1589. #line 1856 "dhcp6_parser.cc" // lalr1.cc:859
  1590. break;
  1591. case 273:
  1592. #line 1018 "dhcp6_parser.yy" // lalr1.cc:859
  1593. {
  1594. ctx.enter(ctx.NO_KEYWORD);
  1595. }
  1596. #line 1864 "dhcp6_parser.cc" // lalr1.cc:859
  1597. break;
  1598. case 274:
  1599. #line 1020 "dhcp6_parser.yy" // lalr1.cc:859
  1600. {
  1601. ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  1602. ctx.stack_.back()->set("type", prf);
  1603. ctx.leave();
  1604. }
  1605. #line 1874 "dhcp6_parser.cc" // lalr1.cc:859
  1606. break;
  1607. case 275:
  1608. #line 1026 "dhcp6_parser.yy" // lalr1.cc:859
  1609. {
  1610. ctx.enter(ctx.NO_KEYWORD);
  1611. }
  1612. #line 1882 "dhcp6_parser.cc" // lalr1.cc:859
  1613. break;
  1614. case 276:
  1615. #line 1028 "dhcp6_parser.yy" // lalr1.cc:859
  1616. {
  1617. ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  1618. ctx.stack_.back()->set("record-types", rtypes);
  1619. ctx.leave();
  1620. }
  1621. #line 1892 "dhcp6_parser.cc" // lalr1.cc:859
  1622. break;
  1623. case 277:
  1624. #line 1034 "dhcp6_parser.yy" // lalr1.cc:859
  1625. {
  1626. ctx.enter(ctx.NO_KEYWORD);
  1627. }
  1628. #line 1900 "dhcp6_parser.cc" // lalr1.cc:859
  1629. break;
  1630. case 278:
  1631. #line 1036 "dhcp6_parser.yy" // lalr1.cc:859
  1632. {
  1633. ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  1634. ctx.stack_.back()->set("space", space);
  1635. ctx.leave();
  1636. }
  1637. #line 1910 "dhcp6_parser.cc" // lalr1.cc:859
  1638. break;
  1639. case 280:
  1640. #line 1044 "dhcp6_parser.yy" // lalr1.cc:859
  1641. {
  1642. ctx.enter(ctx.NO_KEYWORD);
  1643. }
  1644. #line 1918 "dhcp6_parser.cc" // lalr1.cc:859
  1645. break;
  1646. case 281:
  1647. #line 1046 "dhcp6_parser.yy" // lalr1.cc:859
  1648. {
  1649. ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  1650. ctx.stack_.back()->set("encapsulate", encap);
  1651. ctx.leave();
  1652. }
  1653. #line 1928 "dhcp6_parser.cc" // lalr1.cc:859
  1654. break;
  1655. case 282:
  1656. #line 1052 "dhcp6_parser.yy" // lalr1.cc:859
  1657. {
  1658. ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
  1659. ctx.stack_.back()->set("array", array);
  1660. }
  1661. #line 1937 "dhcp6_parser.cc" // lalr1.cc:859
  1662. break;
  1663. case 283:
  1664. #line 1061 "dhcp6_parser.yy" // lalr1.cc:859
  1665. {
  1666. ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
  1667. ctx.stack_.back()->set("option-data", l);
  1668. ctx.stack_.push_back(l);
  1669. ctx.enter(ctx.OPTION_DATA);
  1670. }
  1671. #line 1948 "dhcp6_parser.cc" // lalr1.cc:859
  1672. break;
  1673. case 284:
  1674. #line 1066 "dhcp6_parser.yy" // lalr1.cc:859
  1675. {
  1676. ctx.stack_.pop_back();
  1677. ctx.leave();
  1678. }
  1679. #line 1957 "dhcp6_parser.cc" // lalr1.cc:859
  1680. break;
  1681. case 289:
  1682. #line 1085 "dhcp6_parser.yy" // lalr1.cc:859
  1683. {
  1684. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  1685. ctx.stack_.back()->add(m);
  1686. ctx.stack_.push_back(m);
  1687. }
  1688. #line 1967 "dhcp6_parser.cc" // lalr1.cc:859
  1689. break;
  1690. case 290:
  1691. #line 1089 "dhcp6_parser.yy" // lalr1.cc:859
  1692. {
  1693. ctx.stack_.pop_back();
  1694. }
  1695. #line 1975 "dhcp6_parser.cc" // lalr1.cc:859
  1696. break;
  1697. case 291:
  1698. #line 1096 "dhcp6_parser.yy" // lalr1.cc:859
  1699. {
  1700. // Parse the option-data list entry map
  1701. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  1702. ctx.stack_.push_back(m);
  1703. }
  1704. #line 1985 "dhcp6_parser.cc" // lalr1.cc:859
  1705. break;
  1706. case 292:
  1707. #line 1100 "dhcp6_parser.yy" // lalr1.cc:859
  1708. {
  1709. // parsing completed
  1710. }
  1711. #line 1993 "dhcp6_parser.cc" // lalr1.cc:859
  1712. break;
  1713. case 304:
  1714. #line 1129 "dhcp6_parser.yy" // lalr1.cc:859
  1715. {
  1716. ctx.enter(ctx.NO_KEYWORD);
  1717. }
  1718. #line 2001 "dhcp6_parser.cc" // lalr1.cc:859
  1719. break;
  1720. case 305:
  1721. #line 1131 "dhcp6_parser.yy" // lalr1.cc:859
  1722. {
  1723. ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  1724. ctx.stack_.back()->set("data", data);
  1725. ctx.leave();
  1726. }
  1727. #line 2011 "dhcp6_parser.cc" // lalr1.cc:859
  1728. break;
  1729. case 308:
  1730. #line 1141 "dhcp6_parser.yy" // lalr1.cc:859
  1731. {
  1732. ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
  1733. ctx.stack_.back()->set("csv-format", space);
  1734. }
  1735. #line 2020 "dhcp6_parser.cc" // lalr1.cc:859
  1736. break;
  1737. case 309:
  1738. #line 1149 "dhcp6_parser.yy" // lalr1.cc:859
  1739. {
  1740. ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
  1741. ctx.stack_.back()->set("pools", l);
  1742. ctx.stack_.push_back(l);
  1743. ctx.enter(ctx.POOLS);
  1744. }
  1745. #line 2031 "dhcp6_parser.cc" // lalr1.cc:859
  1746. break;
  1747. case 310:
  1748. #line 1154 "dhcp6_parser.yy" // lalr1.cc:859
  1749. {
  1750. ctx.stack_.pop_back();
  1751. ctx.leave();
  1752. }
  1753. #line 2040 "dhcp6_parser.cc" // lalr1.cc:859
  1754. break;
  1755. case 315:
  1756. #line 1169 "dhcp6_parser.yy" // lalr1.cc:859
  1757. {
  1758. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  1759. ctx.stack_.back()->add(m);
  1760. ctx.stack_.push_back(m);
  1761. }
  1762. #line 2050 "dhcp6_parser.cc" // lalr1.cc:859
  1763. break;
  1764. case 316:
  1765. #line 1173 "dhcp6_parser.yy" // lalr1.cc:859
  1766. {
  1767. ctx.stack_.pop_back();
  1768. }
  1769. #line 2058 "dhcp6_parser.cc" // lalr1.cc:859
  1770. break;
  1771. case 317:
  1772. #line 1177 "dhcp6_parser.yy" // lalr1.cc:859
  1773. {
  1774. // Parse the pool list entry map
  1775. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  1776. ctx.stack_.push_back(m);
  1777. }
  1778. #line 2068 "dhcp6_parser.cc" // lalr1.cc:859
  1779. break;
  1780. case 318:
  1781. #line 1181 "dhcp6_parser.yy" // lalr1.cc:859
  1782. {
  1783. // parsing completed
  1784. }
  1785. #line 2076 "dhcp6_parser.cc" // lalr1.cc:859
  1786. break;
  1787. case 325:
  1788. #line 1195 "dhcp6_parser.yy" // lalr1.cc:859
  1789. {
  1790. ctx.enter(ctx.NO_KEYWORD);
  1791. }
  1792. #line 2084 "dhcp6_parser.cc" // lalr1.cc:859
  1793. break;
  1794. case 326:
  1795. #line 1197 "dhcp6_parser.yy" // lalr1.cc:859
  1796. {
  1797. ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  1798. ctx.stack_.back()->set("pool", pool);
  1799. ctx.leave();
  1800. }
  1801. #line 2094 "dhcp6_parser.cc" // lalr1.cc:859
  1802. break;
  1803. case 327:
  1804. #line 1203 "dhcp6_parser.yy" // lalr1.cc:859
  1805. {
  1806. ctx.enter(ctx.NO_KEYWORD);
  1807. }
  1808. #line 2102 "dhcp6_parser.cc" // lalr1.cc:859
  1809. break;
  1810. case 328:
  1811. #line 1205 "dhcp6_parser.yy" // lalr1.cc:859
  1812. {
  1813. ctx.stack_.back()->set("user-context", yystack_[0].value.as< ElementPtr > ());
  1814. ctx.leave();
  1815. }
  1816. #line 2111 "dhcp6_parser.cc" // lalr1.cc:859
  1817. break;
  1818. case 329:
  1819. #line 1213 "dhcp6_parser.yy" // lalr1.cc:859
  1820. {
  1821. ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
  1822. ctx.stack_.back()->set("pd-pools", l);
  1823. ctx.stack_.push_back(l);
  1824. ctx.enter(ctx.PD_POOLS);
  1825. }
  1826. #line 2122 "dhcp6_parser.cc" // lalr1.cc:859
  1827. break;
  1828. case 330:
  1829. #line 1218 "dhcp6_parser.yy" // lalr1.cc:859
  1830. {
  1831. ctx.stack_.pop_back();
  1832. ctx.leave();
  1833. }
  1834. #line 2131 "dhcp6_parser.cc" // lalr1.cc:859
  1835. break;
  1836. case 335:
  1837. #line 1233 "dhcp6_parser.yy" // lalr1.cc:859
  1838. {
  1839. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  1840. ctx.stack_.back()->add(m);
  1841. ctx.stack_.push_back(m);
  1842. }
  1843. #line 2141 "dhcp6_parser.cc" // lalr1.cc:859
  1844. break;
  1845. case 336:
  1846. #line 1237 "dhcp6_parser.yy" // lalr1.cc:859
  1847. {
  1848. ctx.stack_.pop_back();
  1849. }
  1850. #line 2149 "dhcp6_parser.cc" // lalr1.cc:859
  1851. break;
  1852. case 337:
  1853. #line 1241 "dhcp6_parser.yy" // lalr1.cc:859
  1854. {
  1855. // Parse the pd-pool list entry map
  1856. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  1857. ctx.stack_.push_back(m);
  1858. }
  1859. #line 2159 "dhcp6_parser.cc" // lalr1.cc:859
  1860. break;
  1861. case 338:
  1862. #line 1245 "dhcp6_parser.yy" // lalr1.cc:859
  1863. {
  1864. // parsing completed
  1865. }
  1866. #line 2167 "dhcp6_parser.cc" // lalr1.cc:859
  1867. break;
  1868. case 349:
  1869. #line 1263 "dhcp6_parser.yy" // lalr1.cc:859
  1870. {
  1871. ctx.enter(ctx.NO_KEYWORD);
  1872. }
  1873. #line 2175 "dhcp6_parser.cc" // lalr1.cc:859
  1874. break;
  1875. case 350:
  1876. #line 1265 "dhcp6_parser.yy" // lalr1.cc:859
  1877. {
  1878. ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  1879. ctx.stack_.back()->set("prefix", prf);
  1880. ctx.leave();
  1881. }
  1882. #line 2185 "dhcp6_parser.cc" // lalr1.cc:859
  1883. break;
  1884. case 351:
  1885. #line 1271 "dhcp6_parser.yy" // lalr1.cc:859
  1886. {
  1887. ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  1888. ctx.stack_.back()->set("prefix-len", prf);
  1889. }
  1890. #line 2194 "dhcp6_parser.cc" // lalr1.cc:859
  1891. break;
  1892. case 352:
  1893. #line 1276 "dhcp6_parser.yy" // lalr1.cc:859
  1894. {
  1895. ctx.enter(ctx.NO_KEYWORD);
  1896. }
  1897. #line 2202 "dhcp6_parser.cc" // lalr1.cc:859
  1898. break;
  1899. case 353:
  1900. #line 1278 "dhcp6_parser.yy" // lalr1.cc:859
  1901. {
  1902. ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  1903. ctx.stack_.back()->set("excluded-prefix", prf);
  1904. ctx.leave();
  1905. }
  1906. #line 2212 "dhcp6_parser.cc" // lalr1.cc:859
  1907. break;
  1908. case 354:
  1909. #line 1284 "dhcp6_parser.yy" // lalr1.cc:859
  1910. {
  1911. ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  1912. ctx.stack_.back()->set("excluded-prefix-len", prf);
  1913. }
  1914. #line 2221 "dhcp6_parser.cc" // lalr1.cc:859
  1915. break;
  1916. case 355:
  1917. #line 1289 "dhcp6_parser.yy" // lalr1.cc:859
  1918. {
  1919. ElementPtr deleg(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  1920. ctx.stack_.back()->set("delegated-len", deleg);
  1921. }
  1922. #line 2230 "dhcp6_parser.cc" // lalr1.cc:859
  1923. break;
  1924. case 356:
  1925. #line 1297 "dhcp6_parser.yy" // lalr1.cc:859
  1926. {
  1927. ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
  1928. ctx.stack_.back()->set("reservations", l);
  1929. ctx.stack_.push_back(l);
  1930. ctx.enter(ctx.RESERVATIONS);
  1931. }
  1932. #line 2241 "dhcp6_parser.cc" // lalr1.cc:859
  1933. break;
  1934. case 357:
  1935. #line 1302 "dhcp6_parser.yy" // lalr1.cc:859
  1936. {
  1937. ctx.stack_.pop_back();
  1938. ctx.leave();
  1939. }
  1940. #line 2250 "dhcp6_parser.cc" // lalr1.cc:859
  1941. break;
  1942. case 362:
  1943. #line 1315 "dhcp6_parser.yy" // lalr1.cc:859
  1944. {
  1945. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  1946. ctx.stack_.back()->add(m);
  1947. ctx.stack_.push_back(m);
  1948. }
  1949. #line 2260 "dhcp6_parser.cc" // lalr1.cc:859
  1950. break;
  1951. case 363:
  1952. #line 1319 "dhcp6_parser.yy" // lalr1.cc:859
  1953. {
  1954. ctx.stack_.pop_back();
  1955. }
  1956. #line 2268 "dhcp6_parser.cc" // lalr1.cc:859
  1957. break;
  1958. case 364:
  1959. #line 1323 "dhcp6_parser.yy" // lalr1.cc:859
  1960. {
  1961. // Parse the reservations list entry map
  1962. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  1963. ctx.stack_.push_back(m);
  1964. }
  1965. #line 2278 "dhcp6_parser.cc" // lalr1.cc:859
  1966. break;
  1967. case 365:
  1968. #line 1327 "dhcp6_parser.yy" // lalr1.cc:859
  1969. {
  1970. // parsing completed
  1971. }
  1972. #line 2286 "dhcp6_parser.cc" // lalr1.cc:859
  1973. break;
  1974. case 379:
  1975. #line 1351 "dhcp6_parser.yy" // lalr1.cc:859
  1976. {
  1977. ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
  1978. ctx.stack_.back()->set("ip-addresses", l);
  1979. ctx.stack_.push_back(l);
  1980. ctx.enter(ctx.NO_KEYWORD);
  1981. }
  1982. #line 2297 "dhcp6_parser.cc" // lalr1.cc:859
  1983. break;
  1984. case 380:
  1985. #line 1356 "dhcp6_parser.yy" // lalr1.cc:859
  1986. {
  1987. ctx.stack_.pop_back();
  1988. ctx.leave();
  1989. }
  1990. #line 2306 "dhcp6_parser.cc" // lalr1.cc:859
  1991. break;
  1992. case 381:
  1993. #line 1361 "dhcp6_parser.yy" // lalr1.cc:859
  1994. {
  1995. ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
  1996. ctx.stack_.back()->set("prefixes", l);
  1997. ctx.stack_.push_back(l);
  1998. ctx.enter(ctx.NO_KEYWORD);
  1999. }
  2000. #line 2317 "dhcp6_parser.cc" // lalr1.cc:859
  2001. break;
  2002. case 382:
  2003. #line 1366 "dhcp6_parser.yy" // lalr1.cc:859
  2004. {
  2005. ctx.stack_.pop_back();
  2006. ctx.leave();
  2007. }
  2008. #line 2326 "dhcp6_parser.cc" // lalr1.cc:859
  2009. break;
  2010. case 383:
  2011. #line 1371 "dhcp6_parser.yy" // lalr1.cc:859
  2012. {
  2013. ctx.enter(ctx.NO_KEYWORD);
  2014. }
  2015. #line 2334 "dhcp6_parser.cc" // lalr1.cc:859
  2016. break;
  2017. case 384:
  2018. #line 1373 "dhcp6_parser.yy" // lalr1.cc:859
  2019. {
  2020. ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  2021. ctx.stack_.back()->set("duid", d);
  2022. ctx.leave();
  2023. }
  2024. #line 2344 "dhcp6_parser.cc" // lalr1.cc:859
  2025. break;
  2026. case 385:
  2027. #line 1379 "dhcp6_parser.yy" // lalr1.cc:859
  2028. {
  2029. ctx.enter(ctx.NO_KEYWORD);
  2030. }
  2031. #line 2352 "dhcp6_parser.cc" // lalr1.cc:859
  2032. break;
  2033. case 386:
  2034. #line 1381 "dhcp6_parser.yy" // lalr1.cc:859
  2035. {
  2036. ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  2037. ctx.stack_.back()->set("hw-address", hw);
  2038. ctx.leave();
  2039. }
  2040. #line 2362 "dhcp6_parser.cc" // lalr1.cc:859
  2041. break;
  2042. case 387:
  2043. #line 1387 "dhcp6_parser.yy" // lalr1.cc:859
  2044. {
  2045. ctx.enter(ctx.NO_KEYWORD);
  2046. }
  2047. #line 2370 "dhcp6_parser.cc" // lalr1.cc:859
  2048. break;
  2049. case 388:
  2050. #line 1389 "dhcp6_parser.yy" // lalr1.cc:859
  2051. {
  2052. ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  2053. ctx.stack_.back()->set("hostname", host);
  2054. ctx.leave();
  2055. }
  2056. #line 2380 "dhcp6_parser.cc" // lalr1.cc:859
  2057. break;
  2058. case 389:
  2059. #line 1395 "dhcp6_parser.yy" // lalr1.cc:859
  2060. {
  2061. ctx.enter(ctx.NO_KEYWORD);
  2062. }
  2063. #line 2388 "dhcp6_parser.cc" // lalr1.cc:859
  2064. break;
  2065. case 390:
  2066. #line 1397 "dhcp6_parser.yy" // lalr1.cc:859
  2067. {
  2068. ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  2069. ctx.stack_.back()->set("flex-id", hw);
  2070. ctx.leave();
  2071. }
  2072. #line 2398 "dhcp6_parser.cc" // lalr1.cc:859
  2073. break;
  2074. case 391:
  2075. #line 1403 "dhcp6_parser.yy" // lalr1.cc:859
  2076. {
  2077. ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
  2078. ctx.stack_.back()->set("client-classes", c);
  2079. ctx.stack_.push_back(c);
  2080. ctx.enter(ctx.NO_KEYWORD);
  2081. }
  2082. #line 2409 "dhcp6_parser.cc" // lalr1.cc:859
  2083. break;
  2084. case 392:
  2085. #line 1408 "dhcp6_parser.yy" // lalr1.cc:859
  2086. {
  2087. ctx.stack_.pop_back();
  2088. ctx.leave();
  2089. }
  2090. #line 2418 "dhcp6_parser.cc" // lalr1.cc:859
  2091. break;
  2092. case 393:
  2093. #line 1416 "dhcp6_parser.yy" // lalr1.cc:859
  2094. {
  2095. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  2096. ctx.stack_.back()->set("relay", m);
  2097. ctx.stack_.push_back(m);
  2098. ctx.enter(ctx.RELAY);
  2099. }
  2100. #line 2429 "dhcp6_parser.cc" // lalr1.cc:859
  2101. break;
  2102. case 394:
  2103. #line 1421 "dhcp6_parser.yy" // lalr1.cc:859
  2104. {
  2105. ctx.stack_.pop_back();
  2106. ctx.leave();
  2107. }
  2108. #line 2438 "dhcp6_parser.cc" // lalr1.cc:859
  2109. break;
  2110. case 395:
  2111. #line 1426 "dhcp6_parser.yy" // lalr1.cc:859
  2112. {
  2113. ctx.enter(ctx.NO_KEYWORD);
  2114. }
  2115. #line 2446 "dhcp6_parser.cc" // lalr1.cc:859
  2116. break;
  2117. case 396:
  2118. #line 1428 "dhcp6_parser.yy" // lalr1.cc:859
  2119. {
  2120. ElementPtr ip(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  2121. ctx.stack_.back()->set("ip-address", ip);
  2122. ctx.leave();
  2123. }
  2124. #line 2456 "dhcp6_parser.cc" // lalr1.cc:859
  2125. break;
  2126. case 397:
  2127. #line 1437 "dhcp6_parser.yy" // lalr1.cc:859
  2128. {
  2129. ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
  2130. ctx.stack_.back()->set("client-classes", l);
  2131. ctx.stack_.push_back(l);
  2132. ctx.enter(ctx.CLIENT_CLASSES);
  2133. }
  2134. #line 2467 "dhcp6_parser.cc" // lalr1.cc:859
  2135. break;
  2136. case 398:
  2137. #line 1442 "dhcp6_parser.yy" // lalr1.cc:859
  2138. {
  2139. ctx.stack_.pop_back();
  2140. ctx.leave();
  2141. }
  2142. #line 2476 "dhcp6_parser.cc" // lalr1.cc:859
  2143. break;
  2144. case 401:
  2145. #line 1451 "dhcp6_parser.yy" // lalr1.cc:859
  2146. {
  2147. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  2148. ctx.stack_.back()->add(m);
  2149. ctx.stack_.push_back(m);
  2150. }
  2151. #line 2486 "dhcp6_parser.cc" // lalr1.cc:859
  2152. break;
  2153. case 402:
  2154. #line 1455 "dhcp6_parser.yy" // lalr1.cc:859
  2155. {
  2156. ctx.stack_.pop_back();
  2157. }
  2158. #line 2494 "dhcp6_parser.cc" // lalr1.cc:859
  2159. break;
  2160. case 412:
  2161. #line 1475 "dhcp6_parser.yy" // lalr1.cc:859
  2162. {
  2163. ctx.enter(ctx.NO_KEYWORD);
  2164. }
  2165. #line 2502 "dhcp6_parser.cc" // lalr1.cc:859
  2166. break;
  2167. case 413:
  2168. #line 1477 "dhcp6_parser.yy" // lalr1.cc:859
  2169. {
  2170. ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  2171. ctx.stack_.back()->set("test", test);
  2172. ctx.leave();
  2173. }
  2174. #line 2512 "dhcp6_parser.cc" // lalr1.cc:859
  2175. break;
  2176. case 414:
  2177. #line 1486 "dhcp6_parser.yy" // lalr1.cc:859
  2178. {
  2179. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  2180. ctx.stack_.back()->set("server-id", m);
  2181. ctx.stack_.push_back(m);
  2182. ctx.enter(ctx.SERVER_ID);
  2183. }
  2184. #line 2523 "dhcp6_parser.cc" // lalr1.cc:859
  2185. break;
  2186. case 415:
  2187. #line 1491 "dhcp6_parser.yy" // lalr1.cc:859
  2188. {
  2189. ctx.stack_.pop_back();
  2190. ctx.leave();
  2191. }
  2192. #line 2532 "dhcp6_parser.cc" // lalr1.cc:859
  2193. break;
  2194. case 425:
  2195. #line 1509 "dhcp6_parser.yy" // lalr1.cc:859
  2196. {
  2197. ctx.enter(ctx.DUID_TYPE);
  2198. }
  2199. #line 2540 "dhcp6_parser.cc" // lalr1.cc:859
  2200. break;
  2201. case 426:
  2202. #line 1511 "dhcp6_parser.yy" // lalr1.cc:859
  2203. {
  2204. ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
  2205. ctx.leave();
  2206. }
  2207. #line 2549 "dhcp6_parser.cc" // lalr1.cc:859
  2208. break;
  2209. case 427:
  2210. #line 1516 "dhcp6_parser.yy" // lalr1.cc:859
  2211. { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
  2212. #line 2555 "dhcp6_parser.cc" // lalr1.cc:859
  2213. break;
  2214. case 428:
  2215. #line 1517 "dhcp6_parser.yy" // lalr1.cc:859
  2216. { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
  2217. #line 2561 "dhcp6_parser.cc" // lalr1.cc:859
  2218. break;
  2219. case 429:
  2220. #line 1518 "dhcp6_parser.yy" // lalr1.cc:859
  2221. { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
  2222. #line 2567 "dhcp6_parser.cc" // lalr1.cc:859
  2223. break;
  2224. case 430:
  2225. #line 1521 "dhcp6_parser.yy" // lalr1.cc:859
  2226. {
  2227. ElementPtr htype(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  2228. ctx.stack_.back()->set("htype", htype);
  2229. }
  2230. #line 2576 "dhcp6_parser.cc" // lalr1.cc:859
  2231. break;
  2232. case 431:
  2233. #line 1526 "dhcp6_parser.yy" // lalr1.cc:859
  2234. {
  2235. ctx.enter(ctx.NO_KEYWORD);
  2236. }
  2237. #line 2584 "dhcp6_parser.cc" // lalr1.cc:859
  2238. break;
  2239. case 432:
  2240. #line 1528 "dhcp6_parser.yy" // lalr1.cc:859
  2241. {
  2242. ElementPtr id(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  2243. ctx.stack_.back()->set("identifier", id);
  2244. ctx.leave();
  2245. }
  2246. #line 2594 "dhcp6_parser.cc" // lalr1.cc:859
  2247. break;
  2248. case 433:
  2249. #line 1534 "dhcp6_parser.yy" // lalr1.cc:859
  2250. {
  2251. ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  2252. ctx.stack_.back()->set("time", time);
  2253. }
  2254. #line 2603 "dhcp6_parser.cc" // lalr1.cc:859
  2255. break;
  2256. case 434:
  2257. #line 1539 "dhcp6_parser.yy" // lalr1.cc:859
  2258. {
  2259. ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  2260. ctx.stack_.back()->set("enterprise-id", time);
  2261. }
  2262. #line 2612 "dhcp6_parser.cc" // lalr1.cc:859
  2263. break;
  2264. case 435:
  2265. #line 1546 "dhcp6_parser.yy" // lalr1.cc:859
  2266. {
  2267. ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  2268. ctx.stack_.back()->set("dhcp4o6-port", time);
  2269. }
  2270. #line 2621 "dhcp6_parser.cc" // lalr1.cc:859
  2271. break;
  2272. case 436:
  2273. #line 1553 "dhcp6_parser.yy" // lalr1.cc:859
  2274. {
  2275. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  2276. ctx.stack_.back()->set("control-socket", m);
  2277. ctx.stack_.push_back(m);
  2278. ctx.enter(ctx.CONTROL_SOCKET);
  2279. }
  2280. #line 2632 "dhcp6_parser.cc" // lalr1.cc:859
  2281. break;
  2282. case 437:
  2283. #line 1558 "dhcp6_parser.yy" // lalr1.cc:859
  2284. {
  2285. ctx.stack_.pop_back();
  2286. ctx.leave();
  2287. }
  2288. #line 2641 "dhcp6_parser.cc" // lalr1.cc:859
  2289. break;
  2290. case 442:
  2291. #line 1571 "dhcp6_parser.yy" // lalr1.cc:859
  2292. {
  2293. ctx.enter(ctx.NO_KEYWORD);
  2294. }
  2295. #line 2649 "dhcp6_parser.cc" // lalr1.cc:859
  2296. break;
  2297. case 443:
  2298. #line 1573 "dhcp6_parser.yy" // lalr1.cc:859
  2299. {
  2300. ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  2301. ctx.stack_.back()->set("socket-type", stype);
  2302. ctx.leave();
  2303. }
  2304. #line 2659 "dhcp6_parser.cc" // lalr1.cc:859
  2305. break;
  2306. case 444:
  2307. #line 1579 "dhcp6_parser.yy" // lalr1.cc:859
  2308. {
  2309. ctx.enter(ctx.NO_KEYWORD);
  2310. }
  2311. #line 2667 "dhcp6_parser.cc" // lalr1.cc:859
  2312. break;
  2313. case 445:
  2314. #line 1581 "dhcp6_parser.yy" // lalr1.cc:859
  2315. {
  2316. ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  2317. ctx.stack_.back()->set("socket-name", name);
  2318. ctx.leave();
  2319. }
  2320. #line 2677 "dhcp6_parser.cc" // lalr1.cc:859
  2321. break;
  2322. case 446:
  2323. #line 1589 "dhcp6_parser.yy" // lalr1.cc:859
  2324. {
  2325. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  2326. ctx.stack_.back()->set("dhcp-ddns", m);
  2327. ctx.stack_.push_back(m);
  2328. ctx.enter(ctx.DHCP_DDNS);
  2329. }
  2330. #line 2688 "dhcp6_parser.cc" // lalr1.cc:859
  2331. break;
  2332. case 447:
  2333. #line 1594 "dhcp6_parser.yy" // lalr1.cc:859
  2334. {
  2335. ctx.stack_.pop_back();
  2336. ctx.leave();
  2337. }
  2338. #line 2697 "dhcp6_parser.cc" // lalr1.cc:859
  2339. break;
  2340. case 448:
  2341. #line 1599 "dhcp6_parser.yy" // lalr1.cc:859
  2342. {
  2343. // Parse the dhcp-ddns map
  2344. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  2345. ctx.stack_.push_back(m);
  2346. }
  2347. #line 2707 "dhcp6_parser.cc" // lalr1.cc:859
  2348. break;
  2349. case 449:
  2350. #line 1603 "dhcp6_parser.yy" // lalr1.cc:859
  2351. {
  2352. // parsing completed
  2353. }
  2354. #line 2715 "dhcp6_parser.cc" // lalr1.cc:859
  2355. break;
  2356. case 467:
  2357. #line 1628 "dhcp6_parser.yy" // lalr1.cc:859
  2358. {
  2359. ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
  2360. ctx.stack_.back()->set("enable-updates", b);
  2361. }
  2362. #line 2724 "dhcp6_parser.cc" // lalr1.cc:859
  2363. break;
  2364. case 468:
  2365. #line 1633 "dhcp6_parser.yy" // lalr1.cc:859
  2366. {
  2367. ctx.enter(ctx.NO_KEYWORD);
  2368. }
  2369. #line 2732 "dhcp6_parser.cc" // lalr1.cc:859
  2370. break;
  2371. case 469:
  2372. #line 1635 "dhcp6_parser.yy" // lalr1.cc:859
  2373. {
  2374. ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  2375. ctx.stack_.back()->set("qualifying-suffix", s);
  2376. ctx.leave();
  2377. }
  2378. #line 2742 "dhcp6_parser.cc" // lalr1.cc:859
  2379. break;
  2380. case 470:
  2381. #line 1641 "dhcp6_parser.yy" // lalr1.cc:859
  2382. {
  2383. ctx.enter(ctx.NO_KEYWORD);
  2384. }
  2385. #line 2750 "dhcp6_parser.cc" // lalr1.cc:859
  2386. break;
  2387. case 471:
  2388. #line 1643 "dhcp6_parser.yy" // lalr1.cc:859
  2389. {
  2390. ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  2391. ctx.stack_.back()->set("server-ip", s);
  2392. ctx.leave();
  2393. }
  2394. #line 2760 "dhcp6_parser.cc" // lalr1.cc:859
  2395. break;
  2396. case 472:
  2397. #line 1649 "dhcp6_parser.yy" // lalr1.cc:859
  2398. {
  2399. ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  2400. ctx.stack_.back()->set("server-port", i);
  2401. }
  2402. #line 2769 "dhcp6_parser.cc" // lalr1.cc:859
  2403. break;
  2404. case 473:
  2405. #line 1654 "dhcp6_parser.yy" // lalr1.cc:859
  2406. {
  2407. ctx.enter(ctx.NO_KEYWORD);
  2408. }
  2409. #line 2777 "dhcp6_parser.cc" // lalr1.cc:859
  2410. break;
  2411. case 474:
  2412. #line 1656 "dhcp6_parser.yy" // lalr1.cc:859
  2413. {
  2414. ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  2415. ctx.stack_.back()->set("sender-ip", s);
  2416. ctx.leave();
  2417. }
  2418. #line 2787 "dhcp6_parser.cc" // lalr1.cc:859
  2419. break;
  2420. case 475:
  2421. #line 1662 "dhcp6_parser.yy" // lalr1.cc:859
  2422. {
  2423. ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  2424. ctx.stack_.back()->set("sender-port", i);
  2425. }
  2426. #line 2796 "dhcp6_parser.cc" // lalr1.cc:859
  2427. break;
  2428. case 476:
  2429. #line 1667 "dhcp6_parser.yy" // lalr1.cc:859
  2430. {
  2431. ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  2432. ctx.stack_.back()->set("max-queue-size", i);
  2433. }
  2434. #line 2805 "dhcp6_parser.cc" // lalr1.cc:859
  2435. break;
  2436. case 477:
  2437. #line 1672 "dhcp6_parser.yy" // lalr1.cc:859
  2438. {
  2439. ctx.enter(ctx.NCR_PROTOCOL);
  2440. }
  2441. #line 2813 "dhcp6_parser.cc" // lalr1.cc:859
  2442. break;
  2443. case 478:
  2444. #line 1674 "dhcp6_parser.yy" // lalr1.cc:859
  2445. {
  2446. ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
  2447. ctx.leave();
  2448. }
  2449. #line 2822 "dhcp6_parser.cc" // lalr1.cc:859
  2450. break;
  2451. case 479:
  2452. #line 1680 "dhcp6_parser.yy" // lalr1.cc:859
  2453. { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
  2454. #line 2828 "dhcp6_parser.cc" // lalr1.cc:859
  2455. break;
  2456. case 480:
  2457. #line 1681 "dhcp6_parser.yy" // lalr1.cc:859
  2458. { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
  2459. #line 2834 "dhcp6_parser.cc" // lalr1.cc:859
  2460. break;
  2461. case 481:
  2462. #line 1684 "dhcp6_parser.yy" // lalr1.cc:859
  2463. {
  2464. ctx.enter(ctx.NCR_FORMAT);
  2465. }
  2466. #line 2842 "dhcp6_parser.cc" // lalr1.cc:859
  2467. break;
  2468. case 482:
  2469. #line 1686 "dhcp6_parser.yy" // lalr1.cc:859
  2470. {
  2471. ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
  2472. ctx.stack_.back()->set("ncr-format", json);
  2473. ctx.leave();
  2474. }
  2475. #line 2852 "dhcp6_parser.cc" // lalr1.cc:859
  2476. break;
  2477. case 483:
  2478. #line 1692 "dhcp6_parser.yy" // lalr1.cc:859
  2479. {
  2480. ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
  2481. ctx.stack_.back()->set("always-include-fqdn", b);
  2482. }
  2483. #line 2861 "dhcp6_parser.cc" // lalr1.cc:859
  2484. break;
  2485. case 484:
  2486. #line 1697 "dhcp6_parser.yy" // lalr1.cc:859
  2487. {
  2488. ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
  2489. ctx.stack_.back()->set("override-no-update", b);
  2490. }
  2491. #line 2870 "dhcp6_parser.cc" // lalr1.cc:859
  2492. break;
  2493. case 485:
  2494. #line 1702 "dhcp6_parser.yy" // lalr1.cc:859
  2495. {
  2496. ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
  2497. ctx.stack_.back()->set("override-client-update", b);
  2498. }
  2499. #line 2879 "dhcp6_parser.cc" // lalr1.cc:859
  2500. break;
  2501. case 486:
  2502. #line 1707 "dhcp6_parser.yy" // lalr1.cc:859
  2503. {
  2504. ctx.enter(ctx.REPLACE_CLIENT_NAME);
  2505. }
  2506. #line 2887 "dhcp6_parser.cc" // lalr1.cc:859
  2507. break;
  2508. case 487:
  2509. #line 1709 "dhcp6_parser.yy" // lalr1.cc:859
  2510. {
  2511. ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
  2512. ctx.leave();
  2513. }
  2514. #line 2896 "dhcp6_parser.cc" // lalr1.cc:859
  2515. break;
  2516. case 488:
  2517. #line 1715 "dhcp6_parser.yy" // lalr1.cc:859
  2518. {
  2519. yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
  2520. }
  2521. #line 2904 "dhcp6_parser.cc" // lalr1.cc:859
  2522. break;
  2523. case 489:
  2524. #line 1718 "dhcp6_parser.yy" // lalr1.cc:859
  2525. {
  2526. yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
  2527. }
  2528. #line 2912 "dhcp6_parser.cc" // lalr1.cc:859
  2529. break;
  2530. case 490:
  2531. #line 1721 "dhcp6_parser.yy" // lalr1.cc:859
  2532. {
  2533. yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
  2534. }
  2535. #line 2920 "dhcp6_parser.cc" // lalr1.cc:859
  2536. break;
  2537. case 491:
  2538. #line 1724 "dhcp6_parser.yy" // lalr1.cc:859
  2539. {
  2540. yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
  2541. }
  2542. #line 2928 "dhcp6_parser.cc" // lalr1.cc:859
  2543. break;
  2544. case 492:
  2545. #line 1727 "dhcp6_parser.yy" // lalr1.cc:859
  2546. {
  2547. error(yystack_[0].location, "boolean values for the replace-client-name are "
  2548. "no longer supported");
  2549. }
  2550. #line 2937 "dhcp6_parser.cc" // lalr1.cc:859
  2551. break;
  2552. case 493:
  2553. #line 1733 "dhcp6_parser.yy" // lalr1.cc:859
  2554. {
  2555. ctx.enter(ctx.NO_KEYWORD);
  2556. }
  2557. #line 2945 "dhcp6_parser.cc" // lalr1.cc:859
  2558. break;
  2559. case 494:
  2560. #line 1735 "dhcp6_parser.yy" // lalr1.cc:859
  2561. {
  2562. ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  2563. ctx.stack_.back()->set("generated-prefix", s);
  2564. ctx.leave();
  2565. }
  2566. #line 2955 "dhcp6_parser.cc" // lalr1.cc:859
  2567. break;
  2568. case 495:
  2569. #line 1743 "dhcp6_parser.yy" // lalr1.cc:859
  2570. {
  2571. ctx.enter(ctx.NO_KEYWORD);
  2572. }
  2573. #line 2963 "dhcp6_parser.cc" // lalr1.cc:859
  2574. break;
  2575. case 496:
  2576. #line 1745 "dhcp6_parser.yy" // lalr1.cc:859
  2577. {
  2578. ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
  2579. ctx.leave();
  2580. }
  2581. #line 2972 "dhcp6_parser.cc" // lalr1.cc:859
  2582. break;
  2583. case 497:
  2584. #line 1750 "dhcp6_parser.yy" // lalr1.cc:859
  2585. {
  2586. ctx.enter(ctx.NO_KEYWORD);
  2587. }
  2588. #line 2980 "dhcp6_parser.cc" // lalr1.cc:859
  2589. break;
  2590. case 498:
  2591. #line 1752 "dhcp6_parser.yy" // lalr1.cc:859
  2592. {
  2593. ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
  2594. ctx.leave();
  2595. }
  2596. #line 2989 "dhcp6_parser.cc" // lalr1.cc:859
  2597. break;
  2598. case 499:
  2599. #line 1757 "dhcp6_parser.yy" // lalr1.cc:859
  2600. {
  2601. ctx.enter(ctx.NO_KEYWORD);
  2602. }
  2603. #line 2997 "dhcp6_parser.cc" // lalr1.cc:859
  2604. break;
  2605. case 500:
  2606. #line 1759 "dhcp6_parser.yy" // lalr1.cc:859
  2607. {
  2608. ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
  2609. ctx.leave();
  2610. }
  2611. #line 3006 "dhcp6_parser.cc" // lalr1.cc:859
  2612. break;
  2613. case 501:
  2614. #line 1770 "dhcp6_parser.yy" // lalr1.cc:859
  2615. {
  2616. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  2617. ctx.stack_.back()->set("Logging", m);
  2618. ctx.stack_.push_back(m);
  2619. ctx.enter(ctx.LOGGING);
  2620. }
  2621. #line 3017 "dhcp6_parser.cc" // lalr1.cc:859
  2622. break;
  2623. case 502:
  2624. #line 1775 "dhcp6_parser.yy" // lalr1.cc:859
  2625. {
  2626. ctx.stack_.pop_back();
  2627. ctx.leave();
  2628. }
  2629. #line 3026 "dhcp6_parser.cc" // lalr1.cc:859
  2630. break;
  2631. case 506:
  2632. #line 1792 "dhcp6_parser.yy" // lalr1.cc:859
  2633. {
  2634. ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
  2635. ctx.stack_.back()->set("loggers", l);
  2636. ctx.stack_.push_back(l);
  2637. ctx.enter(ctx.LOGGERS);
  2638. }
  2639. #line 3037 "dhcp6_parser.cc" // lalr1.cc:859
  2640. break;
  2641. case 507:
  2642. #line 1797 "dhcp6_parser.yy" // lalr1.cc:859
  2643. {
  2644. ctx.stack_.pop_back();
  2645. ctx.leave();
  2646. }
  2647. #line 3046 "dhcp6_parser.cc" // lalr1.cc:859
  2648. break;
  2649. case 510:
  2650. #line 1809 "dhcp6_parser.yy" // lalr1.cc:859
  2651. {
  2652. ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
  2653. ctx.stack_.back()->add(l);
  2654. ctx.stack_.push_back(l);
  2655. }
  2656. #line 3056 "dhcp6_parser.cc" // lalr1.cc:859
  2657. break;
  2658. case 511:
  2659. #line 1813 "dhcp6_parser.yy" // lalr1.cc:859
  2660. {
  2661. ctx.stack_.pop_back();
  2662. }
  2663. #line 3064 "dhcp6_parser.cc" // lalr1.cc:859
  2664. break;
  2665. case 519:
  2666. #line 1828 "dhcp6_parser.yy" // lalr1.cc:859
  2667. {
  2668. ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  2669. ctx.stack_.back()->set("debuglevel", dl);
  2670. }
  2671. #line 3073 "dhcp6_parser.cc" // lalr1.cc:859
  2672. break;
  2673. case 520:
  2674. #line 1833 "dhcp6_parser.yy" // lalr1.cc:859
  2675. {
  2676. ctx.enter(ctx.NO_KEYWORD);
  2677. }
  2678. #line 3081 "dhcp6_parser.cc" // lalr1.cc:859
  2679. break;
  2680. case 521:
  2681. #line 1835 "dhcp6_parser.yy" // lalr1.cc:859
  2682. {
  2683. ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  2684. ctx.stack_.back()->set("severity", sev);
  2685. ctx.leave();
  2686. }
  2687. #line 3091 "dhcp6_parser.cc" // lalr1.cc:859
  2688. break;
  2689. case 522:
  2690. #line 1841 "dhcp6_parser.yy" // lalr1.cc:859
  2691. {
  2692. ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
  2693. ctx.stack_.back()->set("output_options", l);
  2694. ctx.stack_.push_back(l);
  2695. ctx.enter(ctx.OUTPUT_OPTIONS);
  2696. }
  2697. #line 3102 "dhcp6_parser.cc" // lalr1.cc:859
  2698. break;
  2699. case 523:
  2700. #line 1846 "dhcp6_parser.yy" // lalr1.cc:859
  2701. {
  2702. ctx.stack_.pop_back();
  2703. ctx.leave();
  2704. }
  2705. #line 3111 "dhcp6_parser.cc" // lalr1.cc:859
  2706. break;
  2707. case 526:
  2708. #line 1855 "dhcp6_parser.yy" // lalr1.cc:859
  2709. {
  2710. ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
  2711. ctx.stack_.back()->add(m);
  2712. ctx.stack_.push_back(m);
  2713. }
  2714. #line 3121 "dhcp6_parser.cc" // lalr1.cc:859
  2715. break;
  2716. case 527:
  2717. #line 1859 "dhcp6_parser.yy" // lalr1.cc:859
  2718. {
  2719. ctx.stack_.pop_back();
  2720. }
  2721. #line 3129 "dhcp6_parser.cc" // lalr1.cc:859
  2722. break;
  2723. case 534:
  2724. #line 1873 "dhcp6_parser.yy" // lalr1.cc:859
  2725. {
  2726. ctx.enter(ctx.NO_KEYWORD);
  2727. }
  2728. #line 3137 "dhcp6_parser.cc" // lalr1.cc:859
  2729. break;
  2730. case 535:
  2731. #line 1875 "dhcp6_parser.yy" // lalr1.cc:859
  2732. {
  2733. ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
  2734. ctx.stack_.back()->set("output", sev);
  2735. ctx.leave();
  2736. }
  2737. #line 3147 "dhcp6_parser.cc" // lalr1.cc:859
  2738. break;
  2739. case 536:
  2740. #line 1881 "dhcp6_parser.yy" // lalr1.cc:859
  2741. {
  2742. ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
  2743. ctx.stack_.back()->set("flush", flush);
  2744. }
  2745. #line 3156 "dhcp6_parser.cc" // lalr1.cc:859
  2746. break;
  2747. case 537:
  2748. #line 1886 "dhcp6_parser.yy" // lalr1.cc:859
  2749. {
  2750. ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  2751. ctx.stack_.back()->set("maxsize", maxsize);
  2752. }
  2753. #line 3165 "dhcp6_parser.cc" // lalr1.cc:859
  2754. break;
  2755. case 538:
  2756. #line 1891 "dhcp6_parser.yy" // lalr1.cc:859
  2757. {
  2758. ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
  2759. ctx.stack_.back()->set("maxver", maxver);
  2760. }
  2761. #line 3174 "dhcp6_parser.cc" // lalr1.cc:859
  2762. break;
  2763. #line 3178 "dhcp6_parser.cc" // lalr1.cc:859
  2764. default:
  2765. break;
  2766. }
  2767. }
  2768. catch (const syntax_error& yyexc)
  2769. {
  2770. error (yyexc);
  2771. YYERROR;
  2772. }
  2773. YY_SYMBOL_PRINT ("-> $$ =", yylhs);
  2774. yypop_ (yylen);
  2775. yylen = 0;
  2776. YY_STACK_PRINT ();
  2777. // Shift the result of the reduction.
  2778. yypush_ (YY_NULLPTR, yylhs);
  2779. }
  2780. goto yynewstate;
  2781. /*--------------------------------------.
  2782. | yyerrlab -- here on detecting error. |
  2783. `--------------------------------------*/
  2784. yyerrlab:
  2785. // If not already recovering from an error, report this error.
  2786. if (!yyerrstatus_)
  2787. {
  2788. ++yynerrs_;
  2789. error (yyla.location, yysyntax_error_ (yystack_[0].state, yyla));
  2790. }
  2791. yyerror_range[1].location = yyla.location;
  2792. if (yyerrstatus_ == 3)
  2793. {
  2794. /* If just tried and failed to reuse lookahead token after an
  2795. error, discard it. */
  2796. // Return failure if at end of input.
  2797. if (yyla.type_get () == yyeof_)
  2798. YYABORT;
  2799. else if (!yyla.empty ())
  2800. {
  2801. yy_destroy_ ("Error: discarding", yyla);
  2802. yyla.clear ();
  2803. }
  2804. }
  2805. // Else will try to reuse lookahead token after shifting the error token.
  2806. goto yyerrlab1;
  2807. /*---------------------------------------------------.
  2808. | yyerrorlab -- error raised explicitly by YYERROR. |
  2809. `---------------------------------------------------*/
  2810. yyerrorlab:
  2811. /* Pacify compilers like GCC when the user code never invokes
  2812. YYERROR and the label yyerrorlab therefore never appears in user
  2813. code. */
  2814. if (false)
  2815. goto yyerrorlab;
  2816. yyerror_range[1].location = yystack_[yylen - 1].location;
  2817. /* Do not reclaim the symbols of the rule whose action triggered
  2818. this YYERROR. */
  2819. yypop_ (yylen);
  2820. yylen = 0;
  2821. goto yyerrlab1;
  2822. /*-------------------------------------------------------------.
  2823. | yyerrlab1 -- common code for both syntax error and YYERROR. |
  2824. `-------------------------------------------------------------*/
  2825. yyerrlab1:
  2826. yyerrstatus_ = 3; // Each real token shifted decrements this.
  2827. {
  2828. stack_symbol_type error_token;
  2829. for (;;)
  2830. {
  2831. yyn = yypact_[yystack_[0].state];
  2832. if (!yy_pact_value_is_default_ (yyn))
  2833. {
  2834. yyn += yyterror_;
  2835. if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_)
  2836. {
  2837. yyn = yytable_[yyn];
  2838. if (0 < yyn)
  2839. break;
  2840. }
  2841. }
  2842. // Pop the current state because it cannot handle the error token.
  2843. if (yystack_.size () == 1)
  2844. YYABORT;
  2845. yyerror_range[1].location = yystack_[0].location;
  2846. yy_destroy_ ("Error: popping", yystack_[0]);
  2847. yypop_ ();
  2848. YY_STACK_PRINT ();
  2849. }
  2850. yyerror_range[2].location = yyla.location;
  2851. YYLLOC_DEFAULT (error_token.location, yyerror_range, 2);
  2852. // Shift the error token.
  2853. error_token.state = yyn;
  2854. yypush_ ("Shifting", error_token);
  2855. }
  2856. goto yynewstate;
  2857. // Accept.
  2858. yyacceptlab:
  2859. yyresult = 0;
  2860. goto yyreturn;
  2861. // Abort.
  2862. yyabortlab:
  2863. yyresult = 1;
  2864. goto yyreturn;
  2865. yyreturn:
  2866. if (!yyla.empty ())
  2867. yy_destroy_ ("Cleanup: discarding lookahead", yyla);
  2868. /* Do not reclaim the symbols of the rule whose action triggered
  2869. this YYABORT or YYACCEPT. */
  2870. yypop_ (yylen);
  2871. while (1 < yystack_.size ())
  2872. {
  2873. yy_destroy_ ("Cleanup: popping", yystack_[0]);
  2874. yypop_ ();
  2875. }
  2876. return yyresult;
  2877. }
  2878. catch (...)
  2879. {
  2880. YYCDEBUG << "Exception caught: cleaning lookahead and stack"
  2881. << std::endl;
  2882. // Do not try to display the values of the reclaimed symbols,
  2883. // as their printer might throw an exception.
  2884. if (!yyla.empty ())
  2885. yy_destroy_ (YY_NULLPTR, yyla);
  2886. while (1 < yystack_.size ())
  2887. {
  2888. yy_destroy_ (YY_NULLPTR, yystack_[0]);
  2889. yypop_ ();
  2890. }
  2891. throw;
  2892. }
  2893. }
  2894. void
  2895. Dhcp6Parser::error (const syntax_error& yyexc)
  2896. {
  2897. error (yyexc.location, yyexc.what());
  2898. }
  2899. // Generate an error message.
  2900. std::string
  2901. Dhcp6Parser::yysyntax_error_ (state_type yystate, const symbol_type& yyla) const
  2902. {
  2903. // Number of reported tokens (one for the "unexpected", one per
  2904. // "expected").
  2905. size_t yycount = 0;
  2906. // Its maximum.
  2907. enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
  2908. // Arguments of yyformat.
  2909. char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
  2910. /* There are many possibilities here to consider:
  2911. - If this state is a consistent state with a default action, then
  2912. the only way this function was invoked is if the default action
  2913. is an error action. In that case, don't check for expected
  2914. tokens because there are none.
  2915. - The only way there can be no lookahead present (in yyla) is
  2916. if this state is a consistent state with a default action.
  2917. Thus, detecting the absence of a lookahead is sufficient to
  2918. determine that there is no unexpected or expected token to
  2919. report. In that case, just report a simple "syntax error".
  2920. - Don't assume there isn't a lookahead just because this state is
  2921. a consistent state with a default action. There might have
  2922. been a previous inconsistent state, consistent state with a
  2923. non-default action, or user semantic action that manipulated
  2924. yyla. (However, yyla is currently not documented for users.)
  2925. - Of course, the expected token list depends on states to have
  2926. correct lookahead information, and it depends on the parser not
  2927. to perform extra reductions after fetching a lookahead from the
  2928. scanner and before detecting a syntax error. Thus, state
  2929. merging (from LALR or IELR) and default reductions corrupt the
  2930. expected token list. However, the list is correct for
  2931. canonical LR with one exception: it will still contain any
  2932. token that will not be accepted due to an error action in a
  2933. later state.
  2934. */
  2935. if (!yyla.empty ())
  2936. {
  2937. int yytoken = yyla.type_get ();
  2938. yyarg[yycount++] = yytname_[yytoken];
  2939. int yyn = yypact_[yystate];
  2940. if (!yy_pact_value_is_default_ (yyn))
  2941. {
  2942. /* Start YYX at -YYN if negative to avoid negative indexes in
  2943. YYCHECK. In other words, skip the first -YYN actions for
  2944. this state because they are default actions. */
  2945. int yyxbegin = yyn < 0 ? -yyn : 0;
  2946. // Stay within bounds of both yycheck and yytname.
  2947. int yychecklim = yylast_ - yyn + 1;
  2948. int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_;
  2949. for (int yyx = yyxbegin; yyx < yyxend; ++yyx)
  2950. if (yycheck_[yyx + yyn] == yyx && yyx != yyterror_
  2951. && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
  2952. {
  2953. if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
  2954. {
  2955. yycount = 1;
  2956. break;
  2957. }
  2958. else
  2959. yyarg[yycount++] = yytname_[yyx];
  2960. }
  2961. }
  2962. }
  2963. char const* yyformat = YY_NULLPTR;
  2964. switch (yycount)
  2965. {
  2966. #define YYCASE_(N, S) \
  2967. case N: \
  2968. yyformat = S; \
  2969. break
  2970. YYCASE_(0, YY_("syntax error"));
  2971. YYCASE_(1, YY_("syntax error, unexpected %s"));
  2972. YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
  2973. YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
  2974. YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
  2975. YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
  2976. #undef YYCASE_
  2977. }
  2978. std::string yyres;
  2979. // Argument number.
  2980. size_t yyi = 0;
  2981. for (char const* yyp = yyformat; *yyp; ++yyp)
  2982. if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount)
  2983. {
  2984. yyres += yytnamerr_ (yyarg[yyi++]);
  2985. ++yyp;
  2986. }
  2987. else
  2988. yyres += *yyp;
  2989. return yyres;
  2990. }
  2991. const short int Dhcp6Parser::yypact_ninf_ = -503;
  2992. const signed char Dhcp6Parser::yytable_ninf_ = -1;
  2993. const short int
  2994. Dhcp6Parser::yypact_[] =
  2995. {
  2996. 60, -503, -503, -503, -503, -503, -503, -503, -503, -503,
  2997. -503, -503, -503, 29, 19, 30, 34, 79, 98, 100,
  2998. 102, 108, 121, 128, 146, 157, -503, -503, -503, -503,
  2999. -503, -503, -503, -503, -503, -503, -503, -503, -503, -503,
  3000. -503, -503, -503, -503, -503, -503, -503, -503, -503, -503,
  3001. -503, -503, -503, -503, -503, -503, -503, -503, -503, -503,
  3002. 19, 18, 17, 31, 162, 23, 47, 37, 70, 32,
  3003. -8, -42, 137, -503, 202, 181, 210, 217, 231, -503,
  3004. -503, -503, -503, -503, 286, -503, 35, -503, -503, -503,
  3005. -503, -503, -503, -503, -503, -503, 300, 305, 312, 318,
  3006. 319, -503, -503, -503, -503, -503, -503, -503, -503, -503,
  3007. -503, 320, -503, -503, -503, 123, -503, -503, -503, -503,
  3008. -503, -503, -503, -503, -503, -503, -503, -503, -503, -503,
  3009. -503, -503, -503, -503, -503, -503, -503, -503, -503, 321,
  3010. 124, -503, -503, -503, -503, -503, -503, -503, -503, -503,
  3011. 322, 323, -503, -503, -503, -503, -503, -503, -503, -503,
  3012. -503, 170, -503, -503, -503, -503, -503, -503, -503, -503,
  3013. -503, -503, -503, -503, -503, -503, -503, -503, -503, 174,
  3014. -503, -503, -503, -503, 324, -503, 325, 326, -503, -503,
  3015. -503, 178, -503, -503, -503, -503, -503, -503, -503, -503,
  3016. -503, -503, -503, -503, -503, -503, -503, 228, 264, -503,
  3017. -503, -503, -503, -503, -503, -503, -503, -503, -503, 327,
  3018. -503, -503, -503, 328, -503, -503, 329, 331, -503, -503,
  3019. -503, -503, -503, -503, -503, -503, -503, -503, -503, 332,
  3020. -503, -503, -503, -503, 330, 336, -503, -503, -503, -503,
  3021. -503, -503, -503, -503, -503, 180, -503, -503, -503, 337,
  3022. -503, -503, 338, -503, 339, 340, -503, -503, 341, 342,
  3023. 343, -503, -503, -503, 207, -503, -503, -503, -503, -503,
  3024. -503, -503, -503, -503, -503, -503, -503, -503, -503, -503,
  3025. -503, 19, 19, -503, 187, 344, 345, 346, 347, 348,
  3026. -503, 17, -503, 349, 350, 351, 191, 211, 212, 213,
  3027. 214, 352, 353, 354, 355, 360, 361, 362, 363, 364,
  3028. 365, 221, 367, 368, 31, -503, 369, 226, 162, -503,
  3029. 65, 370, 371, 372, 374, 375, 233, 229, 377, 379,
  3030. 380, 381, 23, -503, 382, 383, 47, -503, 384, 240,
  3031. 386, 242, 243, 37, -503, 389, 390, 391, 392, 393,
  3032. 394, 395, -503, 70, 396, 397, 256, 398, 399, 400,
  3033. 258, -503, 32, 402, 259, -503, -8, 403, 404, 111,
  3034. -503, 260, 408, 412, 268, 414, 271, 272, 415, 418,
  3035. 273, 274, 275, 419, 423, 137, -503, -503, -503, 424,
  3036. 422, 425, 19, 19, 19, -503, 426, 427, 428, -503,
  3037. -503, -503, -503, -503, 431, 432, 433, 434, 435, 436,
  3038. 437, 440, 439, 442, -503, 443, 444, -503, 447, -503,
  3039. -503, -503, -503, -503, -503, 445, 452, -503, -503, -503,
  3040. 453, 454, 282, 309, 314, -503, -503, -4, 315, 455,
  3041. 457, -503, 333, 459, -503, 334, -503, 335, -503, -503,
  3042. -503, 447, 447, 447, 356, 357, 358, 359, -503, 366,
  3043. 373, -503, 376, 378, 385, -503, -503, 387, -503, -503,
  3044. 388, 19, -503, -503, 401, 405, -503, 406, -503, -503,
  3045. 203, 409, -503, -503, -503, -3, 407, -503, 19, 31,
  3046. 306, -503, -503, -503, 162, 133, 133, 460, 461, 462,
  3047. -38, 19, 62, 42, 463, 135, 28, 195, 137, -503,
  3048. -503, 467, -503, 65, 465, 466, -503, -503, -503, -503,
  3049. -503, -503, -503, -503, 469, 410, -503, -503, -503, -503,
  3050. -503, -503, -503, -503, -503, -503, -503, -503, -503, -503,
  3051. -503, -503, -503, -503, -503, -503, -503, -503, -503, -503,
  3052. -503, -503, -503, -503, -503, -503, -503, -503, -503, -503,
  3053. -503, 208, -503, 209, -503, -503, 223, -503, -503, -503,
  3054. -503, 470, 473, 474, 475, 476, -503, -503, -503, 224,
  3055. -503, -503, -503, -503, -503, -503, -503, -503, -503, -503,
  3056. -503, -503, -503, 225, -503, 478, 482, -503, -503, 480,
  3057. 484, -503, -503, 485, 487, -503, -503, -503, 110, -503,
  3058. -503, -503, 488, -503, -503, -503, 188, -503, -503, -503,
  3059. -503, 232, -503, 489, 490, -503, 492, 493, 494, 495,
  3060. 496, 497, 251, -503, -503, -503, -503, -503, -503, -503,
  3061. -503, -503, 498, 499, 504, -503, -503, 252, -503, -503,
  3062. -503, -503, -503, -503, -503, -503, 253, -503, -503, -503,
  3063. 254, 411, 413, -503, -503, 505, 507, -503, -503, 506,
  3064. 510, -503, -503, 509, 513, -503, -503, 511, -503, 514,
  3065. 306, -503, -503, 516, 518, 519, 521, 416, 417, 420,
  3066. 421, 429, 523, 525, 133, -503, -503, 23, -503, 460,
  3067. 32, -503, 461, -8, -503, 462, -38, -503, -503, 62,
  3068. -503, 42, -503, -42, -503, 463, 430, 438, 441, 446,
  3069. 448, 449, 135, -503, 526, 527, 450, 451, 456, 28,
  3070. -503, 528, 530, 195, -503, -503, -503, 531, 535, -503,
  3071. 47, -503, 465, 37, -503, 466, 70, -503, 469, 536,
  3072. -503, 483, -503, 257, 458, 464, 468, -503, -503, -503,
  3073. -503, -503, 471, 472, -503, 255, -503, 533, -503, 534,
  3074. -503, -503, -503, -503, 261, -503, -503, -503, -503, -503,
  3075. -503, -503, -503, 215, 477, -503, -503, -503, -503, 479,
  3076. 481, -503, -503, 486, 262, -503, 263, -503, 537, -503,
  3077. 491, 532, -503, -503, -503, -503, -503, -503, -503, -503,
  3078. -503, -503, -503, -503, -503, -503, -503, -503, -503, -503,
  3079. -503, -503, -503, -503, -503, -503, -503, -503, -503, 283,
  3080. -503, 61, 532, -503, -503, 539, -503, -503, -503, 270,
  3081. -503, -503, -503, -503, -503, 540, 500, 542, 61, -503,
  3082. 512, -503, 502, -503, 541, -503, -503, 294, -503, -80,
  3083. 541, -503, -503, 543, 546, 547, 280, -503, -503, -503,
  3084. -503, -503, -503, 548, 501, 517, 520, -80, -503, 515,
  3085. -503, -503, -503, -503, -503
  3086. };
  3087. const unsigned short int
  3088. Dhcp6Parser::yydefact_[] =
  3089. {
  3090. 0, 2, 4, 6, 8, 10, 12, 14, 16, 18,
  3091. 20, 22, 24, 0, 0, 0, 0, 0, 0, 0,
  3092. 0, 0, 0, 0, 0, 0, 1, 41, 34, 30,
  3093. 29, 26, 27, 28, 33, 3, 31, 32, 54, 5,
  3094. 66, 7, 99, 9, 212, 11, 317, 13, 337, 15,
  3095. 364, 17, 256, 19, 291, 21, 177, 23, 448, 25,
  3096. 43, 37, 0, 0, 0, 0, 0, 0, 366, 258,
  3097. 293, 0, 0, 45, 0, 44, 0, 0, 38, 64,
  3098. 501, 495, 497, 499, 0, 63, 0, 56, 58, 60,
  3099. 61, 62, 59, 97, 108, 110, 0, 0, 0, 0,
  3100. 0, 204, 248, 283, 150, 167, 158, 397, 169, 188,
  3101. 414, 0, 436, 446, 91, 0, 68, 70, 71, 72,
  3102. 73, 74, 76, 77, 78, 79, 81, 80, 85, 86,
  3103. 75, 83, 84, 82, 87, 88, 89, 90, 105, 0,
  3104. 0, 101, 103, 104, 401, 309, 329, 233, 235, 237,
  3105. 0, 0, 241, 239, 356, 393, 232, 216, 217, 218,
  3106. 219, 0, 214, 223, 224, 225, 228, 230, 226, 227,
  3107. 220, 221, 222, 229, 231, 325, 327, 324, 322, 0,
  3108. 319, 321, 323, 349, 0, 352, 0, 0, 348, 344,
  3109. 347, 0, 339, 341, 342, 345, 346, 343, 391, 379,
  3110. 381, 383, 385, 387, 389, 378, 377, 0, 367, 368,
  3111. 372, 373, 370, 374, 375, 376, 371, 273, 140, 0,
  3112. 277, 275, 280, 0, 269, 270, 0, 259, 260, 262,
  3113. 272, 263, 264, 265, 279, 266, 267, 268, 304, 0,
  3114. 302, 303, 306, 307, 0, 294, 295, 297, 298, 299,
  3115. 300, 301, 184, 186, 181, 0, 179, 182, 183, 0,
  3116. 468, 470, 0, 473, 0, 0, 477, 481, 0, 0,
  3117. 0, 486, 493, 466, 0, 450, 452, 453, 454, 455,
  3118. 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
  3119. 42, 0, 0, 35, 0, 0, 0, 0, 0, 0,
  3120. 53, 0, 55, 0, 0, 0, 0, 0, 0, 0,
  3121. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  3122. 0, 0, 0, 0, 0, 67, 0, 0, 0, 100,
  3123. 403, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  3124. 0, 0, 0, 213, 0, 0, 0, 318, 0, 0,
  3125. 0, 0, 0, 0, 338, 0, 0, 0, 0, 0,
  3126. 0, 0, 365, 0, 0, 0, 0, 0, 0, 0,
  3127. 0, 257, 0, 0, 0, 292, 0, 0, 0, 0,
  3128. 178, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  3129. 0, 0, 0, 0, 0, 0, 449, 46, 39, 0,
  3130. 0, 0, 0, 0, 0, 57, 0, 0, 0, 92,
  3131. 93, 94, 95, 96, 0, 0, 0, 0, 0, 0,
  3132. 0, 0, 0, 0, 435, 0, 0, 69, 0, 107,
  3133. 102, 412, 410, 411, 409, 0, 404, 405, 407, 408,
  3134. 0, 0, 0, 0, 0, 246, 247, 0, 0, 0,
  3135. 0, 215, 0, 0, 320, 0, 351, 0, 354, 355,
  3136. 340, 0, 0, 0, 0, 0, 0, 0, 369, 0,
  3137. 0, 271, 0, 0, 0, 282, 261, 0, 308, 296,
  3138. 0, 0, 180, 467, 0, 0, 472, 0, 475, 476,
  3139. 0, 0, 483, 484, 485, 0, 0, 451, 0, 0,
  3140. 0, 496, 498, 500, 0, 0, 0, 206, 250, 285,
  3141. 0, 43, 0, 0, 171, 0, 0, 0, 0, 47,
  3142. 106, 0, 402, 0, 311, 331, 234, 236, 238, 243,
  3143. 244, 245, 242, 240, 358, 0, 326, 36, 328, 350,
  3144. 353, 392, 380, 382, 384, 386, 388, 390, 274, 141,
  3145. 278, 276, 281, 305, 185, 187, 469, 471, 474, 479,
  3146. 480, 478, 482, 488, 489, 490, 491, 492, 487, 494,
  3147. 40, 0, 506, 0, 503, 505, 0, 127, 133, 135,
  3148. 137, 0, 0, 0, 0, 0, 146, 148, 126, 0,
  3149. 112, 114, 115, 116, 117, 118, 119, 120, 121, 122,
  3150. 123, 124, 125, 0, 210, 0, 207, 208, 254, 0,
  3151. 251, 252, 289, 0, 286, 287, 156, 157, 0, 152,
  3152. 154, 155, 0, 165, 166, 162, 0, 160, 163, 164,
  3153. 399, 0, 175, 0, 172, 173, 0, 0, 0, 0,
  3154. 0, 0, 0, 190, 192, 193, 194, 195, 196, 197,
  3155. 425, 431, 0, 0, 0, 424, 423, 0, 416, 418,
  3156. 421, 419, 420, 422, 442, 444, 0, 438, 440, 441,
  3157. 0, 49, 0, 406, 315, 0, 312, 313, 335, 0,
  3158. 332, 333, 362, 0, 359, 360, 395, 0, 65, 0,
  3159. 0, 502, 98, 0, 0, 0, 0, 0, 0, 0,
  3160. 0, 0, 0, 0, 0, 109, 111, 0, 205, 0,
  3161. 258, 249, 0, 293, 284, 0, 0, 151, 168, 0,
  3162. 159, 0, 398, 0, 170, 0, 0, 0, 0, 0,
  3163. 0, 0, 0, 189, 0, 0, 0, 0, 0, 0,
  3164. 415, 0, 0, 0, 437, 447, 51, 0, 50, 413,
  3165. 0, 310, 0, 0, 330, 0, 366, 357, 0, 0,
  3166. 394, 0, 504, 0, 0, 0, 0, 139, 142, 143,
  3167. 144, 145, 0, 0, 113, 0, 209, 0, 253, 0,
  3168. 288, 153, 161, 400, 0, 174, 198, 199, 200, 201,
  3169. 202, 203, 191, 0, 0, 430, 433, 434, 417, 0,
  3170. 0, 439, 48, 0, 0, 314, 0, 334, 0, 361,
  3171. 0, 0, 129, 130, 131, 132, 128, 134, 136, 138,
  3172. 147, 149, 211, 255, 290, 176, 427, 428, 429, 426,
  3173. 432, 443, 445, 52, 316, 336, 363, 396, 510, 0,
  3174. 508, 0, 0, 507, 522, 0, 520, 518, 514, 0,
  3175. 512, 516, 517, 515, 509, 0, 0, 0, 0, 511,
  3176. 0, 519, 0, 513, 0, 521, 526, 0, 524, 0,
  3177. 0, 523, 534, 0, 0, 0, 0, 528, 530, 531,
  3178. 532, 533, 525, 0, 0, 0, 0, 0, 527, 0,
  3179. 536, 537, 538, 529, 535
  3180. };
  3181. const short int
  3182. Dhcp6Parser::yypgoto_[] =
  3183. {
  3184. -503, -503, -503, -503, -503, -503, -503, -503, -503, -503,
  3185. -503, -503, -503, -503, 11, -503, 103, -503, -503, -503,
  3186. -503, -503, -503, 46, -503, -150, -503, -503, -503, -62,
  3187. -503, -503, -503, 265, -503, -503, -503, -503, 59, 236,
  3188. -63, -50, -49, -43, -503, -503, -503, -503, -503, 58,
  3189. 235, -503, -503, -503, -503, -503, -503, -503, 64, -140,
  3190. -503, -503, -503, -503, -503, -503, -503, -503, -503, -503,
  3191. -58, -503, -502, -503, -503, -503, -503, -503, -503, -503,
  3192. -503, -503, -503, -149, -489, -503, -503, -503, -503, -148,
  3193. -503, -503, -503, -503, -503, -503, -503, -503, -152, -503,
  3194. -503, -503, -147, 196, -503, -503, -503, -503, -503, -503,
  3195. -503, -158, -503, -503, -503, -503, -503, -503, -503, -503,
  3196. -503, -503, -132, -503, -503, -503, -127, 239, -503, -503,
  3197. -503, -503, -503, -503, -492, -503, -503, -503, -503, -503,
  3198. -503, -503, -503, -503, -503, -130, -503, -503, -503, -126,
  3199. -503, 216, -503, -59, -503, -503, -503, -503, -503, -57,
  3200. -503, -503, -503, -503, -503, -48, -503, -503, -503, -129,
  3201. -503, -503, -503, -128, -503, 218, -503, -503, -503, -503,
  3202. -503, -503, -503, -503, -503, -503, -169, -503, -503, -503,
  3203. -161, 245, -503, -503, -66, -503, -503, -503, -503, -503,
  3204. -163, -503, -503, -503, -160, 248, -503, -503, -503, -503,
  3205. -503, -503, -503, -503, -503, -503, -503, -162, -503, -503,
  3206. -503, -154, -503, 241, -503, -503, -503, -503, -503, -503,
  3207. -503, -503, -503, -503, -503, -503, -503, -503, -503, -503,
  3208. -503, -503, -503, -503, -503, -503, -503, -503, 80, -503,
  3209. -503, -503, -503, -503, -503, -131, -503, -503, -503, -503,
  3210. -503, -503, -503, -503, -503, -503, -503, -503, -136, -503,
  3211. -503, -503, -503, -503, -503, -503, -503, 91, 219, -503,
  3212. -503, -503, -503, -503, -503, -503, -503, -503, -503, -503,
  3213. -503, -503, -503, -503, -503, -503, -503, -503, -503, -503,
  3214. -503, -503, -503, -503, -503, -503, -503, -503, -503, -503,
  3215. -503, -79, -503, -503, -503, -232, -503, -503, -245, -503,
  3216. -503, -503, -503, -503, -503, -255, -503, -503, -270, -503,
  3217. -503, -503, -503, -503
  3218. };
  3219. const short int
  3220. Dhcp6Parser::yydefgoto_[] =
  3221. {
  3222. -1, 13, 14, 15, 16, 17, 18, 19, 20, 21,
  3223. 22, 23, 24, 25, 73, 35, 36, 61, 538, 77,
  3224. 78, 37, 60, 74, 75, 520, 671, 747, 748, 114,
  3225. 39, 62, 86, 87, 88, 295, 41, 63, 115, 116,
  3226. 117, 118, 119, 120, 121, 122, 303, 43, 64, 140,
  3227. 141, 142, 326, 143, 123, 304, 124, 305, 589, 590,
  3228. 591, 693, 816, 592, 694, 593, 695, 594, 696, 595,
  3229. 225, 365, 597, 598, 599, 600, 601, 702, 602, 703,
  3230. 125, 314, 618, 619, 620, 621, 126, 316, 626, 627,
  3231. 628, 629, 127, 315, 128, 318, 633, 634, 635, 723,
  3232. 57, 71, 255, 256, 257, 377, 258, 378, 129, 319,
  3233. 642, 643, 644, 645, 646, 647, 648, 649, 130, 311,
  3234. 605, 606, 607, 707, 45, 65, 161, 162, 163, 333,
  3235. 164, 334, 165, 335, 166, 339, 167, 338, 532, 168,
  3236. 169, 131, 312, 609, 610, 611, 710, 53, 69, 226,
  3237. 227, 228, 229, 230, 231, 232, 364, 233, 368, 234,
  3238. 367, 235, 236, 369, 237, 132, 313, 613, 614, 615,
  3239. 713, 55, 70, 244, 245, 246, 247, 248, 373, 249,
  3240. 250, 251, 171, 331, 675, 676, 677, 750, 47, 66,
  3241. 179, 180, 181, 344, 182, 345, 172, 332, 679, 680,
  3242. 681, 753, 49, 67, 191, 192, 193, 348, 194, 195,
  3243. 350, 196, 197, 173, 340, 683, 684, 685, 756, 51,
  3244. 68, 207, 208, 209, 210, 356, 211, 357, 212, 358,
  3245. 213, 359, 214, 360, 215, 361, 216, 355, 174, 341,
  3246. 687, 759, 133, 317, 631, 330, 435, 436, 437, 438,
  3247. 439, 521, 134, 320, 657, 658, 659, 734, 829, 660,
  3248. 661, 735, 662, 663, 135, 136, 322, 666, 667, 668,
  3249. 741, 669, 742, 137, 323, 59, 72, 274, 275, 276,
  3250. 277, 382, 278, 383, 279, 280, 385, 281, 282, 283,
  3251. 388, 561, 284, 389, 285, 286, 287, 288, 393, 568,
  3252. 289, 394, 89, 297, 90, 298, 91, 299, 92, 296,
  3253. 573, 574, 575, 689, 839, 840, 841, 849, 850, 851,
  3254. 852, 857, 853, 855, 867, 868, 869, 876, 877, 878,
  3255. 883, 879, 880, 881
  3256. };
  3257. const unsigned short int
  3258. Dhcp6Parser::yytable_[] =
  3259. {
  3260. 85, 190, 157, 156, 177, 188, 205, 224, 240, 254,
  3261. 273, 242, 241, 243, 656, 158, 159, 170, 178, 189,
  3262. 206, 630, 160, 625, 27, 34, 28, 79, 29, 26,
  3263. 144, 218, 238, 219, 220, 239, 616, 38, 301, 252,
  3264. 253, 40, 93, 302, 650, 94, 95, 872, 217, 144,
  3265. 873, 874, 875, 582, 96, 97, 98, 99, 529, 530,
  3266. 531, 103, 96, 97, 98, 99, 100, 101, 102, 103,
  3267. 145, 218, 146, 219, 220, 103, 221, 222, 223, 147,
  3268. 148, 149, 150, 151, 152, 103, 42, 183, 184, 185,
  3269. 186, 187, 176, 153, 154, 175, 104, 105, 106, 107,
  3270. 218, 155, 176, 103, 218, 44, 84, 46, 103, 48,
  3271. 617, 108, 153, 716, 109, 50, 717, 563, 564, 565,
  3272. 566, 110, 651, 652, 653, 654, 324, 328, 52, 111,
  3273. 112, 325, 329, 113, 431, 54, 616, 623, 198, 624,
  3274. 84, 80, 199, 200, 201, 202, 203, 204, 567, 577,
  3275. 81, 82, 83, 56, 578, 579, 580, 581, 582, 583,
  3276. 584, 585, 586, 587, 58, 84, 76, 30, 31, 32,
  3277. 33, 84, 218, 342, 138, 139, 84, 346, 343, 84,
  3278. 84, 353, 347, 379, 291, 84, 354, 844, 380, 845,
  3279. 846, 719, 252, 253, 720, 84, 1, 2, 3, 4,
  3280. 5, 6, 7, 8, 9, 10, 11, 12, 290, 84,
  3281. 395, 324, 690, 84, 292, 396, 688, 691, 84, 636,
  3282. 637, 638, 639, 640, 641, 293, 328, 704, 704, 783,
  3283. 625, 692, 705, 706, 294, 721, 362, 656, 722, 85,
  3284. 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
  3285. 269, 270, 271, 272, 732, 739, 743, 395, 342, 733,
  3286. 740, 744, 745, 822, 379, 346, 353, 363, 432, 825,
  3287. 834, 835, 433, 858, 812, 813, 814, 815, 859, 157,
  3288. 156, 84, 434, 887, 177, 84, 842, 190, 888, 843,
  3289. 300, 188, 158, 159, 170, 664, 665, 870, 178, 160,
  3290. 871, 205, 397, 398, 306, 189, 826, 827, 828, 307,
  3291. 224, 541, 542, 543, 240, 206, 308, 242, 241, 243,
  3292. 559, 560, 309, 310, 321, 327, 336, 337, 349, 351,
  3293. 352, 366, 370, 273, 372, 399, 374, 371, 375, 376,
  3294. 409, 381, 384, 386, 387, 390, 391, 392, 400, 401,
  3295. 402, 403, 404, 406, 407, 408, 414, 415, 416, 417,
  3296. 410, 411, 412, 413, 418, 419, 420, 421, 422, 423,
  3297. 424, 425, 426, 428, 440, 441, 442, 429, 443, 444,
  3298. 446, 447, 445, 448, 449, 450, 452, 453, 455, 456,
  3299. 457, 458, 459, 461, 462, 463, 464, 465, 466, 467,
  3300. 469, 470, 472, 473, 474, 471, 477, 480, 481, 475,
  3301. 478, 483, 484, 501, 502, 503, 485, 486, 487, 490,
  3302. 488, 489, 491, 495, 492, 493, 494, 496, 498, 499,
  3303. 526, 572, 500, 504, 505, 506, 507, 508, 509, 510,
  3304. 511, 512, 513, 588, 588, 514, 515, 596, 596, 516,
  3305. 517, 518, 519, 522, 655, 523, 273, 527, 524, 525,
  3306. 534, 432, 528, 533, 535, 433, 28, 604, 608, 612,
  3307. 632, 672, 674, 678, 697, 434, 682, 698, 699, 700,
  3308. 701, 536, 539, 540, 708, 709, 711, 712, 811, 686,
  3309. 715, 714, 555, 725, 718, 724, 726, 727, 728, 729,
  3310. 730, 731, 736, 737, 544, 545, 546, 547, 738, 570,
  3311. 752, 751, 754, 755, 548, 757, 758, 864, 761, 760,
  3312. 763, 549, 764, 765, 550, 766, 551, 772, 562, 773,
  3313. 793, 794, 799, 552, 800, 553, 554, 802, 803, 838,
  3314. 810, 823, 824, 856, 860, 836, 862, 884, 866, 556,
  3315. 885, 886, 889, 557, 558, 569, 537, 622, 571, 746,
  3316. 427, 749, 576, 430, 774, 767, 405, 781, 768, 769,
  3317. 603, 782, 770, 785, 792, 482, 784, 776, 771, 786,
  3318. 775, 451, 778, 805, 777, 779, 780, 787, 476, 804,
  3319. 788, 454, 807, 806, 479, 789, 809, 790, 791, 795,
  3320. 796, 460, 808, 673, 468, 797, 817, 801, 798, 670,
  3321. 854, 762, 818, 863, 497, 882, 819, 893, 0, 820,
  3322. 821, 0, 0, 0, 0, 830, 0, 831, 0, 832,
  3323. 0, 0, 0, 0, 833, 0, 0, 0, 0, 837,
  3324. 0, 0, 588, 0, 157, 156, 596, 0, 224, 861,
  3325. 865, 240, 890, 0, 242, 241, 243, 158, 159, 170,
  3326. 0, 254, 0, 894, 160, 0, 891, 0, 0, 892,
  3327. 0, 0, 0, 0, 0, 0, 0, 655, 0, 0,
  3328. 0, 0, 0, 0, 0, 0, 0, 190, 177, 0,
  3329. 0, 188, 0, 0, 205, 0, 0, 0, 0, 0,
  3330. 0, 0, 178, 0, 0, 189, 0, 0, 206, 0,
  3331. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  3332. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  3333. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  3334. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  3335. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  3336. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  3337. 0, 0, 0, 0, 0, 0, 0, 0, 0, 847,
  3338. 0, 0, 0, 848, 0, 0, 0, 0, 0, 0,
  3339. 0, 0, 0, 0, 0, 0, 847, 0, 0, 0,
  3340. 848
  3341. };
  3342. const short int
  3343. Dhcp6Parser::yycheck_[] =
  3344. {
  3345. 62, 67, 65, 65, 66, 67, 68, 69, 70, 71,
  3346. 72, 70, 70, 70, 516, 65, 65, 65, 66, 67,
  3347. 68, 513, 65, 512, 5, 14, 7, 10, 9, 0,
  3348. 7, 39, 40, 41, 42, 43, 74, 7, 3, 81,
  3349. 82, 7, 11, 8, 16, 14, 15, 127, 16, 7,
  3350. 130, 131, 132, 25, 31, 32, 33, 34, 62, 63,
  3351. 64, 38, 31, 32, 33, 34, 35, 36, 37, 38,
  3352. 47, 39, 49, 41, 42, 38, 44, 45, 46, 56,
  3353. 57, 58, 59, 60, 61, 38, 7, 50, 51, 52,
  3354. 53, 54, 55, 70, 71, 48, 65, 66, 67, 68,
  3355. 39, 78, 55, 38, 39, 7, 148, 7, 38, 7,
  3356. 148, 80, 70, 3, 83, 7, 6, 120, 121, 122,
  3357. 123, 90, 94, 95, 96, 97, 3, 3, 7, 98,
  3358. 99, 8, 8, 102, 69, 7, 74, 75, 68, 77,
  3359. 148, 124, 72, 73, 74, 75, 76, 77, 151, 16,
  3360. 133, 134, 135, 7, 21, 22, 23, 24, 25, 26,
  3361. 27, 28, 29, 30, 7, 148, 148, 148, 149, 150,
  3362. 151, 148, 39, 3, 12, 13, 148, 3, 8, 148,
  3363. 148, 3, 8, 3, 3, 148, 8, 126, 8, 128,
  3364. 129, 3, 81, 82, 6, 148, 136, 137, 138, 139,
  3365. 140, 141, 142, 143, 144, 145, 146, 147, 6, 148,
  3366. 3, 3, 3, 148, 4, 8, 8, 8, 148, 84,
  3367. 85, 86, 87, 88, 89, 8, 3, 3, 3, 721,
  3368. 719, 8, 8, 8, 3, 3, 8, 739, 6, 301,
  3369. 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
  3370. 113, 114, 115, 116, 3, 3, 3, 3, 3, 8,
  3371. 8, 8, 8, 8, 3, 3, 3, 3, 330, 8,
  3372. 8, 8, 330, 3, 17, 18, 19, 20, 8, 342,
  3373. 342, 148, 330, 3, 346, 148, 3, 353, 8, 6,
  3374. 4, 353, 342, 342, 342, 100, 101, 3, 346, 342,
  3375. 6, 363, 291, 292, 4, 353, 91, 92, 93, 4,
  3376. 372, 461, 462, 463, 376, 363, 4, 376, 376, 376,
  3377. 117, 118, 4, 4, 4, 4, 4, 4, 4, 4,
  3378. 4, 4, 4, 395, 3, 148, 4, 8, 8, 3,
  3379. 149, 4, 4, 4, 4, 4, 4, 4, 4, 4,
  3380. 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
  3381. 149, 149, 149, 149, 4, 4, 4, 4, 4, 4,
  3382. 149, 4, 4, 4, 4, 4, 4, 151, 4, 4,
  3383. 151, 4, 149, 4, 4, 4, 4, 4, 4, 149,
  3384. 4, 149, 149, 4, 4, 4, 4, 4, 4, 4,
  3385. 4, 4, 4, 4, 4, 149, 4, 4, 4, 151,
  3386. 151, 151, 4, 402, 403, 404, 4, 149, 4, 4,
  3387. 149, 149, 4, 4, 151, 151, 151, 4, 4, 7,
  3388. 148, 125, 7, 7, 7, 7, 5, 5, 5, 5,
  3389. 5, 5, 5, 505, 506, 5, 7, 505, 506, 7,
  3390. 7, 7, 5, 8, 516, 3, 518, 148, 5, 5,
  3391. 5, 523, 148, 148, 7, 523, 7, 7, 7, 7,
  3392. 7, 4, 7, 7, 4, 523, 7, 4, 4, 4,
  3393. 4, 148, 148, 148, 6, 3, 6, 3, 5, 79,
  3394. 3, 6, 481, 3, 6, 6, 4, 4, 4, 4,
  3395. 4, 4, 4, 4, 148, 148, 148, 148, 4, 498,
  3396. 3, 6, 6, 3, 148, 6, 3, 5, 4, 8,
  3397. 4, 148, 4, 4, 148, 4, 148, 4, 119, 4,
  3398. 4, 4, 4, 148, 4, 148, 148, 6, 3, 7,
  3399. 4, 8, 8, 4, 4, 8, 4, 4, 7, 148,
  3400. 4, 4, 4, 148, 148, 148, 453, 511, 499, 148,
  3401. 324, 148, 504, 328, 704, 149, 301, 716, 151, 149,
  3402. 506, 719, 151, 725, 732, 379, 723, 709, 149, 149,
  3403. 707, 342, 712, 752, 710, 713, 715, 149, 372, 750,
  3404. 149, 346, 755, 753, 376, 149, 758, 149, 149, 149,
  3405. 149, 353, 756, 523, 363, 149, 148, 743, 739, 518,
  3406. 842, 690, 148, 858, 395, 870, 148, 887, -1, 148,
  3407. 148, -1, -1, -1, -1, 148, -1, 148, -1, 148,
  3408. -1, -1, -1, -1, 148, -1, -1, -1, -1, 148,
  3409. -1, -1, 704, -1, 707, 707, 704, -1, 710, 149,
  3410. 148, 713, 151, -1, 713, 713, 713, 707, 707, 707,
  3411. -1, 723, -1, 148, 707, -1, 149, -1, -1, 149,
  3412. -1, -1, -1, -1, -1, -1, -1, 739, -1, -1,
  3413. -1, -1, -1, -1, -1, -1, -1, 753, 750, -1,
  3414. -1, 753, -1, -1, 756, -1, -1, -1, -1, -1,
  3415. -1, -1, 750, -1, -1, 753, -1, -1, 756, -1,
  3416. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  3417. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  3418. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  3419. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  3420. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  3421. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  3422. -1, -1, -1, -1, -1, -1, -1, -1, -1, 841,
  3423. -1, -1, -1, 841, -1, -1, -1, -1, -1, -1,
  3424. -1, -1, -1, -1, -1, -1, 858, -1, -1, -1,
  3425. 858
  3426. };
  3427. const unsigned short int
  3428. Dhcp6Parser::yystos_[] =
  3429. {
  3430. 0, 136, 137, 138, 139, 140, 141, 142, 143, 144,
  3431. 145, 146, 147, 153, 154, 155, 156, 157, 158, 159,
  3432. 160, 161, 162, 163, 164, 165, 0, 5, 7, 9,
  3433. 148, 149, 150, 151, 166, 167, 168, 173, 7, 182,
  3434. 7, 188, 7, 199, 7, 276, 7, 340, 7, 354,
  3435. 7, 371, 7, 299, 7, 323, 7, 252, 7, 427,
  3436. 174, 169, 183, 189, 200, 277, 341, 355, 372, 300,
  3437. 324, 253, 428, 166, 175, 176, 148, 171, 172, 10,
  3438. 124, 133, 134, 135, 148, 181, 184, 185, 186, 454,
  3439. 456, 458, 460, 11, 14, 15, 31, 32, 33, 34,
  3440. 35, 36, 37, 38, 65, 66, 67, 68, 80, 83,
  3441. 90, 98, 99, 102, 181, 190, 191, 192, 193, 194,
  3442. 195, 196, 197, 206, 208, 232, 238, 244, 246, 260,
  3443. 270, 293, 317, 394, 404, 416, 417, 425, 12, 13,
  3444. 201, 202, 203, 205, 7, 47, 49, 56, 57, 58,
  3445. 59, 60, 61, 70, 71, 78, 181, 192, 193, 194,
  3446. 195, 278, 279, 280, 282, 284, 286, 288, 291, 292,
  3447. 317, 334, 348, 365, 390, 48, 55, 181, 317, 342,
  3448. 343, 344, 346, 50, 51, 52, 53, 54, 181, 317,
  3449. 346, 356, 357, 358, 360, 361, 363, 364, 68, 72,
  3450. 73, 74, 75, 76, 77, 181, 317, 373, 374, 375,
  3451. 376, 378, 380, 382, 384, 386, 388, 16, 39, 41,
  3452. 42, 44, 45, 46, 181, 222, 301, 302, 303, 304,
  3453. 305, 306, 307, 309, 311, 313, 314, 316, 40, 43,
  3454. 181, 222, 305, 311, 325, 326, 327, 328, 329, 331,
  3455. 332, 333, 81, 82, 181, 254, 255, 256, 258, 103,
  3456. 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
  3457. 114, 115, 116, 181, 429, 430, 431, 432, 434, 436,
  3458. 437, 439, 440, 441, 444, 446, 447, 448, 449, 452,
  3459. 6, 3, 4, 8, 3, 187, 461, 455, 457, 459,
  3460. 4, 3, 8, 198, 207, 209, 4, 4, 4, 4,
  3461. 4, 271, 294, 318, 233, 245, 239, 395, 247, 261,
  3462. 405, 4, 418, 426, 3, 8, 204, 4, 3, 8,
  3463. 397, 335, 349, 281, 283, 285, 4, 4, 289, 287,
  3464. 366, 391, 3, 8, 345, 347, 3, 8, 359, 4,
  3465. 362, 4, 4, 3, 8, 389, 377, 379, 381, 383,
  3466. 385, 387, 8, 3, 308, 223, 4, 312, 310, 315,
  3467. 4, 8, 3, 330, 4, 8, 3, 257, 259, 3,
  3468. 8, 4, 433, 435, 4, 438, 4, 4, 442, 445,
  3469. 4, 4, 4, 450, 453, 3, 8, 166, 166, 148,
  3470. 4, 4, 4, 4, 4, 185, 4, 4, 4, 149,
  3471. 149, 149, 149, 149, 4, 4, 4, 4, 4, 4,
  3472. 4, 4, 4, 4, 149, 4, 4, 191, 4, 151,
  3473. 202, 69, 181, 222, 317, 398, 399, 400, 401, 402,
  3474. 4, 4, 4, 4, 4, 149, 151, 4, 4, 4,
  3475. 4, 279, 4, 4, 343, 4, 149, 4, 149, 149,
  3476. 357, 4, 4, 4, 4, 4, 4, 4, 375, 4,
  3477. 4, 149, 4, 4, 4, 151, 303, 4, 151, 327,
  3478. 4, 4, 255, 151, 4, 4, 149, 4, 149, 149,
  3479. 4, 4, 151, 151, 151, 4, 4, 430, 4, 7,
  3480. 7, 166, 166, 166, 7, 7, 7, 5, 5, 5,
  3481. 5, 5, 5, 5, 5, 7, 7, 7, 7, 5,
  3482. 177, 403, 8, 3, 5, 5, 148, 148, 148, 62,
  3483. 63, 64, 290, 148, 5, 7, 148, 168, 170, 148,
  3484. 148, 177, 177, 177, 148, 148, 148, 148, 148, 148,
  3485. 148, 148, 148, 148, 148, 166, 148, 148, 148, 117,
  3486. 118, 443, 119, 120, 121, 122, 123, 151, 451, 148,
  3487. 166, 190, 125, 462, 463, 464, 201, 16, 21, 22,
  3488. 23, 24, 25, 26, 27, 28, 29, 30, 181, 210,
  3489. 211, 212, 215, 217, 219, 221, 222, 224, 225, 226,
  3490. 227, 228, 230, 210, 7, 272, 273, 274, 7, 295,
  3491. 296, 297, 7, 319, 320, 321, 74, 148, 234, 235,
  3492. 236, 237, 175, 75, 77, 236, 240, 241, 242, 243,
  3493. 286, 396, 7, 248, 249, 250, 84, 85, 86, 87,
  3494. 88, 89, 262, 263, 264, 265, 266, 267, 268, 269,
  3495. 16, 94, 95, 96, 97, 181, 224, 406, 407, 408,
  3496. 411, 412, 414, 415, 100, 101, 419, 420, 421, 423,
  3497. 429, 178, 4, 400, 7, 336, 337, 338, 7, 350,
  3498. 351, 352, 7, 367, 368, 369, 79, 392, 8, 465,
  3499. 3, 8, 8, 213, 216, 218, 220, 4, 4, 4,
  3500. 4, 4, 229, 231, 3, 8, 8, 275, 6, 3,
  3501. 298, 6, 3, 322, 6, 3, 3, 6, 6, 3,
  3502. 6, 3, 6, 251, 6, 3, 4, 4, 4, 4,
  3503. 4, 4, 3, 8, 409, 413, 4, 4, 4, 3,
  3504. 8, 422, 424, 3, 8, 8, 148, 179, 180, 148,
  3505. 339, 6, 3, 353, 6, 3, 370, 6, 3, 393,
  3506. 8, 4, 463, 4, 4, 4, 4, 149, 151, 149,
  3507. 151, 149, 4, 4, 211, 278, 274, 301, 297, 325,
  3508. 321, 235, 241, 286, 254, 250, 149, 149, 149, 149,
  3509. 149, 149, 263, 4, 4, 149, 149, 149, 407, 4,
  3510. 4, 420, 6, 3, 342, 338, 356, 352, 373, 369,
  3511. 4, 5, 17, 18, 19, 20, 214, 148, 148, 148,
  3512. 148, 148, 8, 8, 8, 8, 91, 92, 93, 410,
  3513. 148, 148, 148, 148, 8, 8, 8, 148, 7, 466,
  3514. 467, 468, 3, 6, 126, 128, 129, 181, 222, 469,
  3515. 470, 471, 472, 474, 467, 475, 4, 473, 3, 8,
  3516. 4, 149, 4, 470, 5, 148, 7, 476, 477, 478,
  3517. 3, 6, 127, 130, 131, 132, 479, 480, 481, 483,
  3518. 484, 485, 477, 482, 4, 4, 4, 3, 8, 4,
  3519. 151, 149, 149, 480, 148
  3520. };
  3521. const unsigned short int
  3522. Dhcp6Parser::yyr1_[] =
  3523. {
  3524. 0, 152, 154, 153, 155, 153, 156, 153, 157, 153,
  3525. 158, 153, 159, 153, 160, 153, 161, 153, 162, 153,
  3526. 163, 153, 164, 153, 165, 153, 166, 166, 166, 166,
  3527. 166, 166, 166, 167, 169, 168, 170, 171, 171, 172,
  3528. 172, 174, 173, 175, 175, 176, 176, 178, 177, 179,
  3529. 179, 180, 180, 181, 183, 182, 184, 184, 185, 185,
  3530. 185, 185, 185, 185, 187, 186, 189, 188, 190, 190,
  3531. 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
  3532. 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
  3533. 191, 191, 192, 193, 194, 195, 196, 198, 197, 200,
  3534. 199, 201, 201, 202, 202, 204, 203, 205, 207, 206,
  3535. 209, 208, 210, 210, 211, 211, 211, 211, 211, 211,
  3536. 211, 211, 211, 211, 211, 211, 211, 213, 212, 214,
  3537. 214, 214, 214, 216, 215, 218, 217, 220, 219, 221,
  3538. 223, 222, 224, 225, 226, 227, 229, 228, 231, 230,
  3539. 233, 232, 234, 234, 235, 235, 236, 237, 239, 238,
  3540. 240, 240, 241, 241, 241, 242, 243, 245, 244, 247,
  3541. 246, 248, 248, 249, 249, 251, 250, 253, 252, 254,
  3542. 254, 254, 255, 255, 257, 256, 259, 258, 261, 260,
  3543. 262, 262, 263, 263, 263, 263, 263, 263, 264, 265,
  3544. 266, 267, 268, 269, 271, 270, 272, 272, 273, 273,
  3545. 275, 274, 277, 276, 278, 278, 279, 279, 279, 279,
  3546. 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
  3547. 279, 279, 279, 281, 280, 283, 282, 285, 284, 287,
  3548. 286, 289, 288, 290, 290, 290, 291, 292, 294, 293,
  3549. 295, 295, 296, 296, 298, 297, 300, 299, 301, 301,
  3550. 302, 302, 303, 303, 303, 303, 303, 303, 303, 303,
  3551. 304, 305, 306, 308, 307, 310, 309, 312, 311, 313,
  3552. 315, 314, 316, 318, 317, 319, 319, 320, 320, 322,
  3553. 321, 324, 323, 325, 325, 326, 326, 327, 327, 327,
  3554. 327, 327, 327, 328, 330, 329, 331, 332, 333, 335,
  3555. 334, 336, 336, 337, 337, 339, 338, 341, 340, 342,
  3556. 342, 343, 343, 343, 343, 345, 344, 347, 346, 349,
  3557. 348, 350, 350, 351, 351, 353, 352, 355, 354, 356,
  3558. 356, 357, 357, 357, 357, 357, 357, 357, 357, 359,
  3559. 358, 360, 362, 361, 363, 364, 366, 365, 367, 367,
  3560. 368, 368, 370, 369, 372, 371, 373, 373, 374, 374,
  3561. 375, 375, 375, 375, 375, 375, 375, 375, 375, 377,
  3562. 376, 379, 378, 381, 380, 383, 382, 385, 384, 387,
  3563. 386, 389, 388, 391, 390, 393, 392, 395, 394, 396,
  3564. 396, 397, 286, 398, 398, 399, 399, 400, 400, 400,
  3565. 400, 401, 403, 402, 405, 404, 406, 406, 407, 407,
  3566. 407, 407, 407, 407, 407, 409, 408, 410, 410, 410,
  3567. 411, 413, 412, 414, 415, 416, 418, 417, 419, 419,
  3568. 420, 420, 422, 421, 424, 423, 426, 425, 428, 427,
  3569. 429, 429, 430, 430, 430, 430, 430, 430, 430, 430,
  3570. 430, 430, 430, 430, 430, 430, 430, 431, 433, 432,
  3571. 435, 434, 436, 438, 437, 439, 440, 442, 441, 443,
  3572. 443, 445, 444, 446, 447, 448, 450, 449, 451, 451,
  3573. 451, 451, 451, 453, 452, 455, 454, 457, 456, 459,
  3574. 458, 461, 460, 462, 462, 463, 465, 464, 466, 466,
  3575. 468, 467, 469, 469, 470, 470, 470, 470, 470, 471,
  3576. 473, 472, 475, 474, 476, 476, 478, 477, 479, 479,
  3577. 480, 480, 480, 480, 482, 481, 483, 484, 485
  3578. };
  3579. const unsigned char
  3580. Dhcp6Parser::yyr2_[] =
  3581. {
  3582. 0, 2, 0, 3, 0, 3, 0, 3, 0, 3,
  3583. 0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
  3584. 0, 3, 0, 3, 0, 3, 1, 1, 1, 1,
  3585. 1, 1, 1, 1, 0, 4, 1, 0, 1, 3,
  3586. 5, 0, 4, 0, 1, 1, 3, 0, 4, 0,
  3587. 1, 1, 3, 2, 0, 4, 1, 3, 1, 1,
  3588. 1, 1, 1, 1, 0, 6, 0, 4, 1, 3,
  3589. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  3590. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  3591. 1, 1, 3, 3, 3, 3, 3, 0, 6, 0,
  3592. 4, 1, 3, 1, 1, 0, 4, 3, 0, 6,
  3593. 0, 6, 1, 3, 1, 1, 1, 1, 1, 1,
  3594. 1, 1, 1, 1, 1, 1, 1, 0, 4, 1,
  3595. 1, 1, 1, 0, 4, 0, 4, 0, 4, 3,
  3596. 0, 4, 3, 3, 3, 3, 0, 4, 0, 4,
  3597. 0, 6, 1, 3, 1, 1, 1, 1, 0, 6,
  3598. 1, 3, 1, 1, 1, 1, 1, 0, 6, 0,
  3599. 6, 0, 1, 1, 3, 0, 4, 0, 4, 1,
  3600. 3, 1, 1, 1, 0, 4, 0, 4, 0, 6,
  3601. 1, 3, 1, 1, 1, 1, 1, 1, 3, 3,
  3602. 3, 3, 3, 3, 0, 6, 0, 1, 1, 3,
  3603. 0, 4, 0, 4, 1, 3, 1, 1, 1, 1,
  3604. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  3605. 1, 1, 1, 0, 4, 0, 4, 0, 4, 0,
  3606. 4, 0, 4, 1, 1, 1, 3, 3, 0, 6,
  3607. 0, 1, 1, 3, 0, 4, 0, 4, 0, 1,
  3608. 1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
  3609. 1, 3, 1, 0, 4, 0, 4, 0, 4, 1,
  3610. 0, 4, 3, 0, 6, 0, 1, 1, 3, 0,
  3611. 4, 0, 4, 0, 1, 1, 3, 1, 1, 1,
  3612. 1, 1, 1, 1, 0, 4, 1, 1, 3, 0,
  3613. 6, 0, 1, 1, 3, 0, 4, 0, 4, 1,
  3614. 3, 1, 1, 1, 1, 0, 4, 0, 4, 0,
  3615. 6, 0, 1, 1, 3, 0, 4, 0, 4, 1,
  3616. 3, 1, 1, 1, 1, 1, 1, 1, 1, 0,
  3617. 4, 3, 0, 4, 3, 3, 0, 6, 0, 1,
  3618. 1, 3, 0, 4, 0, 4, 0, 1, 1, 3,
  3619. 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
  3620. 4, 0, 4, 0, 4, 0, 4, 0, 4, 0,
  3621. 4, 0, 4, 0, 6, 0, 4, 0, 6, 1,
  3622. 3, 0, 4, 0, 1, 1, 3, 1, 1, 1,
  3623. 1, 1, 0, 4, 0, 6, 1, 3, 1, 1,
  3624. 1, 1, 1, 1, 1, 0, 4, 1, 1, 1,
  3625. 3, 0, 4, 3, 3, 3, 0, 6, 1, 3,
  3626. 1, 1, 0, 4, 0, 4, 0, 6, 0, 4,
  3627. 1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
  3628. 1, 1, 1, 1, 1, 1, 1, 3, 0, 4,
  3629. 0, 4, 3, 0, 4, 3, 3, 0, 4, 1,
  3630. 1, 0, 4, 3, 3, 3, 0, 4, 1, 1,
  3631. 1, 1, 1, 0, 4, 0, 4, 0, 4, 0,
  3632. 4, 0, 6, 1, 3, 1, 0, 6, 1, 3,
  3633. 0, 4, 1, 3, 1, 1, 1, 1, 1, 3,
  3634. 0, 4, 0, 6, 1, 3, 0, 4, 1, 3,
  3635. 1, 1, 1, 1, 0, 4, 3, 3, 3
  3636. };
  3637. // YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
  3638. // First, the terminals, then, starting at \a yyntokens_, nonterminals.
  3639. const char*
  3640. const Dhcp6Parser::yytname_[] =
  3641. {
  3642. "\"end of file\"", "error", "$undefined", "\",\"", "\":\"", "\"[\"",
  3643. "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Dhcp6\"",
  3644. "\"interfaces-config\"", "\"interfaces\"", "\"re-detect\"",
  3645. "\"lease-database\"", "\"hosts-database\"", "\"type\"", "\"memfile\"",
  3646. "\"mysql\"", "\"postgresql\"", "\"cql\"", "\"user\"", "\"password\"",
  3647. "\"host\"", "\"port\"", "\"persist\"", "\"lfc-interval\"",
  3648. "\"readonly\"", "\"connect-timeout\"", "\"contact-points\"",
  3649. "\"keyspace\"", "\"preferred-lifetime\"", "\"valid-lifetime\"",
  3650. "\"renew-timer\"", "\"rebind-timer\"", "\"decline-probation-period\"",
  3651. "\"subnet6\"", "\"option-def\"", "\"option-data\"", "\"name\"",
  3652. "\"data\"", "\"code\"", "\"space\"", "\"csv-format\"",
  3653. "\"record-types\"", "\"encapsulate\"", "\"array\"", "\"pools\"",
  3654. "\"pool\"", "\"pd-pools\"", "\"prefix\"", "\"prefix-len\"",
  3655. "\"excluded-prefix\"", "\"excluded-prefix-len\"", "\"delegated-len\"",
  3656. "\"user-context\"", "\"subnet\"", "\"interface\"", "\"interface-id\"",
  3657. "\"id\"", "\"rapid-commit\"", "\"reservation-mode\"", "\"disabled\"",
  3658. "\"out-of-pool\"", "\"all\"", "\"mac-sources\"",
  3659. "\"relay-supplied-options\"", "\"host-reservation-identifiers\"",
  3660. "\"client-classes\"", "\"test\"", "\"client-class\"", "\"reservations\"",
  3661. "\"ip-addresses\"", "\"prefixes\"", "\"duid\"", "\"hw-address\"",
  3662. "\"hostname\"", "\"flex-id\"", "\"relay\"", "\"ip-address\"",
  3663. "\"hooks-libraries\"", "\"library\"", "\"parameters\"",
  3664. "\"expired-leases-processing\"", "\"reclaim-timer-wait-time\"",
  3665. "\"flush-reclaimed-timer-wait-time\"", "\"hold-reclaimed-time\"",
  3666. "\"max-reclaim-leases\"", "\"max-reclaim-time\"",
  3667. "\"unwarned-reclaim-cycles\"", "\"server-id\"", "\"LLT\"", "\"EN\"",
  3668. "\"LL\"", "\"identifier\"", "\"htype\"", "\"time\"", "\"enterprise-id\"",
  3669. "\"dhcp4o6-port\"", "\"control-socket\"", "\"socket-type\"",
  3670. "\"socket-name\"", "\"dhcp-ddns\"", "\"enable-updates\"",
  3671. "\"qualifying-suffix\"", "\"server-ip\"", "\"server-port\"",
  3672. "\"sender-ip\"", "\"sender-port\"", "\"max-queue-size\"",
  3673. "\"ncr-protocol\"", "\"ncr-format\"", "\"always-include-fqdn\"",
  3674. "\"override-no-update\"", "\"override-client-update\"",
  3675. "\"replace-client-name\"", "\"generated-prefix\"", "\"UDP\"", "\"TCP\"",
  3676. "\"JSON\"", "\"when-present\"", "\"never\"", "\"always\"",
  3677. "\"when-not-present\"", "\"Logging\"", "\"loggers\"",
  3678. "\"output_options\"", "\"output\"", "\"debuglevel\"", "\"severity\"",
  3679. "\"flush\"", "\"maxsize\"", "\"maxver\"", "\"Dhcp4\"", "\"DhcpDdns\"",
  3680. "\"Control-agent\"", "TOPLEVEL_JSON", "TOPLEVEL_DHCP6", "SUB_DHCP6",
  3681. "SUB_INTERFACES6", "SUB_SUBNET6", "SUB_POOL6", "SUB_PD_POOL",
  3682. "SUB_RESERVATION", "SUB_OPTION_DEF", "SUB_OPTION_DATA",
  3683. "SUB_HOOKS_LIBRARY", "SUB_DHCP_DDNS", "\"constant string\"",
  3684. "\"integer\"", "\"floating point\"", "\"boolean\"", "$accept", "start",
  3685. "$@1", "$@2", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10",
  3686. "$@11", "$@12", "value", "sub_json", "map2", "$@13", "map_value",
  3687. "map_content", "not_empty_map", "list_generic", "$@14", "list_content",
  3688. "not_empty_list", "list_strings", "$@15", "list_strings_content",
  3689. "not_empty_list_strings", "unknown_map_entry", "syntax_map", "$@16",
  3690. "global_objects", "global_object", "dhcp6_object", "$@17", "sub_dhcp6",
  3691. "$@18", "global_params", "global_param", "preferred_lifetime",
  3692. "valid_lifetime", "renew_timer", "rebind_timer",
  3693. "decline_probation_period", "interfaces_config", "$@19",
  3694. "sub_interfaces6", "$@20", "interfaces_config_params",
  3695. "interfaces_config_param", "interfaces_list", "$@21", "re_detect",
  3696. "lease_database", "$@22", "hosts_database", "$@23",
  3697. "database_map_params", "database_map_param", "database_type", "$@24",
  3698. "db_type", "user", "$@25", "password", "$@26", "host", "$@27", "port",
  3699. "name", "$@28", "persist", "lfc_interval", "readonly", "connect_timeout",
  3700. "contact_points", "$@29", "keyspace", "$@30", "mac_sources", "$@31",
  3701. "mac_sources_list", "mac_sources_value", "duid_id", "string_id",
  3702. "host_reservation_identifiers", "$@32",
  3703. "host_reservation_identifiers_list", "host_reservation_identifier",
  3704. "hw_address_id", "flex_id", "relay_supplied_options", "$@33",
  3705. "hooks_libraries", "$@34", "hooks_libraries_list",
  3706. "not_empty_hooks_libraries_list", "hooks_library", "$@35",
  3707. "sub_hooks_library", "$@36", "hooks_params", "hooks_param", "library",
  3708. "$@37", "parameters", "$@38", "expired_leases_processing", "$@39",
  3709. "expired_leases_params", "expired_leases_param",
  3710. "reclaim_timer_wait_time", "flush_reclaimed_timer_wait_time",
  3711. "hold_reclaimed_time", "max_reclaim_leases", "max_reclaim_time",
  3712. "unwarned_reclaim_cycles", "subnet6_list", "$@40",
  3713. "subnet6_list_content", "not_empty_subnet6_list", "subnet6", "$@41",
  3714. "sub_subnet6", "$@42", "subnet6_params", "subnet6_param", "subnet",
  3715. "$@43", "interface", "$@44", "interface_id", "$@45", "client_class",
  3716. "$@46", "reservation_mode", "$@47", "hr_mode", "id", "rapid_commit",
  3717. "option_def_list", "$@48", "option_def_list_content",
  3718. "not_empty_option_def_list", "option_def_entry", "$@49",
  3719. "sub_option_def", "$@50", "option_def_params",
  3720. "not_empty_option_def_params", "option_def_param", "option_def_name",
  3721. "code", "option_def_code", "option_def_type", "$@51",
  3722. "option_def_record_types", "$@52", "space", "$@53", "option_def_space",
  3723. "option_def_encapsulate", "$@54", "option_def_array", "option_data_list",
  3724. "$@55", "option_data_list_content", "not_empty_option_data_list",
  3725. "option_data_entry", "$@56", "sub_option_data", "$@57",
  3726. "option_data_params", "not_empty_option_data_params",
  3727. "option_data_param", "option_data_name", "option_data_data", "$@58",
  3728. "option_data_code", "option_data_space", "option_data_csv_format",
  3729. "pools_list", "$@59", "pools_list_content", "not_empty_pools_list",
  3730. "pool_list_entry", "$@60", "sub_pool6", "$@61", "pool_params",
  3731. "pool_param", "pool_entry", "$@62", "user_context", "$@63",
  3732. "pd_pools_list", "$@64", "pd_pools_list_content",
  3733. "not_empty_pd_pools_list", "pd_pool_entry", "$@65", "sub_pd_pool",
  3734. "$@66", "pd_pool_params", "pd_pool_param", "pd_prefix", "$@67",
  3735. "pd_prefix_len", "excluded_prefix", "$@68", "excluded_prefix_len",
  3736. "pd_delegated_len", "reservations", "$@69", "reservations_list",
  3737. "not_empty_reservations_list", "reservation", "$@70", "sub_reservation",
  3738. "$@71", "reservation_params", "not_empty_reservation_params",
  3739. "reservation_param", "ip_addresses", "$@72", "prefixes", "$@73", "duid",
  3740. "$@74", "hw_address", "$@75", "hostname", "$@76", "flex_id_value",
  3741. "$@77", "reservation_client_classes", "$@78", "relay", "$@79",
  3742. "relay_map", "$@80", "client_classes", "$@81", "client_classes_list",
  3743. "$@82", "client_class_params", "not_empty_client_class_params",
  3744. "client_class_param", "client_class_name", "client_class_test", "$@83",
  3745. "server_id", "$@84", "server_id_params", "server_id_param",
  3746. "server_id_type", "$@85", "duid_type", "htype", "identifier", "$@86",
  3747. "time", "enterprise_id", "dhcp4o6_port", "control_socket", "$@87",
  3748. "control_socket_params", "control_socket_param", "socket_type", "$@88",
  3749. "socket_name", "$@89", "dhcp_ddns", "$@90", "sub_dhcp_ddns", "$@91",
  3750. "dhcp_ddns_params", "dhcp_ddns_param", "enable_updates",
  3751. "qualifying_suffix", "$@92", "server_ip", "$@93", "server_port",
  3752. "sender_ip", "$@94", "sender_port", "max_queue_size", "ncr_protocol",
  3753. "$@95", "ncr_protocol_value", "ncr_format", "$@96",
  3754. "always_include_fqdn", "override_no_update", "override_client_update",
  3755. "replace_client_name", "$@97", "replace_client_name_value",
  3756. "generated_prefix", "$@98", "dhcp4_json_object", "$@99",
  3757. "dhcpddns_json_object", "$@100", "control_agent_json_object", "$@101",
  3758. "logging_object", "$@102", "logging_params", "logging_param", "loggers",
  3759. "$@103", "loggers_entries", "logger_entry", "$@104", "logger_params",
  3760. "logger_param", "debuglevel", "severity", "$@105", "output_options_list",
  3761. "$@106", "output_options_list_content", "output_entry", "$@107",
  3762. "output_params_list", "output_params", "output", "$@108", "flush",
  3763. "maxsize", "maxver", YY_NULLPTR
  3764. };
  3765. #if PARSER6_DEBUG
  3766. const unsigned short int
  3767. Dhcp6Parser::yyrline_[] =
  3768. {
  3769. 0, 233, 233, 233, 234, 234, 235, 235, 236, 236,
  3770. 237, 237, 238, 238, 239, 239, 240, 240, 241, 241,
  3771. 242, 242, 243, 243, 244, 244, 252, 253, 254, 255,
  3772. 256, 257, 258, 261, 266, 266, 277, 280, 281, 284,
  3773. 288, 295, 295, 302, 303, 306, 310, 317, 317, 324,
  3774. 325, 328, 332, 343, 353, 353, 365, 366, 370, 371,
  3775. 372, 373, 374, 375, 378, 378, 395, 395, 403, 404,
  3776. 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
  3777. 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
  3778. 429, 430, 433, 438, 443, 448, 453, 458, 458, 468,
  3779. 468, 476, 477, 480, 481, 484, 484, 494, 500, 500,
  3780. 510, 510, 520, 521, 524, 525, 526, 527, 528, 529,
  3781. 530, 531, 532, 533, 534, 535, 536, 539, 539, 546,
  3782. 547, 548, 549, 552, 552, 560, 560, 568, 568, 576,
  3783. 581, 581, 589, 594, 599, 604, 609, 609, 617, 617,
  3784. 626, 626, 636, 637, 640, 641, 644, 649, 654, 654,
  3785. 664, 665, 668, 669, 670, 673, 678, 685, 685, 695,
  3786. 695, 705, 706, 709, 710, 713, 713, 721, 721, 729,
  3787. 730, 731, 734, 735, 738, 738, 746, 746, 754, 754,
  3788. 764, 765, 768, 769, 770, 771, 772, 773, 776, 781,
  3789. 786, 791, 796, 801, 809, 809, 822, 823, 826, 827,
  3790. 834, 834, 857, 857, 866, 867, 871, 872, 873, 874,
  3791. 875, 876, 877, 878, 879, 880, 881, 882, 883, 884,
  3792. 885, 886, 887, 890, 890, 898, 898, 906, 906, 914,
  3793. 914, 922, 922, 929, 930, 931, 934, 939, 948, 948,
  3794. 960, 961, 964, 965, 970, 970, 981, 981, 991, 992,
  3795. 995, 996, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006,
  3796. 1009, 1011, 1016, 1018, 1018, 1026, 1026, 1034, 1034, 1042,
  3797. 1044, 1044, 1052, 1061, 1061, 1073, 1074, 1079, 1080, 1085,
  3798. 1085, 1096, 1096, 1107, 1108, 1113, 1114, 1119, 1120, 1121,
  3799. 1122, 1123, 1124, 1127, 1129, 1129, 1137, 1139, 1141, 1149,
  3800. 1149, 1161, 1162, 1165, 1166, 1169, 1169, 1177, 1177, 1185,
  3801. 1186, 1189, 1190, 1191, 1192, 1195, 1195, 1203, 1203, 1213,
  3802. 1213, 1225, 1226, 1229, 1230, 1233, 1233, 1241, 1241, 1249,
  3803. 1250, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1263,
  3804. 1263, 1271, 1276, 1276, 1284, 1289, 1297, 1297, 1307, 1308,
  3805. 1311, 1312, 1315, 1315, 1323, 1323, 1331, 1332, 1335, 1336,
  3806. 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1351,
  3807. 1351, 1361, 1361, 1371, 1371, 1379, 1379, 1387, 1387, 1395,
  3808. 1395, 1403, 1403, 1416, 1416, 1426, 1426, 1437, 1437, 1447,
  3809. 1448, 1451, 1451, 1459, 1460, 1463, 1464, 1467, 1468, 1469,
  3810. 1470, 1473, 1475, 1475, 1486, 1486, 1496, 1497, 1500, 1501,
  3811. 1502, 1503, 1504, 1505, 1506, 1509, 1509, 1516, 1517, 1518,
  3812. 1521, 1526, 1526, 1534, 1539, 1546, 1553, 1553, 1563, 1564,
  3813. 1567, 1568, 1571, 1571, 1579, 1579, 1589, 1589, 1599, 1599,
  3814. 1607, 1608, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618,
  3815. 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1628, 1633, 1633,
  3816. 1641, 1641, 1649, 1654, 1654, 1662, 1667, 1672, 1672, 1680,
  3817. 1681, 1684, 1684, 1692, 1697, 1702, 1707, 1707, 1715, 1718,
  3818. 1721, 1724, 1727, 1733, 1733, 1743, 1743, 1750, 1750, 1757,
  3819. 1757, 1770, 1770, 1783, 1784, 1788, 1792, 1792, 1804, 1805,
  3820. 1809, 1809, 1817, 1818, 1821, 1822, 1823, 1824, 1825, 1828,
  3821. 1833, 1833, 1841, 1841, 1851, 1852, 1855, 1855, 1863, 1864,
  3822. 1867, 1868, 1869, 1870, 1873, 1873, 1881, 1886, 1891
  3823. };
  3824. // Print the state stack on the debug stream.
  3825. void
  3826. Dhcp6Parser::yystack_print_ ()
  3827. {
  3828. *yycdebug_ << "Stack now";
  3829. for (stack_type::const_iterator
  3830. i = yystack_.begin (),
  3831. i_end = yystack_.end ();
  3832. i != i_end; ++i)
  3833. *yycdebug_ << ' ' << i->state;
  3834. *yycdebug_ << std::endl;
  3835. }
  3836. // Report on the debug stream that the rule \a yyrule is going to be reduced.
  3837. void
  3838. Dhcp6Parser::yy_reduce_print_ (int yyrule)
  3839. {
  3840. unsigned int yylno = yyrline_[yyrule];
  3841. int yynrhs = yyr2_[yyrule];
  3842. // Print the symbols being reduced, and their result.
  3843. *yycdebug_ << "Reducing stack by rule " << yyrule - 1
  3844. << " (line " << yylno << "):" << std::endl;
  3845. // The symbols being reduced.
  3846. for (int yyi = 0; yyi < yynrhs; yyi++)
  3847. YY_SYMBOL_PRINT (" $" << yyi + 1 << " =",
  3848. yystack_[(yynrhs) - (yyi + 1)]);
  3849. }
  3850. #endif // PARSER6_DEBUG
  3851. #line 14 "dhcp6_parser.yy" // lalr1.cc:1167
  3852. } } // isc::dhcp
  3853. #line 4313 "dhcp6_parser.cc" // lalr1.cc:1167
  3854. #line 1896 "dhcp6_parser.yy" // lalr1.cc:1168
  3855. void
  3856. isc::dhcp::Dhcp6Parser::error(const location_type& loc,
  3857. const std::string& what)
  3858. {
  3859. ctx.error(loc, what);
  3860. }