def main():
    # Construct a sample FibEntry message using the structure in fib_entry_pb2
    # which was produced by protoc.
    message = fib_entry_pb2.FibEntryMessage()
    message.fib_entry.name.component.append(b"ndn")
    message.fib_entry.name.component.append(b"ucla")
    nextHopRecord = message.fib_entry.next_hop_records.add()
    nextHopRecord.face_id = 16
    nextHopRecord.cost = 1

    # Encode the Protobuf message object as TLV.
    encoding = ProtobufTlv.encode(message)

    decodedMessage = fib_entry_pb2.FibEntryMessage()
    ProtobufTlv.decode(decodedMessage, encoding)

    dump("Re-decoded FibEntry:")
    # This should print the same values that we put in message above.
    value = ""
    value += ProtobufTlv.toName(
        decodedMessage.fib_entry.name.component).toUri()
    value += " nexthops = {"
    for next_hop_record in decodedMessage.fib_entry.next_hop_records:
        value += ("faceid=" + repr(next_hop_record.face_id) + " (cost=" +
                  repr(next_hop_record.cost) + ")")
    value += " }"
    dump(value)
Ejemplo n.º 2
0
def printFibEntries(encodedMessage):
    """
    This is called when all the segments are received to decode the
    encodedMessage as repeated TLV FibEntry messages and display the values.

    :param Blob encodedMessage: The repeated TLV-encoded FibEntry.
    """
    fibEntryMessage = fib_entry_pb2.FibEntryMessage()
    ProtobufTlv.decode(fibEntryMessage, encodedMessage)

    dump("FIB:")
    for fibEntry in fibEntryMessage.fib_entry:
        line = ""
        line += ProtobufTlv.toName(fibEntry.name.component).toUri()

        # Show the routes.
        for nexthop in fibEntry.next_hop_records:
            line += (" NextHopRecord={faceId=" + str(nexthop.face_id) +
                     " cost=" + str(nexthop.cost))
            line += ")}"

        dump(line)