[ndnSIM] adding new field to data packet

Junxiao Shi shijunxiao at email.arizona.edu
Wed Jan 1 06:28:38 PST 2020


Hi Samar

You can't add new packet fields. Instead, place the field as part of the
payload.

Example:

// sender
uint64_t myNumber = 2020;
ndn::Data data;
data.setContent(reinterpret_cast<const uint_t*>(&myNumber),
sizeof(myNumber));

// receiver
uint64_t readNumber;
auto payload = data.getContent();
if (payload.value_size() == sizeof(readNumber)) {
  std::copy(payload.value_begin(), payload.value_end(),
reinterpret_cast<uint8_t*>(&readNumber));
}

Note: sender and receiver must use same endianness. This requirement is met
in ns-3.

Yours, Junxiao

On Wed, Jan 1, 2020, 09:14 Samar Alduayji via ndnSIM <
ndnsim at lists.cs.ucla.edu> wrote:

> Dear all,
> I'm trying to add a new field( type is uint32_t) to data packet so the
> producer can set this field while creating the packet. I modified tlv,
> tags, and fields header files to include a new tag for it. I also edited
> generic-link-service.cpp file
>
> I declared the field in the producer.hpp file and in the producer.cpp file
> I added the field using .addAttribute(....), and tried to set it using
> data->setTag<fieldName>(std::make_shared<fieldName>(m_field));
> but I got an errors while compiling the OnInterest method:
> 1-that this new field was not declared in this scope.
> 2- the value is not usable in a constant expression and was not declared
> constexp.
> 3- no matching function for call to make_shared(uint32_t)
>
> Does the setTag is not applicable to be used here? Should I write specific
> set and get function in the data.cpp file? what other modifications shall I
> add to be able to set this field and use it?
>
> Your help is really appreciated
>
> Regards,
> Samar
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.lists.cs.ucla.edu/pipermail/ndnsim/attachments/20200101/b45e810c/attachment.html>


More information about the ndnSIM mailing list