model/netlink-message-route.cc
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Mon, 18 Apr 2011 12:13:02 +0200
changeset 63 e89dca438df6
parent 0 model/netlink/netlink-message-route.cc@0a55bed4c895
permissions -rw-r--r--
more fixes
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
/*
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
 * Copyright (c) 2008 Liu Jian
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
 *
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
 *
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
 * GNU General Public License for more details.
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
 *
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
 *
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
 * Author: Liu Jian <liujatp@gmail.com>
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
 *         Hajime Tazaki <tazaki@sfc.wide.ad.jp>
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
 */
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
#include "netlink-message-route.h"
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
#include "netlink-message.h"
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
namespace ns3 {
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
/***********************************************************************************
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
* \ NetlinkPayload
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
***********************************************************************************/
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
TypeId 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
NetlinkPayload::GetTypeId (void)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    32
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    33
  static TypeId tid = TypeId ("ns3::NetlinkPayload")
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    34
    .SetParent<ObjectBase> ()
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    35
    ;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    36
  return tid;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    37
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
/***********************************************************************************
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
* \ GeneralMessage
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
***********************************************************************************/
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    44
NS_OBJECT_ENSURE_REGISTERED (GeneralMessage);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    45
NS_OBJECT_ENSURE_REGISTERED (InterfaceInfoMessage);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    46
NS_OBJECT_ENSURE_REGISTERED (InterfaceAddressMessage);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    47
NS_OBJECT_ENSURE_REGISTERED (RouteMessage);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    48
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    49
GeneralMessage::GeneralMessage ()
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    50
  : m_family(0)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    51
{}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    52
GeneralMessage::~GeneralMessage ()
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    53
{}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    54
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    55
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    56
GeneralMessage::SetFamily (uint8_t v)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    57
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    58
  m_family = v;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    59
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    60
uint8_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    61
GeneralMessage::GetFamily (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    62
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    63
  return m_family;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    64
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    65
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    66
TypeId 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    67
GeneralMessage::GetTypeId (void)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    68
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    69
  static TypeId tid = TypeId ("ns3::GeneralMessage")
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    70
    .SetParent<NetlinkPayload> ()
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    71
    .AddConstructor<GeneralMessage> ()
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    72
    ;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    73
  return tid;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    74
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    75
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    76
TypeId 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    77
GeneralMessage::GetInstanceTypeId (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    78
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    79
  return GetTypeId ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    80
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    81
void 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    82
GeneralMessage::Print (std::ostream &os) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    83
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    84
  os << " ----GeneralMessage ("
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    85
     << "family: " << (uint32_t)m_family << ")"; 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    86
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    87
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    88
uint32_t 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    89
GeneralMessage::GetSerializedSize (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    90
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    91
  /* this is the size of an nlmsghdr payload. */
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    92
  return NETLINK_MSG_ALIGN (NETLINK_GENMSG_SIZE);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    93
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    94
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    95
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    96
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    97
GeneralMessage::Serialize (Buffer::Iterator& start) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    98
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    99
  start.WriteU8 (m_family);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   100
  start.WriteU8 (0, 3);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   101
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   102
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   103
uint32_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   104
GeneralMessage::Deserialize (Buffer::Iterator& start)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   105
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   106
  uint8_t buf[3];
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   107
  m_family = start.ReadU8 ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   108
  start.Read (buf, 3);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   109
  return GetSerializedSize ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   110
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   111
uint32_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   112
GeneralMessage::Deserialize (Buffer::Iterator& start, uint32_t len)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   113
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   114
  uint8_t buf[3];
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   115
  m_family = start.ReadU8 ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   116
  start.Read (buf, 3);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   117
  return GetSerializedSize ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   118
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   119
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   120
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   121
uint32_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   122
GeneralMessage::GetNNetlinkAttribute (void)const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   123
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   124
  return m_attributes.size ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   125
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   126
NetlinkAttribute
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   127
GeneralMessage::GetNetlinkAttribute (uint32_t index)const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   128
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   129
  NS_ASSERT(index < GetNNetlinkAttribute ());
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   130
  return m_attributes[index];
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   131
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   132
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   133
uint32_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   134
GeneralMessage::GetAttributeSerializedSize (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   135
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   136
  uint32_t size = 0;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   137
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   138
  for (uint32_t i = 0; i < m_attributes.size (); i ++)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   139
    {
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   140
      size += m_attributes[i].GetSerializedSize ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   141
    }
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   142
  return size;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   143
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   144
bool
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   145
GeneralMessage::GetAttributeByType (NetlinkAttribute& attr, uint16_t type)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   146
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   147
  for (uint32_t i = 0; i < m_attributes.size (); i ++)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   148
    {
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   149
      if (type == m_attributes[i].GetAttrType ())
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   150
        {
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   151
          attr = m_attributes[i];
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   152
          return true;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   153
        }
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   154
    }
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   155
  return false;  
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   156
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   157
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   158
GeneralMessage::AppendAttribute (NetlinkAttribute v)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   159
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   160
  m_attributes.push_back (v);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   161
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   162
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   163
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   164
GeneralMessage::SerializeAttribute (Buffer::Iterator& start) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   165
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   166
  for (uint32_t i = 0; i < m_attributes.size (); i ++)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   167
    {
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   168
      m_attributes[i].Serialize (start);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   169
    }
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   170
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   171
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   172
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   173
GeneralMessage::PrintAttribute (std::ostream &os) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   174
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   175
  for (uint32_t i = 0; i < m_attributes.size (); i ++)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   176
    {
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   177
      os << " ----Attribute (" << i << "):";
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   178
      m_attributes[i].Print(os);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   179
    }
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   180
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   181
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   182
/***********************************************************************************
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   183
* \ InterfaceInfoMessage
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   184
***********************************************************************************/
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   185
InterfaceInfoMessage::InterfaceInfoMessage ()
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   186
  : m_reserved (0),
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   187
    m_deviceType (0),
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   188
    m_interfaceIndex(0),
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   189
    m_deviceFlags (0),
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   190
    m_changeMask (0)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   191
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   192
  memset ((void*)m_attributeTypes, 0, sizeof (m_attributeTypes));
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   193
  m_attributeTypes[IFL_A_UNSPEC] = UNSPEC;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   194
  m_attributeTypes[IFL_A_ADDRESS] = ADDRESS;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   195
  m_attributeTypes[IFL_A_BROADCAST] = ADDRESS;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   196
  m_attributeTypes[IFL_A_IFNAME] = STRING;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   197
  m_attributeTypes[IFL_A_MTU] = U32;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   198
  m_attributeTypes[IFL_A_LINK] = U32;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   199
  m_attributeTypes[IFL_A_QDISC] = U8;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   200
  m_attributeTypes[IFL_A_STATS] = UNSPEC;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   201
  m_attributeTypes[IFL_A_COST] = UNSPEC;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   202
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   203
InterfaceInfoMessage::~InterfaceInfoMessage ()
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   204
{}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   205
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   206
InterfaceInfoMessage::SetDeviceType (uint16_t type)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   207
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   208
  m_deviceType = type;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   209
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   210
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   211
InterfaceInfoMessage::SetInterfaceIndex (int32_t index)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   212
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   213
  m_interfaceIndex = index;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   214
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   215
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   216
InterfaceInfoMessage::SetDeviceFlags (uint32_t flags)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   217
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   218
  m_deviceFlags = flags;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   219
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   220
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   221
InterfaceInfoMessage::SetChangeMask (uint32_t mask)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   222
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   223
  m_changeMask = mask;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   224
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   225
uint16_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   226
InterfaceInfoMessage::GetDeviceType (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   227
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   228
  return m_deviceType;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   229
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   230
int32_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   231
InterfaceInfoMessage::GetInterfaceIndex (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   232
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   233
  return m_interfaceIndex;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   234
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   235
uint32_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   236
InterfaceInfoMessage::GetDeviceFlags (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   237
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   238
  return m_deviceFlags;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   239
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   240
uint32_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   241
InterfaceInfoMessage::GetChangeMask (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   242
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   243
  return m_changeMask;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   244
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   245
TypeId 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   246
InterfaceInfoMessage::GetTypeId (void)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   247
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   248
  static TypeId tid = TypeId ("ns3::InterfaceInfoMessage")
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   249
    .SetParent<GeneralMessage> ()
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   250
    .AddConstructor<InterfaceInfoMessage> ()
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   251
    ;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   252
  return tid;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   253
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   254
TypeId 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   255
InterfaceInfoMessage::GetInstanceTypeId (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   256
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   257
  return GetTypeId ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   258
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   259
void 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   260
InterfaceInfoMessage::Print (std::ostream &os) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   261
{  
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   262
  os << " ----InterfaceInfoMessage ("
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   263
     << "deviceType: " << m_deviceType << " "
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   264
     << "interfaceIndex: " << m_interfaceIndex << " "
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   265
     << "deviceFlags: " << m_deviceFlags << " "
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   266
     << "changeMask: " << m_changeMask << ")" ;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   267
  PrintAttribute (os);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   268
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   269
uint32_t 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   270
InterfaceInfoMessage::GetSerializedSize (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   271
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   272
  return NETLINK_INTERFACE_SIZE + GetAttributeSerializedSize ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   273
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   274
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   275
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   276
InterfaceInfoMessage::Serialize (Buffer::Iterator& start) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   277
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   278
  start.WriteU8 (m_family);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   279
  start.WriteU8 (m_reserved);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   280
  start.WriteU16 (m_deviceType);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   281
  start.WriteU32 (m_interfaceIndex);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   282
  start.WriteU32 (m_deviceFlags);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   283
  start.WriteU32 (m_changeMask);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   284
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   285
  SerializeAttribute (start);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   286
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   287
uint32_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   288
InterfaceInfoMessage::Deserialize (Buffer::Iterator& start, uint32_t len)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   289
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   290
  m_family = start.ReadU8 ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   291
  m_reserved = start.ReadU8 ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   292
  m_deviceType = start.ReadU16 ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   293
  m_interfaceIndex = start.ReadU32 ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   294
  m_deviceFlags = start.ReadU32 ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   295
  m_changeMask = start.ReadU32 ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   296
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   297
  len -= NETLINK_INTERFACE_SIZE;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   298
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   299
  while (len)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   300
    {
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   301
      NetlinkAttribute attr;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   302
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   303
      len -= attr.Deserialize (start, m_attributeTypes);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   304
      m_attributes.push_back (attr);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   305
    }
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   306
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   307
  return GetSerializedSize ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   308
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   309
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   310
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   311
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   312
/***********************************************************************************
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   313
* \InterfaceAddressMessage
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   314
***********************************************************************************/
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   315
InterfaceAddressMessage::InterfaceAddressMessage ()
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   316
  : m_length (0),
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   317
    m_flags (0),
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   318
    m_scope (0),
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   319
    m_index(0)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   320
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   321
  memset ((void*)m_attributeTypes, 0, sizeof (m_attributeTypes));
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   322
  m_attributeTypes[IF_A_UNSPEC] = UNSPEC;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   323
  m_attributeTypes[IF_A_ADDRESS] = ADDRESS;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   324
  m_attributeTypes[IF_A_LOCAL] = ADDRESS;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   325
  m_attributeTypes[IF_A_LABEL] = STRING;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   326
  m_attributeTypes[IF_A_BROADCAST] = ADDRESS;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   327
  m_attributeTypes[IF_A_ANYCAST] = ADDRESS;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   328
  m_attributeTypes[IF_A_CACHEINFO] = UNSPEC;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   329
  m_attributeTypes[IF_A_MULTICAST] = ADDRESS;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   330
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   331
InterfaceAddressMessage::~InterfaceAddressMessage ()
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   332
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   333
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   334
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   335
InterfaceAddressMessage::SetFamily (uint8_t family)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   336
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   337
  m_family = family;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   338
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   339
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   340
InterfaceAddressMessage::SetLength (uint8_t length)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   341
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   342
  m_length = length;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   343
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   344
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   345
InterfaceAddressMessage::SetFlags (uint8_t flags)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   346
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   347
  m_flags = flags;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   348
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   349
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   350
InterfaceAddressMessage::SetScope (uint8_t scope)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   351
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   352
  m_scope = scope;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   353
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   354
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   355
InterfaceAddressMessage::SetInterfaceIndex (int32_t index)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   356
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   357
  m_index = index;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   358
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   359
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   360
uint8_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   361
InterfaceAddressMessage::GetFamily (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   362
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   363
  return m_family;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   364
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   365
uint8_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   366
InterfaceAddressMessage::GetLength (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   367
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   368
  return m_length;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   369
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   370
uint8_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   371
InterfaceAddressMessage::GetFlags (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   372
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   373
  return m_flags;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   374
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   375
uint8_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   376
InterfaceAddressMessage::GetScope (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   377
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   378
  return m_scope;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   379
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   380
int32_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   381
InterfaceAddressMessage::GetInterfaceIndex (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   382
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   383
  return m_index;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   384
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   385
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   386
TypeId 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   387
InterfaceAddressMessage::GetTypeId (void)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   388
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   389
  static TypeId tid = TypeId ("ns3::InterfaceAddressMessage")
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   390
    .SetParent<GeneralMessage> ()
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   391
    .AddConstructor<InterfaceAddressMessage> ()
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   392
    ;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   393
  return tid;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   394
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   395
TypeId 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   396
InterfaceAddressMessage::GetInstanceTypeId (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   397
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   398
  return GetTypeId ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   399
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   400
void 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   401
InterfaceAddressMessage::Print (std::ostream &os) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   402
{  
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   403
  os << " ----InterfaceAddressMessage ("
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   404
     << "family: " << (uint32_t)m_family << " "
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   405
     << "length: " << (uint32_t)m_length << " "
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   406
     << "flags: " << (uint32_t)m_flags << " "
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   407
     << "scope: " << (uint32_t)m_scope << " "
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   408
     << "index: " << m_index << ")";
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   409
  PrintAttribute (os);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   410
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   411
uint32_t 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   412
InterfaceAddressMessage::GetSerializedSize (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   413
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   414
  return NETLINK_ADDRESS_SIZE + GetAttributeSerializedSize ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   415
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   416
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   417
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   418
InterfaceAddressMessage::Serialize (Buffer::Iterator& start) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   419
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   420
  start.WriteU8 (m_family);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   421
  start.WriteU8 (m_length);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   422
  start.WriteU8 (m_flags);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   423
  start.WriteU8 (m_scope);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   424
  start.WriteU32 (m_index);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   425
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   426
  SerializeAttribute(start);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   427
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   428
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   429
uint32_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   430
InterfaceAddressMessage::Deserialize (Buffer::Iterator& start, uint32_t len)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   431
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   432
  m_family = start.ReadU8 ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   433
  m_length = start.ReadU8 ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   434
  m_flags = start.ReadU8 ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   435
  m_scope = start.ReadU8 ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   436
  m_index = start.ReadU32 ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   437
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   438
  len -= NETLINK_ADDRESS_SIZE;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   439
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   440
  while (len)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   441
    {
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   442
      NetlinkAttribute attr;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   443
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   444
      len -= attr.Deserialize (start, m_attributeTypes);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   445
      m_attributes.push_back (attr);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   446
    }
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   447
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   448
  return GetSerializedSize ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   449
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   450
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   451
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   452
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   453
/***********************************************************************************
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   454
* \ RouteMessage
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   455
***********************************************************************************/
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   456
RouteMessage::RouteMessage ()
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   457
  : m_dstLen (0),
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   458
    m_srcLen (0),
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   459
    m_tos (0),
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   460
    m_tableId (0),
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   461
    m_protocol(0),
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   462
    m_scope (0),
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   463
    m_type (0),
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   464
    m_flags (0)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   465
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   466
  memset ((void*)m_attributeTypes, 0, sizeof (m_attributeTypes));
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   467
  m_attributeTypes[RT_A_UNSPEC] = UNSPEC;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   468
  m_attributeTypes[RT_A_DST] = ADDRESS;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   469
  m_attributeTypes[RT_A_SRC] = ADDRESS;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   470
  m_attributeTypes[RT_A_IIF] = U32;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   471
  m_attributeTypes[RT_A_OIF] = U32;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   472
  m_attributeTypes[RT_A_GATEWAY] = ADDRESS;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   473
  m_attributeTypes[RT_A_PRIORITY] = U8;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   474
  m_attributeTypes[RT_A_PREFSRC] = ADDRESS;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   475
  m_attributeTypes[RT_A_METRICS] = UNSPEC;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   476
  //others default value UNSPEC
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   477
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   478
RouteMessage::~RouteMessage ()
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   479
{}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   480
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   481
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   482
RouteMessage::SetFamily (uint8_t v)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   483
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   484
  m_family = v;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   485
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   486
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   487
RouteMessage::SetDstLength (uint8_t v)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   488
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   489
  m_dstLen = v;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   490
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   491
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   492
RouteMessage::SetSrcLength (uint8_t v)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   493
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   494
  m_srcLen = v;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   495
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   496
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   497
RouteMessage::SetTos (uint8_t v)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   498
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   499
  m_tos = v;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   500
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   501
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   502
RouteMessage::SetTableId (uint8_t v)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   503
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   504
  m_tableId = v;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   505
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   506
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   507
RouteMessage::SetProtocol (uint8_t v)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   508
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   509
  m_protocol = v;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   510
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   511
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   512
RouteMessage::SetScope (uint8_t v)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   513
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   514
  m_scope = v;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   515
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   516
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   517
RouteMessage::SetType (uint8_t v)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   518
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   519
  m_type = v;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   520
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   521
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   522
RouteMessage::SetFlags (uint32_t v)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   523
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   524
  m_flags = v;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   525
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   526
uint8_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   527
RouteMessage::GetFamily (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   528
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   529
  return m_family;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   530
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   531
uint8_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   532
RouteMessage::GetDstLength (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   533
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   534
  return m_dstLen;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   535
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   536
uint8_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   537
RouteMessage::GetSrcLength (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   538
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   539
  return m_srcLen;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   540
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   541
uint8_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   542
RouteMessage::GetTos (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   543
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   544
  return m_tos;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   545
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   546
uint8_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   547
RouteMessage::GetTableId (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   548
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   549
  return m_tableId;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   550
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   551
uint8_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   552
RouteMessage::GetProtocol (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   553
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   554
  return m_protocol;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   555
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   556
uint8_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   557
RouteMessage::GetType (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   558
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   559
  return m_type;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   560
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   561
uint8_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   562
RouteMessage::GetScope (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   563
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   564
  return m_scope;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   565
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   566
uint32_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   567
RouteMessage::GetFlags (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   568
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   569
  return m_flags;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   570
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   571
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   572
TypeId 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   573
RouteMessage::GetTypeId (void)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   574
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   575
  static TypeId tid = TypeId ("ns3::RouteMessage")
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   576
    .SetParent<GeneralMessage> ()
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   577
    .AddConstructor<RouteMessage> ()
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   578
    ;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   579
  return tid;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   580
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   581
TypeId 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   582
RouteMessage::GetInstanceTypeId (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   583
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   584
  return GetTypeId ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   585
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   586
void 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   587
RouteMessage::Print (std::ostream &os) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   588
{  
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   589
  os << " ----RouteMessage ("
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   590
     << "family: " << (uint32_t)m_family << " "
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   591
     << "dstLen: " << (uint32_t)m_dstLen << " "
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   592
     << "srcLen: " << (uint32_t)m_srcLen << " "
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   593
     << "tos: " << (uint32_t)m_tos << " "
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   594
     << "tableId: " << (uint32_t)m_tableId << " "
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   595
     << "protocol: " << (uint32_t)m_protocol << " "
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   596
     << "scope: " << (uint32_t)m_scope << " "
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   597
     << "type: " << (uint32_t)m_type << " "
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   598
     << "flags: " << m_flags<< ")" ;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   599
  PrintAttribute (os);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   600
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   601
uint32_t 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   602
RouteMessage::GetSerializedSize (void) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   603
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   604
  return NETLINK_ROUTE_SIZE + GetAttributeSerializedSize ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   605
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   606
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   607
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   608
RouteMessage::Serialize (Buffer::Iterator& start) const
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   609
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   610
  start.WriteU8 (m_family);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   611
  start.WriteU8 (m_dstLen);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   612
  start.WriteU8 (m_srcLen);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   613
  start.WriteU8 (m_tos);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   614
  start.WriteU8 (m_tableId);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   615
  start.WriteU8 (m_protocol);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   616
  start.WriteU8 (m_scope);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   617
  start.WriteU8 (m_type);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   618
  start.WriteU32 (m_flags);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   619
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   620
  SerializeAttribute (start);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   621
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   622
uint32_t
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   623
RouteMessage::Deserialize (Buffer::Iterator& start, uint32_t len)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   624
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   625
  m_family = start.ReadU8 ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   626
  m_dstLen = start.ReadU8 ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   627
  m_srcLen = start.ReadU8 ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   628
  m_tos = start.ReadU8 ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   629
  m_tableId = start.ReadU8 ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   630
  m_protocol = start.ReadU8 ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   631
  m_scope = start.ReadU8 ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   632
  m_type = start.ReadU8 ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   633
  m_flags = start.ReadU32 ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   634
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   635
  len -= NETLINK_ROUTE_SIZE;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   636
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   637
  while (len)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   638
    {
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   639
      NetlinkAttribute attr;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   640
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   641
      len -= attr.Deserialize (start, m_attributeTypes);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   642
      m_attributes.push_back (attr);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   643
    }
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   644
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   645
  return GetSerializedSize ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   646
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   647
}; // namespace ns3