VlanFields VlanFields::fromFollyDynamic(const folly::dynamic& vlanJson) { VlanFields vlan(VlanID(vlanJson[kVlanId].asInt()), vlanJson[kVlanName].asString().toStdString()); vlan.mtu = vlanJson[kVlanMtu].asInt(); vlan.dhcpV4Relay = folly::IPAddressV4( vlanJson[kDhcpV4Relay].stringPiece()); vlan.dhcpV6Relay = folly::IPAddressV6( vlanJson[kDhcpV6Relay].stringPiece()); for (const auto& o: vlanJson[kDhcpV4RelayOverrides].items()) { vlan.dhcpRelayOverridesV4[MacAddress(o.first.asString().toStdString())] = folly::IPAddressV4(o.second.stringPiece()); } for (const auto& o: vlanJson[kDhcpV6RelayOverrides].items()) { vlan.dhcpRelayOverridesV6[MacAddress(o.first.asString().toStdString())] = folly::IPAddressV6(o.second.stringPiece()); } for (const auto& portInfo: vlanJson[kMemberPorts].items()) { vlan.ports.emplace(PortID(to<uint16_t>(portInfo.first.asString())), PortInfo::fromFollyDynamic(portInfo.second)); } vlan.arpTable = ArpTable::fromFollyDynamic(vlanJson[kArpTable]); vlan.ndpTable = NdpTable::fromFollyDynamic(vlanJson[kNdpTable]); vlan.arpResponseTable = ArpResponseTable::fromFollyDynamic( vlanJson[kArpResponseTable]); vlan.ndpResponseTable = NdpResponseTable::fromFollyDynamic( vlanJson[kNdpResponseTable]); return vlan; }
void IOSCfgParser::cfgfile() { try { // for error handling { // ( ... )+ int _cnt3=0; for (;;) { switch ( LA(1)) { case LINE_COMMENT: { comment(); break; } case IOSVERSION: { version(); break; } case HOSTNAME: { hostname(); break; } case IP: { ip_commands(); break; } case INTRFACE: { intrface(); break; } case CONTROLLER: { controller(); break; } case VLAN: { vlan(); break; } case ACCESS_LIST: { access_list_commands(); break; } case EXIT: { exit(); break; } case DESCRIPTION: { description(); break; } case SHUTDOWN: { shutdown(); break; } case CERTIFICATE: { certificate(); break; } case QUIT: { quit(); break; } case WORD: { unknown_command(); break; } case NEWLINE: { match(NEWLINE); break; } default: { if ( _cnt3>=1 ) { goto _loop3; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());} } } _cnt3++; } _loop3:; } // ( ... )+ } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); recover(ex,_tokenSet_0); } else { throw; } } }