1/** @file 2 Definitions for the raw IP4 transmit application 3 4 Copyright (c) 2011-2012, Intel Corporation 5 All rights reserved. This program and the accompanying materials 6 are licensed and made available under the terms and conditions of the BSD License 7 which accompanies this distribution. The full text of the license may be found at 8 http://opensource.org/licenses/bsd-license.php 9 10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12 13**/ 14 15#ifndef _RAW_IP4_TX_H_ 16#define _RAW_IP4_TX_H_ 17 18//------------------------------------------------------------------------------ 19// Include Files 20//------------------------------------------------------------------------------ 21 22#ifdef BUILD_FOR_WINDOWS 23// 24// Build for Windows environment 25// 26 27#include <winsock2.h> 28 29#define CHAR8 char 30#define CLOSE_SOCKET closesocket 31#define EINVAL 22 // Invalid argument 32#define GET_ERRNO WSAGetLastError ( ) 33#define SIN_ADDR(port) port.sin_addr.S_un.S_addr 34#define SIN_FAMILY(port) port.sin_family 35#define SIN_LEN(port) port.sin_family 36#define SIN_PORT(port) port.sin_port 37#define socklen_t int 38#define ssize_t int 39 40#else // BUILD_FOR_WINDOWS 41// 42// Build for EFI environment 43// 44 45#include <Uefi.h> 46#include <errno.h> 47#include <stdlib.h> 48#include <string.h> 49 50#include <netinet/in.h> 51 52#include <sys/EfiSysCall.h> 53#include <sys/endian.h> 54#include <sys/socket.h> 55 56#define CLOSE_SOCKET close 57#define GET_ERRNO errno 58#define SIN_ADDR(port) port.sin_addr.s_addr 59#define SIN_FAMILY(port) port.sin_family 60#define SIN_LEN(port) port.sin_len 61#define SIN_PORT(port) port.sin_port 62#define SOCKET int 63 64#endif // BUILD_FOR_WINDOWS 65 66#include <stdio.h> 67 68//------------------------------------------------------------------------------ 69// Constants 70//------------------------------------------------------------------------------ 71 72// 73// See http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml 74// and http://tools.ietf.org/html/rfc3692 75// 76#define RAW_PROTOCOL 253 77 78//------------------------------------------------------------------------------ 79// API 80//------------------------------------------------------------------------------ 81 82/** 83 Transmit raw IP4 packets to the remote system. 84 85 @param [in] ArgC Argument count 86 @param [in] ArgV Argument value array 87 88 @retval 0 Successfully operation 89 **/ 90 91int 92RawIp4Tx ( 93 IN int ArgC, 94 IN char **ArgV 95 ); 96 97//------------------------------------------------------------------------------ 98 99#endif // _RAW_IP4_TX_H_