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 
91 int
92 RawIp4Tx (
93   IN int ArgC,
94   IN char **ArgV
95   );
96 
97 //------------------------------------------------------------------------------
98 
99 #endif  //  _RAW_IP4_TX_H_