in fboss/agent/state/AclEntry.cpp [229:328]
folly::dynamic AclEntryFields::toFollyDynamicLegacy() const {
folly::dynamic aclEntry = folly::dynamic::object;
if (srcIp.first) {
aclEntry[kSrcIp] = IPAddress::networkToString(srcIp);
}
if (dstIp.first) {
aclEntry[kDstIp] = IPAddress::networkToString(dstIp);
}
if (dstMac) {
aclEntry[kDstMac] = dstMac->toString();
}
if (proto) {
aclEntry[kProto] = static_cast<uint8_t>(proto.value());
}
if (tcpFlagsBitMap) {
aclEntry[kTcpFlagsBitMap] = static_cast<uint8_t>(tcpFlagsBitMap.value());
}
if (srcPort) {
aclEntry[kSrcPort] = static_cast<uint16_t>(srcPort.value());
}
if (dstPort) {
aclEntry[kDstPort] = static_cast<uint16_t>(dstPort.value());
}
if (ipFrag) {
auto ipFragName = apache::thrift::util::enumName(*ipFrag);
if (ipFragName == nullptr) {
throw FbossError("invalid ipFrag");
}
aclEntry[kIpFrag] = ipFragName;
}
if (icmpCode) {
aclEntry[kIcmpCode] = static_cast<uint8_t>(icmpCode.value());
}
if (icmpType) {
aclEntry[kIcmpType] = static_cast<uint8_t>(icmpType.value());
}
if (dscp) {
aclEntry[kDscp] = static_cast<uint8_t>(dscp.value());
}
if (ipType) {
aclEntry[kIpType] = static_cast<uint16_t>(ipType.value());
}
if (ttl) {
aclEntry[kTtl] = ttl.value().toFollyDynamic();
}
if (l4SrcPort) {
aclEntry[kL4SrcPort] = static_cast<uint16_t>(l4SrcPort.value());
}
if (l4DstPort) {
aclEntry[kL4DstPort] = static_cast<uint16_t>(l4DstPort.value());
}
if (lookupClassL2) {
auto lookupClassNameL2 = apache::thrift::util::enumName(*lookupClassL2);
if (lookupClassNameL2 == nullptr) {
throw FbossError("invalid lookupClassL2");
}
aclEntry[kLookupClassL2] = lookupClassNameL2;
}
if (lookupClass) {
auto lookupClassName = apache::thrift::util::enumName(*lookupClass);
if (lookupClassName == nullptr) {
throw FbossError("invalid lookupClass");
}
aclEntry[kLookupClass] = lookupClassName;
}
if (lookupClassNeighbor) {
auto lookupClassNameNeighbor =
apache::thrift::util::enumName(*lookupClassNeighbor);
if (lookupClassNameNeighbor == nullptr) {
throw FbossError("invalid lookupClassNeighbor");
}
aclEntry[kLookupClassNeighbor] = lookupClassNameNeighbor;
}
if (lookupClassRoute) {
auto lookupClassNameRoute =
apache::thrift::util::enumName(*lookupClassRoute);
if (lookupClassNameRoute == nullptr) {
throw FbossError("invalid lookupClassRoute");
}
aclEntry[kLookupClassRoute] = lookupClassNameRoute;
}
if (packetLookupResult) {
aclEntry[kPacketLookupResult] =
static_cast<uint32_t>(packetLookupResult.value());
}
if (vlanID) {
aclEntry[kVlanID] = static_cast<uint32_t>(vlanID.value());
}
auto actionTypeName = apache::thrift::util::enumName(actionType);
if (actionTypeName == nullptr) {
throw FbossError("invalid actionType");
}
aclEntry[kActionType] = actionTypeName;
if (aclAction) {
aclEntry[kAclAction] = aclAction.value().toFollyDynamic();
}
aclEntry[kPriority] = priority;
aclEntry[kName] = name;
return aclEntry;
}