// // Copyright (C) 2000 Institut fuer Telematik, Universitaet Karlsruhe // Copyright (C) 2004 Andras Varga // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // 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 General Public License for more details. // // You should have received a copy of the GNU 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. // cplusplus {{ #include "IPvXAddress.h" }} class noncobject IPvXAddress; // // \UDP command codes, sent by the application to UDP. These constants // should be set as message kind on a message sent to the UDP entity. // // @see UDPControlInfo, UDPStatusInd, UDP // enum UDPCommandCode { UDP_C_DATA = 0; // datagram to send (must carry UDPControlInfo) UDP_C_BIND = 1; // fill srcPort and srcAddr in UDPControlInfo UDP_C_CONNECT = 2; // fill destAddr and destPort in UDPControlInfo UDP_C_UNBIND = 3; // fill sockId in UDPControlInfo }; // // \UDP indications, sent by UDP to the application. UDP will set these // constants as message kind on messages it sends to the application. // // @see UDPControlInfo, UDPCommandCode, UDP // enum UDPStatusInd { UDP_I_DATA = 0; // data packet (set on data packet) UDP_I_ERROR = 1; // ICMP error received on a sent datagram }; // // Control info for sending/receiving data via \UDP. Travels between // application and the UDP module. // // The most convenient way to handle UDP is the UDPSocket class, which hides // UDPControlInfo completely from you. But even if you manage talking // to UDP yourself without help from UDPSocket, sockId must be obtained // from UDPSocket::generateSocketId(). // //# TODO explain userId, sockId, etc. // // @see UDPCommandCode // class UDPControlInfo { properties: omitGetVerb = true; fields: int sockId = -1; // uniquely identifies the \UDP socket int userId = -1; // id than can be freely used by the app IPvXAddress srcAddr; // source \IP or \IPv6 address, or local address with BIND IPvXAddress destAddr; // destination \IP or \IPv6 address int srcPort; // \UDP source port in packet, or local port with BIND int destPort; // \UDP destination port in packet int interfaceId = -1; // interface on which pk was received/should be sent (see InterfaceTable) };