folly::dynamic AclEntryFields::toFollyDynamicLegacy()

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;
}