Files
vxWorks/h/wrn/ip_if.h
2025-08-20 18:25:46 +08:00

100 lines
4.9 KiB
C

/************************************************************************/
/* Copyright (C) 1999 RouterWare, Inc. */
/* Unpublished - rights reserved under the Copyright Laws of the */
/* United States. Use, duplication, or disclosure by the */
/* Government is subject to restrictions as set forth in */
/* subparagraph (c)(1)(ii) of the Rights in Technical Data and */
/* Computer Software clause at 252.227-7013. */
/* RouterWare, Inc., 3961 MacArthur Blvd. Suite 212, Newport Beach, CA */
/************************************************************************/
#if !defined (__IP_IF_H__)
#define __IP_IF_H__
#include <ip_message_if.h> /* IP_MESSAGE definition */
/* ************************************************************************************************************************ */
#define ANY_IP_IF ((UINT)-1)
#define MAX_OPTION_DATA_LENGTH 38
/*typedef UINT IP_TYPE_OF_SERVICE;*/
/*typedef UINT IP_IF_HANDLE;*/
typedef UINT ARP_INTERFACE_HANDLE;
/* ************************************************************************************************************************ */
/* IP Lower Layer Interface */
/* ************************************************************************************************************************ */
typedef enum IP_LOWER_CALLBACK_IF_TYPE
{
IP_LOWER_CALLBACK_IF_ETHERNET_TYPE,
IP_LOWER_CALLBACK_IF_PPP_TYPE
} IP_LOWER_CALLBACK_IF_TYPE;
/* ************************************************************************************************************************ */
typedef struct IP_LOWER_CALLBACK_IF
{
bool (*fp_ip_lower_if_send) (struct IP_LOWER_CALLBACK_IF*, IP_MESSAGE* p_ip_message,
IP_ADDRESS next_hop_ip_address);
/* NOTE: the next_hop_ip_address parameter should be set to the IP address of the next hop,
* which could be:
* 1> either the IP address of the destination
* 2> or, the IP address of the next hop gateway
* If this parameter is 0, the function would fail. */
} IP_LOWER_CALLBACK_IF;
/* ************************************************************************************************************************ */
typedef struct IP_LOWER_ETHERNET_CALLBACK_IF
{
IP_LOWER_CALLBACK_IF parent;
} IP_LOWER_ETHERNET_CALLBACK_IF;
/* ************************************************************************************************************************ */
typedef struct IP_LOWER_PPP_CALLBACK_IF
{
IP_LOWER_CALLBACK_IF parent;
} IP_LOWER_PPP_CALLBACK_IF;
/* ************************************************************************************************************************ */
typedef struct IP_LOWER_IF
{
IP_IF_HANDLE (*fp_ip_lower_if_add_interface) (struct IP_LOWER_IF*, IP_LOWER_CALLBACK_IF*);
bool (*fp_ip_lower_if_remove_interface) (struct IP_LOWER_IF*, IP_IF_HANDLE);
bool (*fp_ip_lower_if_add_address) (struct IP_LOWER_IF*, IP_ADDRESS ip_address, IP_ADDRESS subnet_mask);
bool (*fp_ip_lower_if_remove_address) (struct IP_LOWER_IF*, IP_ADDRESS ip_address);
bool (*fp_ip_lower_if_receive) (struct IP_LOWER_IF*, IP_IF_HANDLE, struct IP_MESSAGE*);
bool (*fp_ip_lower_if_set_default_route) (struct IP_LOWER_IF*, IP_ADDRESS next_hop_gateway);
} IP_LOWER_IF;
/* ************************************************************************************************************************ */
/* IP Upper Layer Interface */
/* ************************************************************************************************************************ */
typedef struct IP_UPPER_CALLBACK_IF
{
bool (*fp_ip_upper_callback_if_up) (struct IP_UPPER_CALLBACK_IF*, IP_IF_HANDLE);
bool (*fp_ip_upper_callback_if_down) (struct IP_UPPER_CALLBACK_IF*, IP_IF_HANDLE);
bool (*fp_ip_upper_callback_if_add_address) (struct IP_UPPER_CALLBACK_IF*, IP_IF_HANDLE, IP_ADDRESS ip_address,
IP_ADDRESS subnet_mask);
bool (*fp_ip_upper_callback_if_remove_address) (struct IP_UPPER_CALLBACK_IF*, IP_IF_HANDLE, IP_ADDRESS ip_address);
bool (*fp_ip_upper_callback_if_receive) (struct IP_UPPER_CALLBACK_IF*, IP_IF_HANDLE,
struct IP_MESSAGE* p_ip_message);
} IP_UPPER_CALLBACK_IF;
/* ************************************************************************************************************************ */
typedef struct IP_UPPER_IF
{
bool (*fp_ip_upper_if_register) (struct IP_UPPER_IF*, IP_TRANSPORT_PROTOCOL,
struct IP_UPPER_CALLBACK_IF* p_transport);
bool (*fp_ip_upper_if_deregister) (struct IP_UPPER_IF*, IP_UPPER_CALLBACK_IF*);
bool (*fp_ip_upper_if_send) (struct IP_UPPER_IF*, IP_IF_HANDLE, struct IP_MESSAGE*,
IP_ADDRESS next_hop_gateway);
UINT (*fp_ip_upper_if_get_mtu) (struct IP_UPPER_IF*, IP_IF_HANDLE);
IP_ADDRESS (*fp_ip_upper_if_get_first_ip_interface_address) (struct IP_UPPER_IF*, IP_IF_HANDLE);
} IP_UPPER_IF;
/* ************************************************************************************************************************ */
#endif /* __IP_IF_H__ */