File Network/Contract/IPv6ControlInfo.msg

Contains:

//
// Copyright (C) 2005 Andras Varga
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
//


enum IPProtocolId;
class noncobject IPv6Address;

cplusplus {{
#include "IPv6Address.h"
#include "IPProtocolId_m.h"
}}


//
// Control information for sending/receiving packets over \IPv6.
//
// To send a packet over \IPv6, fill in an IPv6ControlInfo object,
// attach it to the packet with the C++ method setControlInfo(),
// the send it to the IPv6 module.
//
// When IPv6 delivers packets to higher layers, it also attaches
// similar IPv6ControlInfo objects to them.
//
// When sending, the following fields are required:
// - protocol: a value from IPProtocolId
// - destAddr
//
// Optional fields:
// - srcAddr: it will be set to the address of the outgoing interface
// - timeToLive
//
class IPv6ControlInfo
{
    properties:
        omitGetVerb=true;
        customize = true;
    fields:
        int protocol enum(IPProtocolId);  // transport layer protocol
        IPv6Address destAddr; // destination IPv6 address
        IPv6Address srcAddr;  // source IPv6 address
        short hopLimit;       // hop limit
        int interfaceId = -1; // interface on which dgram was received/should
                              // be sent (see InterfaceTable)
};