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_