original files of m241
This commit is contained in:
@@ -0,0 +1,640 @@
|
||||
/* applUtilLib.h - Application utility library */
|
||||
|
||||
/* Copyright 2001 - 2004 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01n,07aug04,dlk Substantial changes for scalability and consistency with
|
||||
syslog API.
|
||||
01m,20aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01l,03aug04,nee Removing distinction between LOG_* as functions or macros
|
||||
depending on whether its GNU or diab
|
||||
01k,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
||||
/main/vdt/base6_itn5_networking-int/1)
|
||||
01j,03feb04,zhr Added telnet client to logging categories
|
||||
01j,27jan04,asr Added rlogin & remLib to logging categories
|
||||
01i,06dec03,niq Fix compile error with GNU
|
||||
01h,24nov03,asr added an include for semLib.h
|
||||
moved diab version of LOG_XXXX to applUtilLib.c to get rid of warnings
|
||||
01g,20nov03,niq osdep.h cleanup
|
||||
01f,01nov03,asr Changes to port application logger to RTP
|
||||
01e,22aug03,niq Merging from Accordion label ACCORDION_BASE6_MERGE_BASELINE
|
||||
01d,15jul02,rvr defined inline functions for LOG_INFO,LOG_ERROR,LOG_WARNING
|
||||
and LOG_DEBUG for diab compiler
|
||||
01c,21may02,ppp adding taskLib.h for T2 build
|
||||
01b,21Jan02,ism change logging macros to remove need for array
|
||||
01a,18Sep01,ism written
|
||||
*/
|
||||
|
||||
#ifndef __INCapplUtilLibh
|
||||
#define __INCapplUtilLibh
|
||||
|
||||
/* includes */
|
||||
|
||||
#include <stdio.h> /* for FILE */
|
||||
#include <limits.h> /* for INT_MAX */
|
||||
#include <stdarg.h>
|
||||
#include <semLib.h>
|
||||
#include <cfgDefs.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/* defines */
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
/* nbioLogLib is not presently supported in RTPs.
|
||||
* It may or may not be desired in the kernel.
|
||||
#define SUPPORT_NBIO_LOG
|
||||
*/
|
||||
#endif
|
||||
|
||||
#ifdef SUPPORT_NBIO_LOG
|
||||
#define KERN_LOG_FD LOG_FD_NBIO
|
||||
#else
|
||||
#define KERN_LOG_FD STD_ERR
|
||||
#endif
|
||||
|
||||
#define CAT_SHIFT 8
|
||||
#define CAT_MASK ((UINT)(-(1 << CAT_SHIFT)))
|
||||
|
||||
/* Logging categories */
|
||||
|
||||
typedef enum _LOG_CAT_NUM
|
||||
{
|
||||
#undef LOG_DB
|
||||
#undef LOG_DB_LAST
|
||||
#define LOG_DB(x, y, z) x##_LOG_NUM,
|
||||
#define LOG_DB_LAST(x, y, z) x##_LOG_NUM,
|
||||
#include <logCategories.h>
|
||||
LOG_NUMCATS
|
||||
} LOG_CAT_NUM;
|
||||
|
||||
typedef enum _LOG_CAT
|
||||
{
|
||||
#undef LOG_DB
|
||||
#undef LOG_DB_LAST
|
||||
#define LOG_DB(x, y, z) x##_LOG = (x##_LOG_NUM << CAT_SHIFT),
|
||||
#define LOG_DB_LAST(x, y, z) x##_LOG = (x##_LOG_NUM << CAT_SHIFT)
|
||||
#include <logCategories.h>
|
||||
} LOG_CAT;
|
||||
|
||||
typedef struct categoryInfo
|
||||
{
|
||||
int fd;
|
||||
UINT level;
|
||||
} CATEGORY_INFO;
|
||||
|
||||
typedef struct _APPL_UTIL_CFG
|
||||
{
|
||||
CFG_DATA_HDR cfgh; /* header */
|
||||
int fd; /* default logging file descriptor, all facilities
|
||||
except KERN_LOG */
|
||||
UINT level; /* default logging decoration and level, non-KERN */
|
||||
int fdKern; /* default logging file descriptor for KERN_LOG */
|
||||
UINT levelKern; /* default logging decoration and level, KERN_LOG */
|
||||
} APPL_UTIL_CFG;
|
||||
|
||||
#ifndef _LOG_DEC_DFLT
|
||||
#define _LOG_DEC_DFLT ((LOG_DECOR|LOG_LOC) << 8)
|
||||
#endif
|
||||
|
||||
#ifndef _LOG_LVL_DFLT
|
||||
#define _LOG_LVL_DFLT WARNING_LEVEL
|
||||
#endif
|
||||
|
||||
/* Priority levels */
|
||||
|
||||
|
||||
#define LOG_DEBUG 7 /* Messages containing information normally of use */
|
||||
/* only when debugging */
|
||||
#define LOG_INFO 6 /* Informational messages */
|
||||
#define LOG_NOTICE 5 /* Non-error conditions, which may require special */
|
||||
/* handling */
|
||||
#define LOG_WARNING 4 /* Warning messages */
|
||||
#define LOG_ERR 3 /* Errors */
|
||||
#define LOG_CRIT 2 /* Critical conditions, such as hard device errors */
|
||||
#define LOG_ALERT 1 /* A condition which requires immediate corrective */
|
||||
/* action */
|
||||
#define LOG_EMERG 0 /* Panic condition. The system is unstable. */
|
||||
|
||||
|
||||
#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */
|
||||
|
||||
/* Logging levels - convenience values for logging all levels
|
||||
* up to a specified level.
|
||||
*/
|
||||
|
||||
#define DEBUG_LEVEL LOG_UPTO (LOG_DEBUG)
|
||||
#define INFO_LEVEL LOG_UPTO (LOG_INFO)
|
||||
#define NOTICE_LEVEL LOG_UPTO (LOG_NOTICE)
|
||||
#define WARNING_LEVEL LOG_UPTO (LOG_WARNING)
|
||||
#define ERR_LEVEL LOG_UPTO (LOG_ERR)
|
||||
#define ERROR_LEVEL ERR_LEVEL /* deprecated */
|
||||
#define CRIT_LEVEL LOG_UPTO (LOG_CRIT)
|
||||
#define ALERT_LEVEL LOG_UPTO (LOG_ALERT)
|
||||
#define EMERG_LEVEL LOG_UPTO (LOG_EMERG)
|
||||
#define DO_NOT_LOG 0x00
|
||||
|
||||
/* We share priority levels (although not level names) with syslog() */
|
||||
|
||||
#define LOG_DEBUG_BIT (1 << LOG_DEBUG)
|
||||
#define LOG_INFO_BIT (1 << LOG_INFO)
|
||||
#define LOG_NOTICE_BIT (1 << LOG_NOTICE)
|
||||
#define LOG_WARNING_BIT (1 << LOG_WARNING)
|
||||
#define LOG_ERR_BIT (1 << LOG_ERR)
|
||||
#define LOG_CRIT_BIT (1 << LOG_CRIT)
|
||||
#define LOG_ALERT_BIT (1 << LOG_ALERT)
|
||||
#define LOG_EMERG_BIT (1 << LOG_EMERG)
|
||||
|
||||
/*
|
||||
* Special bit for compile-time enabling of kernel logging (log(), LOG()).
|
||||
* Not really a priority bit.
|
||||
*/
|
||||
|
||||
#define LOG_KERNEL_BIT 0x100
|
||||
|
||||
/*
|
||||
* These bits may be passed to the logging macros as part of the
|
||||
* "category" argument to enable or disable various "decorations"
|
||||
* on the log output.
|
||||
*
|
||||
* These bits are exlusive-or'ed with the corresponding bits set on
|
||||
* a per-facility basis using logDecorationSet().
|
||||
*/
|
||||
|
||||
#define LOG_DECOR 0x80 /* log priority level and facility */
|
||||
#define LOG_LOC 0x40 /* log file name or function and line number */
|
||||
|
||||
#ifdef ENABLE_LOG_TIME
|
||||
#define LOG_TIME 0x20 /* log a timestamp */
|
||||
#endif
|
||||
#define LOG_ERRNO 0x10 /* log errno */
|
||||
|
||||
/* Fake file descriptor value for non-blocking I/O */
|
||||
|
||||
#define LOG_FD_NBIO INT_MAX
|
||||
|
||||
/*
|
||||
* In the priority/category argument to _applLog(),
|
||||
*
|
||||
* Bits 0 - 2 are the priority
|
||||
* Bits 3 - 7 are decoration bits.
|
||||
* Bits 8 - 31 identify the category (Facility)
|
||||
*
|
||||
* Bit 0 is the least significant bit here.
|
||||
*/
|
||||
|
||||
#define PRI_CAT(pri, cat) ((cat) | (pri))
|
||||
|
||||
#define LOG_CAT(x) ((UINT32)(x) >> CAT_SHIFT)
|
||||
|
||||
|
||||
/* Constants controlling compile-time enabling of logging levels */
|
||||
|
||||
/* Define LOG_ENABLE_MASK as 0 to disable at compile time
|
||||
* all application logging. This might be done if a target platform
|
||||
* has no available console or other file to which it can log.
|
||||
* Define LOG_ENABLE_MASK as a collection of the LOG_*_BIT values above
|
||||
* to enable particular logging levels.
|
||||
*/
|
||||
|
||||
#if !defined (LOG_ENABLE_MASK)
|
||||
|
||||
#if FALSE /* change to TRUE if a logging destination is not available */
|
||||
|
||||
#define LOG_ENABLE_MASK (0)
|
||||
|
||||
#elif FALSE /* change to TRUE to do full logging */
|
||||
|
||||
#define LOG_ENABLE_MASK (DEBUG_LEVEL | LOG_KERNEL_BIT)
|
||||
|
||||
#else
|
||||
|
||||
/*
|
||||
* The _FREE_VERSION macro indicates a well-tested production
|
||||
* system. We assume DEBUG and INFO levels are not of interest
|
||||
* here (and should be removed to save space).
|
||||
*
|
||||
* For size reduction, remove these levels in the default (checked)
|
||||
* build as well.
|
||||
*/
|
||||
#define LOG_ENABLE_MASK (LOG_NOTICE_BIT | \
|
||||
LOG_WARNING_BIT | \
|
||||
LOG_ERR_BIT | \
|
||||
LOG_CRIT_BIT | \
|
||||
LOG_ALERT_BIT | \
|
||||
LOG_EMERG_BIT | \
|
||||
LOG_KERNEL_BIT)
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* !defined (LOG_ENABLE_MASK) */
|
||||
|
||||
#if __DCC__ || (__GNUCC__ >= 3)
|
||||
#define C99_VARIADIC_MACROS
|
||||
#endif
|
||||
|
||||
#if (LOG_ENABLE_MASK != 0)
|
||||
|
||||
#define APPL_LOGGER_INIT(cat, fd) applLoggerInit ((cat), (fd))
|
||||
#define APPL_LOGGER_STOP(cat) applLoggerStop ((cat))
|
||||
#define LOG_LEVEL_CHANGE(cat, mask) logLevelChange ((cat), (mask))
|
||||
#define LOG_DECORATION_CHANGE(cat, disable, enable) \
|
||||
logDecorationChange ((cat), (disable), (enable))
|
||||
#define LOGGER_INFO_SHOW() loggerInfoShow ()
|
||||
|
||||
#ifdef C99_VARIADIC_MACROS
|
||||
#define _APPL_LOG(cat, file, line, ...) \
|
||||
_applLog ((cat), (file), (line), __VA_ARGS__);
|
||||
#else
|
||||
#define _APPL_LOG(cat, file, line, fmt...) \
|
||||
_applLog ((cat), (file), (line), fmt);
|
||||
#endif /* C99_VARIADIC_MACROS */
|
||||
|
||||
#else /* (LOG_ENABLE_MASK == 0) */
|
||||
|
||||
#define APPL_LOGGER_INIT(cat, fd) (OK)
|
||||
#define APPL_LOGGER_STOP(cat) (OK)
|
||||
#define LOG_LEVEL_CHANGE(cat, mask) (OK)
|
||||
#define LOG_DECORATION_CHANGE(cat, disable, enable) (OK)
|
||||
#define LOGGER_INFO_SHOW() do {} while (FALSE)
|
||||
|
||||
#ifdef C99_VARIADIC_MACROS
|
||||
#define _APPL_LOG(cat, file, line, ...) do {} while (FALSE)
|
||||
#else
|
||||
#define _APPL_LOG(cat, file, line, fmt...) do {} while (FALSE)
|
||||
#endif /* C99_VARIADIC_MACROS */
|
||||
|
||||
#endif /* (LOG_ENABLE_MASK == 0) */
|
||||
|
||||
|
||||
/*
|
||||
* A modicum of backwards compatibility:
|
||||
*/
|
||||
#define USE_PRINTF STD_OUT
|
||||
|
||||
/* typedefs */
|
||||
|
||||
/* variables */
|
||||
|
||||
/* function declarations */
|
||||
|
||||
STATUS applLoggerInit (int category, int fd);
|
||||
STATUS applLoggerStop (int category);
|
||||
STATUS logLevelChange (int category, UINT mask);
|
||||
UINT logDecorationChange (int category, UINT disableMask, UINT enableMask);
|
||||
void loggerInfoShow ();
|
||||
void _applLog (int priCat, const char * file, int line, const char * fmt, ...);
|
||||
|
||||
|
||||
/* These functions are deprecated and should not be used */
|
||||
|
||||
#define APPL_LOGGER_DEPRECATED_ROUTINES
|
||||
|
||||
#ifdef APPL_LOGGER_DEPRECATED_ROUTINES
|
||||
int initApplLogger (int category, int fd);
|
||||
int stopApplLogger (int category);
|
||||
int changeLogLevel (int category, char level);
|
||||
void showLoggerInfo ();
|
||||
#endif /* APPL_LOGGER_DEPRECATED_ROUTINES */
|
||||
|
||||
#define GCC_VERSION \
|
||||
(__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
|
||||
|
||||
/* XXX verify exact version numbers for _HAVE__FUNCTION__ and _HAVE__func__ */
|
||||
|
||||
#if defined (__GNUC__) || (defined (__DCC__) && __VERSION_NUMBER__ >= 5200)
|
||||
#define _HAVE__FUNCTION__
|
||||
#endif
|
||||
|
||||
#if (GCC_VERSION >= 30200)
|
||||
#define _HAVE__func__
|
||||
#endif
|
||||
|
||||
#define LOG_LOC_FILE 0 /* The default */
|
||||
#define LOG_LOC_FUNC 1
|
||||
#define LOG_LOC_NONE 2
|
||||
|
||||
#if LOG_LOCATION == LOG_LOC_NONE
|
||||
#define _LOG_LOCATION NULL, 0
|
||||
#define _LOC_UNIT NULL
|
||||
#elif (LOG_LOCATION == LOG_LOC_FUNC) && defined (_HAVE__func__)
|
||||
#define _LOG_LOCATION __func__, __LINE__
|
||||
#define _LOC_UNIT __func__
|
||||
#elif (LOG_LOCATION == LOG_LOC_FUNC) && defined (_HAVE__FUNCTION__)
|
||||
#define _LOG_LOCATION __FUNCTION__, __LINE__
|
||||
#define _LOC_UNIT __FUNCTION__
|
||||
#else
|
||||
#define _LOG_LOCATION __FILE__, __LINE__
|
||||
#define _LOC_UNIT __FILE__
|
||||
#endif
|
||||
|
||||
/*
|
||||
* If logging is enabled, but LOG_ARGS is not defined, then
|
||||
* logging decoration will be shown, but the specified log string
|
||||
* and its variable arguments will not.
|
||||
* This decreases space requirements while still providing
|
||||
* logging information sufficient to locate code logging errors.
|
||||
*/
|
||||
|
||||
#ifndef LOG_ARGS
|
||||
#define LOG_ARGS 1
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* These macros provide the logging interface used by the VxWorks
|
||||
* applications. Each macro takes a category, which identifies which
|
||||
* application has made the call, and also a control string and multiple
|
||||
* arguments, which are in exactly the same format as printf().
|
||||
*
|
||||
* For each macro the current logging level of the specified category is
|
||||
* compared to the level that the macro name implies. If the current logging
|
||||
* level for the application is greater than or equal to the macro level
|
||||
* then the message will be logged, if it is not then the message will
|
||||
* be discarded. For example, if the current logging level of an application
|
||||
* is INFO_LEVEL then all the logging calls in that application will
|
||||
* succeed except the logging calls made using LOG_DEBUG.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef C99_VARIADIC_MACROS
|
||||
|
||||
#if (LOG_ENABLE_MASK & LOG_DEBUG_BIT)
|
||||
#if LOG_ARGS
|
||||
#define log_debug(cat, ...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_DEBUG, cat), _LOG_LOCATION, \
|
||||
__VA_ARGS__); \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define log_debug(cat, ...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_DEBUG, cat), _LOG_LOCATION, ""); \
|
||||
} while (FALSE)
|
||||
#endif /* LOG_ARGS */
|
||||
#else
|
||||
#define log_debug(cat, ...) do {} while (FALSE)
|
||||
#endif
|
||||
|
||||
#if (LOG_ENABLE_MASK & LOG_INFO_BIT)
|
||||
#if LOG_ARGS
|
||||
#define log_info(cat, ...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_INFO, cat), _LOG_LOCATION, \
|
||||
__VA_ARGS__); \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define log_info(cat, ...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_INFO, cat), _LOG_LOCATION, ""); \
|
||||
} while (FALSE)
|
||||
#endif /* LOG_ARGS */
|
||||
#else
|
||||
#define log_info(cat, ...) do {} while (FALSE)
|
||||
#endif
|
||||
|
||||
#if (LOG_ENABLE_MASK & LOG_NOTICE_BIT)
|
||||
#if LOG_ARGS
|
||||
#define log_notice(cat, ...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_NOTICE, cat), _LOG_LOCATION, \
|
||||
__VA_ARGS__); \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define log_notice(cat, ...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_NOTICE, cat), _LOG_LOCATION, "");\
|
||||
} while (FALSE)
|
||||
#endif /* LOG_ARGS */
|
||||
#else
|
||||
#define log_notice(cat, ...) do {} while (FALSE)
|
||||
#endif
|
||||
|
||||
#if (LOG_ENABLE_MASK & LOG_WARNING_BIT)
|
||||
#if LOG_ARGS
|
||||
#define log_warning(cat, ...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_WARNING, cat), _LOG_LOCATION, \
|
||||
__VA_ARGS__); \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define log_warning(cat, ...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_WARNING, cat), _LOG_LOCATION, ""); \
|
||||
} while (FALSE)
|
||||
#endif /* LOG_ARGS */
|
||||
#else
|
||||
#define log_warning(cat, ...) do {} while (FALSE)
|
||||
#endif
|
||||
|
||||
#if (LOG_ENABLE_MASK & LOG_ERR_BIT)
|
||||
#if LOG_ARGS
|
||||
#define log_err(cat, ...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_ERR, cat), _LOG_LOCATION, \
|
||||
__VA_ARGS__); \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define log_err(cat, ...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_ERR, cat), _LOG_LOCATION, ""); \
|
||||
} while (FALSE)
|
||||
#endif /* LOG_ARGS */
|
||||
#else
|
||||
#define log_err(cat, ...) do {} while (FALSE)
|
||||
#endif
|
||||
|
||||
#if (LOG_ENABLE_MASK & LOG_CRIT_BIT)
|
||||
#if LOG_ARGS
|
||||
#define log_crit(cat, ...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_CRIT, cat), _LOG_LOCATION, \
|
||||
__VA_ARGS__); \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define log_crit(cat, ...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_CRIT, cat), _LOG_LOCATION, ""); \
|
||||
} while (FALSE)
|
||||
#endif /* LOG_ARGS */
|
||||
#else
|
||||
#define log_crit(cat, ...) do {} while (FALSE)
|
||||
#endif
|
||||
|
||||
#if (LOG_ENABLE_MASK & LOG_ALERT_BIT)
|
||||
#if LOG_ARGS
|
||||
#define log_alert(cat, ...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_ALERT, cat), _LOG_LOCATION, \
|
||||
__VA_ARGS__); \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define log_alert(cat, ...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_ALERT, cat), _LOG_LOCATION, ""); \
|
||||
} while (FALSE)
|
||||
#endif /* LOG_ARGS */
|
||||
#else
|
||||
#define log_alert(cat, ...) do {} while (FALSE)
|
||||
#endif
|
||||
|
||||
#if (LOG_ENABLE_MASK & LOG_EMERG_BIT)
|
||||
#if LOG_ARGS
|
||||
#define log_emerg(cat, ...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_EMERG, cat), _LOG_LOCATION, \
|
||||
__VA_ARGS__); \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define log_emerg(cat, ...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_EMERG, cat), _LOG_LOCATION, ""); \
|
||||
} while (FALSE)
|
||||
#endif /* LOG_ARGS */
|
||||
#else
|
||||
#define log_emerg(cat, ...) do {} while (FALSE)
|
||||
#endif
|
||||
|
||||
#else /* !defined (C99_VARIADIC_MACROS) -> assume old GNU variadic syntax */
|
||||
|
||||
#if (LOG_ENABLE_MASK & LOG_DEBUG_BIT)
|
||||
#if LOG_ARGS
|
||||
#define log_debug(cat, fmt...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_DEBUG, cat), _LOG_LOCATION, fmt); \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define log_debug(cat, fmt...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_DEBUG, cat), _LOG_LOCATION, ""); \
|
||||
} while (FALSE)
|
||||
#endif /* LOG_ARGS */
|
||||
#else
|
||||
#define log_debug(cat, fmt...) do {} while (FALSE)
|
||||
#endif
|
||||
|
||||
#if (LOG_ENABLE_MASK & LOG_INFO_BIT)
|
||||
#if LOG_ARGS
|
||||
#define log_info(cat, fmt...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_INFO, cat), _LOG_LOCATION, fmt); \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define log_info(cat, fmt...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_INFO, cat), _LOG_LOCATION, ""); \
|
||||
} while (FALSE)
|
||||
#endif /* LOG_ARGS */
|
||||
#else
|
||||
#define log_info(cat, fmt...) do {} while (FALSE)
|
||||
#endif
|
||||
|
||||
#if (LOG_ENABLE_MASK & LOG_NOTICE_BIT)
|
||||
#if LOG_ARGS
|
||||
#define log_notice(cat, fmt...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_NOTICE, cat), _LOG_LOCATION, fmt); \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define log_notice(cat, fmt...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_NOTICE, cat), _LOG_LOCATION, ""); \
|
||||
} while (FALSE)
|
||||
#endif /* LOG_ARGS */
|
||||
#else
|
||||
#define log_notice(cat, fmt...) do {} while (FALSE)
|
||||
#endif
|
||||
|
||||
#if (LOG_ENABLE_MASK & LOG_WARNING_BIT)
|
||||
#if LOG_ARGS
|
||||
#define log_warning(cat, fmt...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_WARNING, cat), _LOG_LOCATION, fmt); \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define log_warning(cat, fmt...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_WARNING, cat), _LOG_LOCATION, ""); \
|
||||
} while (FALSE)
|
||||
#endif /* LOG_ARGS */
|
||||
#else
|
||||
#define log_warning(cat, fmt...) do {} while (FALSE)
|
||||
#endif
|
||||
|
||||
#if (LOG_ENABLE_MASK & LOG_ERR_BIT)
|
||||
#if LOG_ARGS
|
||||
#define log_err(cat, fmt...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_ERR, cat), _LOG_LOCATION, fmt); \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define log_err(cat, fmt...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_ERR, cat), _LOG_LOCATION, ""); \
|
||||
} while (FALSE)
|
||||
#endif /* LOG_ARGS */
|
||||
#else
|
||||
#define log_err(cat, fmt...) do {} while (FALSE)
|
||||
#endif
|
||||
|
||||
#if (LOG_ENABLE_MASK & LOG_CRIT_BIT)
|
||||
#if LOG_ARGS
|
||||
#define log_crit(cat, fmt...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_CRIT, cat), _LOG_LOCATION, fmt); \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define log_crit(cat, fmt...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_CRIT, cat), _LOG_LOCATION, ""); \
|
||||
} while (FALSE)
|
||||
#endif /* LOG_ARGS */
|
||||
#else
|
||||
#define log_crit(cat, fmt...) do {} while (FALSE)
|
||||
#endif
|
||||
|
||||
#if (LOG_ENABLE_MASK & LOG_ALERT_BIT)
|
||||
#if LOG_ARGS
|
||||
#define log_alert(cat, fmt...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_ALERT, cat), _LOG_LOCATION, fmt); \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define log_alert(cat, fmt...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_ALERT, cat), _LOG_LOCATION, ""); \
|
||||
} while (FALSE)
|
||||
#endif /* LOG_ARGS */
|
||||
#else
|
||||
#define log_alert(cat, fmt...) do {} while (FALSE)
|
||||
#endif
|
||||
|
||||
#if (LOG_ENABLE_MASK & LOG_EMERG_BIT)
|
||||
#if LOG_ARGS
|
||||
#define log_emerg(cat, fmt...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_EMERG, cat), _LOG_LOCATION, fmt); \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define log_emerg(cat, fmt...) \
|
||||
do { \
|
||||
_applLog (PRI_CAT (LOG_EMERG, cat), _LOG_LOCATION, ""); \
|
||||
} while (FALSE)
|
||||
#endif /* LOG_ARGS */
|
||||
#else
|
||||
#define log_emerg(cat, fmt...) do {} while (FALSE)
|
||||
#endif
|
||||
|
||||
#endif /* !defined (C99_VARIADIC_MACROS) */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* __INCapplUtilLibh */
|
||||
@@ -0,0 +1,65 @@
|
||||
/* arpLib.h - VxWorks ARP table manipulation header file */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01n,09jan12,h_x Move extern "C" after last header file include.
|
||||
01m,30aug05,tkf Cleanup for integration with IPNET.
|
||||
01l,09feb05,sar Move gtf include files per GTF code inspection of 10/26/2004
|
||||
01k,07feb05,vvv _KERNEL cleanup
|
||||
01j,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
||||
/main/vdt/base6_itn5_networking-int/1)
|
||||
01i,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01h,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01g,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01f,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01e,23oct03,rlm updated #includes for header re-org
|
||||
01d,08sep03,vvv merged from ACCORDION_BASE6_MERGE_BASELINE
|
||||
01c,09may03,vvv included vwModNum.h and in.h
|
||||
01b,07feb02,ppp re-enabling arpLibInit
|
||||
01a,14dec01,ppp ported from A.E. 1.1
|
||||
*/
|
||||
|
||||
#ifndef __INCarpLibh
|
||||
#define __INCarpLibh
|
||||
|
||||
#include <vwModNum.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
extern STATUS arpAdd (char *host, char *eaddr, int flags);
|
||||
extern STATUS arpDelete (char *host);
|
||||
extern STATUS arpResolve(char *targetAddr, char *pHwAddr, int numTries,int numTicks);
|
||||
extern void arpFlush (void);
|
||||
#else /* __STDC__ */
|
||||
extern STATUS arpAdd ();
|
||||
extern STATUS arpDelete ();
|
||||
extern STATUS arpResolve();
|
||||
extern void arpFlush();
|
||||
#endif /* __STDC__ */
|
||||
|
||||
/* error values */
|
||||
|
||||
#define S_arpLib_INVALID_ARGUMENT (M_arpLib | 1)
|
||||
#define S_arpLib_INVALID_HOST (M_arpLib | 2)
|
||||
#define S_arpLib_INVALID_ENET_ADDRESS (M_arpLib | 3)
|
||||
#define S_arpLib_INVALID_FLAG (M_arpLib | 4)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCarpLibh */
|
||||
@@ -0,0 +1,86 @@
|
||||
/* inet.h - Internet header */
|
||||
|
||||
/* Copyright 1986 - 2005 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983 Regents of the University of California.
|
||||
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms are permitted
|
||||
* provided that the above copyright notice and this paragraph are
|
||||
* duplicated in all such forms and that any documentation,
|
||||
* advertising materials, and other materials related to such
|
||||
* distribution and use acknowledge that the software was developed
|
||||
* by the University of California, Berkeley. The name of the
|
||||
* University may not be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* @(#)inet.h 5.2 (Berkeley) 6/27/88
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01r,09jan12,h_x Move extern "C" after last header file include.
|
||||
01q,22jun10,h_x Fix WIND00219346
|
||||
01p,27mar08,nlu WIND00108893
|
||||
01o,08nov06,kch Removed prototypes not specified in Posix specification.
|
||||
01n,29jun05,vvv added inet_ntop() and inet_pton() for RFC3542
|
||||
01m,04mar04,ann Removed #ifndef _KERNEL protection for including in.h
|
||||
as this file is required for defining struct in_addr.
|
||||
01l,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01k,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01j,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01i,13jun03,syy Added prototype for inet_ntoa_b() (SPR#88384)
|
||||
01h,09may03,vvv included in.h
|
||||
01g,26jul99,spm added ansi/c++ prototypes for routines (SPR #5307)
|
||||
01f,22sep92,rrr added support for c++
|
||||
01e,26may92,rrr the tree shuffle
|
||||
01d,04oct91,rrr passed through the ansification filter
|
||||
-changed copyright notice
|
||||
01c,05oct90,shl added copyright notice.
|
||||
added title.
|
||||
01b,16apr89,gae updated to new 4.3BSD.
|
||||
01a,22dec86,rdc created.
|
||||
*/
|
||||
|
||||
#ifndef __INCineth
|
||||
#define __INCineth
|
||||
|
||||
#include <netinet/in.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* External definitions for
|
||||
* functions in inet(3N)
|
||||
*/
|
||||
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
|
||||
extern uint32_t inet_addr (const char *);
|
||||
extern char * inet_ntoa (struct in_addr);
|
||||
extern const char * inet_ntop (int af, const void *src, char *dst,
|
||||
size_t size);
|
||||
extern int inet_pton (int af, const char *src, void *dst);
|
||||
|
||||
#else
|
||||
|
||||
uint32_t inet_addr();
|
||||
char *inet_ntoa();
|
||||
const char * inet_ntop ();
|
||||
int inet_pton ();
|
||||
|
||||
#endif /* __STDC__ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCafh */
|
||||
@@ -0,0 +1,30 @@
|
||||
/* cfgDefs.h - default configuration data set up support */
|
||||
|
||||
/* Copyright 2002 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01c,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01b,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01a,11jul02,spm automatic merge from version 1 of Accordion Munich branch:
|
||||
(01a,05jul02,wie written)
|
||||
*/
|
||||
|
||||
#ifndef __INCcfgDefsh
|
||||
#define __INCcfgDefsh
|
||||
|
||||
/* defines */
|
||||
|
||||
/* all default configuration data structures must have this structure at
|
||||
the beginning */
|
||||
|
||||
typedef struct cfg_data_hdr{
|
||||
int len;
|
||||
} CFG_DATA_HDR;
|
||||
|
||||
|
||||
/* macros */
|
||||
|
||||
|
||||
#endif /* __INCcfgDefsh */
|
||||
@@ -0,0 +1,60 @@
|
||||
/* qosIngressLib.h - definitions for qos support on ingress */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2005 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01b,22sep09 zhr Fixed WIND00180271
|
||||
01a,09aug05 niq created.
|
||||
*/
|
||||
|
||||
#ifndef __INCqosIngressLibh
|
||||
#define __INCqosIngressLibh
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* defines for the return value of the packet classification hook */
|
||||
|
||||
typedef enum
|
||||
{
|
||||
QOS_HOOK_FAIL = -1,
|
||||
QOS_DELIVER_PKT,
|
||||
QOS_DEFER_PKT,
|
||||
QOS_IGNORE_PKT
|
||||
} QOS_HOOK_RETVAL;
|
||||
|
||||
/* definition for the packet classification hook */
|
||||
typedef QOS_HOOK_RETVAL (*QOS_ING_HOOK) (END_OBJ *, M_BLK_ID *, int *);
|
||||
|
||||
|
||||
/* Configuration structure */
|
||||
|
||||
typedef struct _qosConfig
|
||||
{
|
||||
JOB_QUEUE_ID cfg_pJobQueue; /* Job queue to use */
|
||||
int cfg_jobQPri; /* Priority for the process job */
|
||||
int cfg_qosDefaultPri; /* Default pri for queuing packets */
|
||||
} QOS_CONFIG_PARAMS;
|
||||
|
||||
/* External APIs */
|
||||
|
||||
IMPORT STATUS qosIngressLibInit (void * cfgParams);
|
||||
IMPORT STATUS qosIngressHookSet (int unit, char * ifname, QOS_ING_HOOK hookRtn);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCqosIngressLibh */
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
/* etherLib.h - ethernet hook routines header */
|
||||
|
||||
/*
|
||||
* Copyright 1984-2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01g,09jan12,h_x Move extern "C" after last header file include.
|
||||
01f,19jun06,jpb Removed I960 check.
|
||||
01e,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01d,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01c,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01b,10jun03,vvv include netVersion.h
|
||||
01a,28sep02,ann provided only for backward compatibility
|
||||
*/
|
||||
|
||||
#ifndef __INCetherLibh
|
||||
#define __INCetherLibh
|
||||
|
||||
#include <netVersion.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* defints */
|
||||
typedef struct enet_hdr
|
||||
{
|
||||
char dst [6];
|
||||
char src [6];
|
||||
USHORT type;
|
||||
} ENET_HDR;
|
||||
|
||||
#define ENET_HDR_SIZ sizeof(ENET_HDR)
|
||||
#define ENET_HDR_REAL_SIZ 14
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCetherLibh */
|
||||
@@ -0,0 +1,80 @@
|
||||
/* etherMultiLib.h - definitions for the Ethernet multicast library */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1996-2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
02j,09jan12,h_x Move extern "C" after last header file include.
|
||||
02i,21aug06,kch cleaned up header files.
|
||||
02h,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
02g,04nov03,rlm Ran batch header path update for header re-org.
|
||||
02f,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
02e,23oct03,rlm updated #includes for header re-org
|
||||
02d,28mar02,ppp Making changes to be compatible with AE 1.1
|
||||
02c,03mar02,ham renamed dummyend.h to end.h
|
||||
02b,18sep01,ann correcting the inclusion of if_ether.h
|
||||
02a,18sep01,ann ported to clarinet from 01d AE1.1
|
||||
01d,12aug97,gnn cleaned up dependencies for multicast handling.
|
||||
01c,23oct96,gnn name changes to follow coding standards.
|
||||
01b,07may96,gnn added routines to handle non-IP based multicast
|
||||
addresses.
|
||||
Added list handling library.
|
||||
01a,15apr96,gnn written.
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
DESCRIPTION
|
||||
|
||||
This header file describes data structures and function prototypes for
|
||||
the ethernet multicast library.
|
||||
|
||||
INCLUDE FILES:
|
||||
*/
|
||||
|
||||
#ifndef __INCetherMultiLibh
|
||||
#define __INCetherMultiLibh
|
||||
|
||||
/* includes */
|
||||
#include <end.h>
|
||||
#include <netinet/if_ether.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* defints */
|
||||
|
||||
/* typedefs */
|
||||
|
||||
/* globals */
|
||||
|
||||
/* locals */
|
||||
|
||||
/* forward declarations */
|
||||
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
|
||||
extern int etherMultiAdd(LIST *pList, char* pAddress );
|
||||
extern int etherMultiDel(LIST* pList, char* pAddress);
|
||||
extern int etherMultiGet(LIST *pList, MULTI_TABLE* pTable);
|
||||
#else /* __STDC__ */
|
||||
|
||||
extern int etherMultiAdd();
|
||||
extern int etherMultiDel();
|
||||
extern int etherMultiGet();
|
||||
#endif /* __STDC__ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCetherMultiLibh */
|
||||
@@ -0,0 +1,183 @@
|
||||
/* ftp6Lib.h -File Transfer Protocol Client library header */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2001-2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01n,09jan12,h_x Move extern "C" after last header file include.
|
||||
01m,29sep10,h_x Add extern FUNCPTR _func_ftpLs.
|
||||
01l,12jul06,rpb defined FTP6_FORBID_LOCAL_OVERWRITE: Fix for SPR#117576 and
|
||||
Updated copyright.
|
||||
01k,20jun05,vvv added hostLib.h (SPR #110024)
|
||||
01j,31jul04,kc Modified FTP6_CLIENT_DATA structure to use char array for
|
||||
hostname.
|
||||
01i,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01h,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01g,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01f,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01e,06jun02,ant added ftp6LibInit ()
|
||||
01d,14feb02,ant added routines ftp6UserPassSet, ftp6UserPassPrint
|
||||
01c,01feb02,ant FTP6_PASSIVEMODE changed to FTP6_PASSIVEOFF. Passive
|
||||
mode is default.
|
||||
01b,15jan02,ant sockunion moved to apps/common/sockunion.h
|
||||
01a,14sep01,ant written
|
||||
|
||||
*/
|
||||
|
||||
#ifndef __INCftp6Libh
|
||||
#define __INCftp6Libh
|
||||
|
||||
/* includes */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <hostLib.h>
|
||||
#include <netinet/sockunion.h>
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
#include <sys/times.h>
|
||||
#else
|
||||
#include <time.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* defines */
|
||||
|
||||
#define FTP6_AFAMILY4 0x1
|
||||
#define FTP6_AFAMILY6 0x2
|
||||
#define FTP6_PASSIVEOFF 0x4
|
||||
#define FTP6_RESTRICTEDDATAP 0x8
|
||||
#define FTP6_TRYEPSV 0x10
|
||||
#define FTP6_FORBID_LOCAL_OVERWRITE 0x80
|
||||
|
||||
#ifndef __INCftpLibh
|
||||
|
||||
/* For FTP specification see RFC-765 */
|
||||
|
||||
/* Reply codes. */
|
||||
|
||||
#define FTP_PRELIM 1 /* positive preliminary */
|
||||
#define FTP_COMPLETE 2 /* positive completion */
|
||||
#define FTP_CONTINUE 3 /* positive intermediate */
|
||||
#define FTP_TRANSIENT 4 /* transient negative completion */
|
||||
#define FTP_ERROR 5 /* permanent negative completion */
|
||||
|
||||
#define FTP_NOACTION 550 /* requested action not taken */
|
||||
|
||||
/* Type codes */
|
||||
|
||||
#define TYPE_A 1 /* ASCII */
|
||||
#define TYPE_E 2 /* EBCDIC */
|
||||
#define TYPE_I 3 /* image */
|
||||
#define TYPE_L 4 /* local byte size */
|
||||
|
||||
/* Form codes */
|
||||
|
||||
#define FORM_N 1 /* non-print */
|
||||
#define FORM_T 2 /* telnet format effectors */
|
||||
#define FORM_C 3 /* carriage control (ASA) */
|
||||
|
||||
/* Structure codes */
|
||||
|
||||
#define STRU_F 1 /* file (no record structure) */
|
||||
#define STRU_R 2 /* record structure */
|
||||
#define STRU_P 3 /* page structure */
|
||||
|
||||
/* Mode types */
|
||||
|
||||
#define MODE_S 1 /* stream */
|
||||
#define MODE_B 2 /* block */
|
||||
#define MODE_C 3 /* compressed */
|
||||
|
||||
/* Record Tokens */
|
||||
|
||||
#define REC_ESC '\377' /* Record-mode Escape */
|
||||
#define REC_EOR '\001' /* Record-mode End-of-Record */
|
||||
#define REC_EOF '\002' /* Record-mode End-of-File */
|
||||
|
||||
/* Block Header */
|
||||
|
||||
#define BLK_EOR 0x80 /* Block is End-of-Record */
|
||||
#define BLK_EOF 0x40 /* Block is End-of-File */
|
||||
#define BLK_ERRORS 0x20 /* Block is suspected of containing errors */
|
||||
#define BLK_RESTART 0x10 /* Block is Restart Marker */
|
||||
|
||||
#define BLK_BYTECOUNT 2 /* Bytes in this block */
|
||||
|
||||
#endif /* __INCftpLibh */
|
||||
|
||||
/*typedef struct sockaddr_in SOCKADDR_IN;*/
|
||||
|
||||
/* typedefs */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
union sockunion myctladdr; /* Client address */
|
||||
union sockunion hisctladdr; /* peer address */
|
||||
union sockunion data_addr; /* data connection address*/
|
||||
ulong_t options;
|
||||
char hostname[MAXHOSTNAMELEN]; /* remote host name */
|
||||
int code; /* code of reply */
|
||||
char pasv[BUFSIZ]; /* reply string of PASV command*/
|
||||
char reply_string[BUFSIZ]; /* first line of previous reply */
|
||||
} FTP6_CLIENT_DATA;
|
||||
|
||||
/* externals */
|
||||
|
||||
extern BOOL ftpErrorSupress; /* TRUE = don't print error messages */
|
||||
extern FUNCPTR _func_ftpLs;
|
||||
|
||||
/* function declarations */
|
||||
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
|
||||
extern STATUS ftp6Login (int ctrlSock, FTP6_CLIENT_DATA *pData, char *user, char *passwd,
|
||||
char *account);
|
||||
extern STATUS ftp6Xfer (char *host, char *user, char *passwd, char *acct,
|
||||
char *cmd, char *dirname, char *filename,
|
||||
int *pCtrlSock, int *pDataSock, FTP6_CLIENT_DATA **pData, ulong_t options);
|
||||
extern int ftp6Command (int ctrlSock, FTP6_CLIENT_DATA *pData, const char *fmt, ...);
|
||||
extern int ftp6DataConnGet (int dataSock, FTP6_CLIENT_DATA *pData);
|
||||
extern int ftp6DataConnInit (int, FTP6_CLIENT_DATA *pData);
|
||||
extern int ftp6Hookup (char *host, FTP6_CLIENT_DATA *pData);
|
||||
extern int ftp6ReplyGet (int ctrlSock, FTP6_CLIENT_DATA *pData, BOOL expecteof);
|
||||
|
||||
extern STATUS ftp6Ls (char *dirName, ulong_t options);
|
||||
extern STATUS ftp6FileGet (char *remDirName, char *locDirName, ulong_t options);
|
||||
extern time_t ftp6RemoteModTime (int ctrlSock, FTP6_CLIENT_DATA *pData, const char *file);
|
||||
extern STATUS ftp6FileSend (char *locDirName, char *remDirName, ulong_t options);
|
||||
extern STATUS ftp6LibInit (long timeout);
|
||||
|
||||
#else /* __STDC__ */
|
||||
|
||||
extern STATUS ftp6Login ();
|
||||
extern STATUS ftp6Xfer ();
|
||||
extern int ftp6Command ();
|
||||
extern int ftp6DataConnGet ();
|
||||
extern int ftp6DataConnInit ();
|
||||
extern int ftp6Hookup ();
|
||||
extern int ftp6ReplyGet ();
|
||||
extern STATUS ftp6Ls ();
|
||||
extern STATUS ftp6FileGet ();
|
||||
extern time_t ftp6RemoteModTime ();
|
||||
extern STATUS ftp6FileSend ();
|
||||
extern STATUS ftp6LibInit ();
|
||||
|
||||
#endif /* __STDC__ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCftp6Libh */
|
||||
@@ -0,0 +1,219 @@
|
||||
/* ftpLib.h - arpa File Transfer Protocol library header */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1986-1987, 1990-1992, 2002-2003,
|
||||
* 2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01y,09jan12,h_x Move extern "C" after last header file include.
|
||||
01x,29sep10,h_x Add extern FUNCPTR _func_ftpLs
|
||||
01w,27jul09,zhr 64bits adatation
|
||||
01v,22oct08,spw Fix for WIND00135072
|
||||
01u,16feb06,mwv Add ftpLibInit, and ftpLs (SPR 117425)
|
||||
01t,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01s,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01r,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01q,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01p,10jun03,vvv include netVersion.h
|
||||
01o,09may03,vvv included vxWorks.h and vwModNum.h
|
||||
01n,06jun02,elr Change return for ftpTransientFatalInstall()
|
||||
01m,23may02,elr added temporary global flag to bypass PASSIVE mode
|
||||
01l,22may02,elr Changed API of ftpCommandEnhanced() and ftpReplyGetEnhanced()
|
||||
for PASSIVE mode support
|
||||
Added function ftpDataConnInitPassiveMode ()
|
||||
Added ftpLibDebugOptionsSet()
|
||||
01k,12mar02,elr Added error return codes
|
||||
Replaced ftpErrorSuppress with ftplDebug (SPR 71496)
|
||||
01j,22sep92,rrr added support for c++
|
||||
01i,11sep92,jmm added external definition for ftpErrorSupress (for spr #1257)
|
||||
01h,04jul92,jcf cleaned up.
|
||||
01g,26may92,rrr the tree shuffle
|
||||
01f,04oct91,rrr passed through the ansification filter
|
||||
-fixed #else and #endif
|
||||
-changed copyright notice
|
||||
01e,19oct90,shl changed ftpCommand() to use variable length argument list.
|
||||
01d,05oct90,shl added ANSI function prototypes.
|
||||
made #endif ANSI style.
|
||||
added copyright notice.
|
||||
01c,07aug90,shl added INCftpLibh to #endif.
|
||||
01b,20mar87,dnw prepended FTP_ to reply codes.
|
||||
01a,07nov86,dnw written
|
||||
*/
|
||||
|
||||
#ifndef __INCftpLibh
|
||||
#define __INCftpLibh
|
||||
|
||||
#include <vxWorks.h>
|
||||
#include <vwModNum.h>
|
||||
#include <netVersion.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* For debugging options */
|
||||
|
||||
#define FTPL_DEBUG_OFF 0 /* No debugging messages */
|
||||
#define FTPL_DEBUG_INCOMING 1 /* Show all incoming responses */
|
||||
#define FTPL_DEBUG_OUTGOING 2 /* Show all outgoing commands */
|
||||
#define FTPL_DEBUG_ERRORS 4 /* Display all errors and warnings that occur */
|
||||
|
||||
/* For FTP specification see RFC-765 */
|
||||
|
||||
/* Reply codes for ftpReplyGet(). (Major numbers 1xx-5xx) */
|
||||
|
||||
#define FTP_PRELIM 1 /* positive preliminary */
|
||||
#define FTP_COMPLETE 2 /* positive completion */
|
||||
#define FTP_CONTINUE 3 /* positive intermediate */
|
||||
#define FTP_TRANSIENT 4 /* transient negative completion */
|
||||
#define FTP_ERROR 5 /* permanent negative completion */
|
||||
|
||||
/* Detailed reply codes for ftpReplyGetEnhanced() */
|
||||
|
||||
#define FTP_SERVICE_CLOSING 221
|
||||
#define FTP_PASSIVE_REPLY 227 /* Command not supported */
|
||||
#define FTP_COMMAND_NOT_SUPPORTED 502 /* Command not supported */
|
||||
#define FTP_NOACTION 550 /* requested action not taken */
|
||||
|
||||
/* Type codes */
|
||||
|
||||
#define TYPE_A 1 /* ASCII */
|
||||
#define TYPE_E 2 /* EBCDIC */
|
||||
#define TYPE_I 3 /* image */
|
||||
#define TYPE_L 4 /* local byte size */
|
||||
|
||||
/* Form codes */
|
||||
|
||||
#define FORM_N 1 /* non-print */
|
||||
#define FORM_T 2 /* telnet format effectors */
|
||||
#define FORM_C 3 /* carriage control (ASA) */
|
||||
|
||||
/* Structure codes */
|
||||
|
||||
#define STRU_F 1 /* file (no record structure) */
|
||||
#define STRU_R 2 /* record structure */
|
||||
#define STRU_P 3 /* page structure */
|
||||
|
||||
/* Mode types */
|
||||
|
||||
#define MODE_S 1 /* stream */
|
||||
#define MODE_B 2 /* block */
|
||||
#define MODE_C 3 /* compressed */
|
||||
|
||||
/* Record Tokens */
|
||||
|
||||
#define REC_ESC '\377' /* Record-mode Escape */
|
||||
#define REC_EOR '\001' /* Record-mode End-of-Record */
|
||||
#define REC_EOF '\002' /* Record-mode End-of-File */
|
||||
|
||||
/* Block Header */
|
||||
|
||||
#define BLK_EOR 0x80 /* Block is End-of-Record */
|
||||
#define BLK_EOF 0x40 /* Block is End-of-File */
|
||||
#define BLK_ERRORS 0x20 /* Block is suspected of containing errors */
|
||||
#define BLK_RESTART 0x10 /* Block is Restart Marker */
|
||||
|
||||
#define BLK_BYTECOUNT 2 /* Bytes in this block */
|
||||
|
||||
/* error values */
|
||||
|
||||
/*
|
||||
* Note that for unexpected responses, the low-order byte of the eror code
|
||||
* contains the reponse code.
|
||||
*/
|
||||
#define S_ftpLib_ILLEGAL_VALUE (M_ftpLib | 1)
|
||||
#define S_ftpLib_TRANSIENT_RETRY_LIMIT_EXCEEDED (M_ftpLib | 2)
|
||||
#define S_ftpLib_FATAL_TRANSIENT_RESPONSE (M_ftpLib | 3)
|
||||
|
||||
#define S_ftpLib_REMOTE_SERVER_STATUS_221 (M_ftpLib | 221)
|
||||
#define S_ftpLib_REMOTE_SERVER_STATUS_226 (M_ftpLib | 226)
|
||||
#define S_ftpLib_REMOTE_SERVER_STATUS_257 (M_ftpLib | 257)
|
||||
#define S_ftpLib_REMOTE_SERVER_ERROR_422 (M_ftpLib | 422)
|
||||
#define S_ftpLib_REMOTE_SERVER_ERROR_425 (M_ftpLib | 425)
|
||||
#define S_ftpLib_REMOTE_SERVER_ERROR_450 (M_ftpLib | 450)
|
||||
#define S_ftpLib_REMOTE_SERVER_ERROR_451 (M_ftpLib | 451)
|
||||
#define S_ftpLib_REMOTE_SERVER_ERROR_452 (M_ftpLib | 452)
|
||||
#define S_ftpLib_REMOTE_SERVER_ERROR_500 (M_ftpLib | 500)
|
||||
#define S_ftpLib_REMOTE_SERVER_ERROR_501 (M_ftpLib | 501)
|
||||
#define S_ftpLib_REMOTE_SERVER_ERROR_502 (M_ftpLib | 502)
|
||||
#define S_ftpLib_REMOTE_SERVER_ERROR_503 (M_ftpLib | 503)
|
||||
#define S_ftpLib_REMOTE_SERVER_ERROR_504 (M_ftpLib | 504)
|
||||
#define S_ftpLib_REMOTE_SERVER_ERROR_520 (M_ftpLib | 520)
|
||||
#define S_ftpLib_REMOTE_SERVER_ERROR_521 (M_ftpLib | 521)
|
||||
#define S_ftpLib_REMOTE_SERVER_ERROR_530 (M_ftpLib | 530)
|
||||
#define S_ftpLib_REMOTE_SERVER_ERROR_550 (M_ftpLib | 550)
|
||||
#define S_ftpLib_REMOTE_SERVER_ERROR_551 (M_ftpLib | 551)
|
||||
#define S_ftpLib_REMOTE_SERVER_ERROR_552 (M_ftpLib | 552)
|
||||
#define S_ftpLib_REMOTE_SERVER_ERROR_553 (M_ftpLib | 553)
|
||||
#define S_ftpLib_REMOTE_SERVER_ERROR_554 (M_ftpLib | 554)
|
||||
|
||||
/* externals */
|
||||
|
||||
extern BOOL ftplDebug; /* print error message, defined in funcBind.c */
|
||||
extern FUNCPTR _func_ftpLs;
|
||||
|
||||
/* disable passive mode - XXX this will be removed in the next release XXX */
|
||||
|
||||
extern BOOL ftplPasvModeDisable;
|
||||
|
||||
/* function declarations */
|
||||
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
|
||||
|
||||
extern STATUS ftpLibInit (long timeout);
|
||||
extern STATUS ftpLogin (int ctrlSock, char *user, char *passwd, char *account);
|
||||
extern STATUS ftpLs (char *dirName);
|
||||
extern STATUS ftpXfer (char *host, char *user, char *passwd, char *acct,
|
||||
char *cmd, char *dirname, char *filename,
|
||||
int *pCtrlSock, int *pDataSock);
|
||||
extern int ftpCommand (int ctrlSock, char *fmt, _Vx_usr_arg_t arg1, _Vx_usr_arg_t arg2, _Vx_usr_arg_t arg3, _Vx_usr_arg_t arg4, _Vx_usr_arg_t arg5, _Vx_usr_arg_t arg6);
|
||||
|
||||
extern int ftpCommandEnhanced (int ctrlSock, char *fmt, _Vx_usr_arg_t arg1, _Vx_usr_arg_t arg2, _Vx_usr_arg_t arg3, _Vx_usr_arg_t arg4, _Vx_usr_arg_t arg5, _Vx_usr_arg_t arg6, char *replyString, int replyStringLength);
|
||||
|
||||
extern int ftpDataConnGet (int dataSock);
|
||||
extern int ftpDataConnInit (int ctrlSock);
|
||||
extern int ftpDataConnInitPassiveMode (int ctrlSock);
|
||||
extern int ftpHookup (char *host);
|
||||
extern void ftpLibDebugOptionsSet (UINT32 options);
|
||||
extern int ftpReplyGet (int ctrlSock, BOOL expecteof);
|
||||
extern int ftpReplyGetEnhanced (int ctrlSock, BOOL expecteof, char *replyString,
|
||||
int replyStringLength);
|
||||
extern STATUS ftpTransientConfigSet (UINT32 maxRetryCount, UINT32 retryInterval);
|
||||
extern STATUS ftpTransientConfigGet (UINT32 *maxRetryCount, UINT32 *retryInterval);
|
||||
extern STATUS ftpTransientFatalInstall (FUNCPTR configlette);
|
||||
#else /* __STDC__ */
|
||||
|
||||
extern STATUS ftpLibInit ();
|
||||
extern STATUS ftpLogin ();
|
||||
extern STATUS ftpLs ();
|
||||
extern STATUS ftpXfer ();
|
||||
extern int ftpCommand ();
|
||||
extern int ftpCommandEnhanced ();
|
||||
extern int ftpDataConnGet ();
|
||||
extern int ftpDataConnInit ();
|
||||
extern int ftpDataConnInitPassiveMode ();
|
||||
extern int ftpHookup ();
|
||||
extern void ftpLibDebugOptionsSet ();
|
||||
extern int ftpReplyGet ();
|
||||
extern int ftpReplyGetEnhanced ();
|
||||
extern STATUS ftpPrelimConfigSet ();
|
||||
extern STATUS ftpTransientConfigSet ();
|
||||
extern STATUS ftpLogin ();
|
||||
extern STATUS ftpXfer ();
|
||||
extern STATUS ftpTransientFatalInstall ();
|
||||
|
||||
#endif /* __STDC__ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCftpLibh */
|
||||
@@ -0,0 +1,61 @@
|
||||
/* ftpd6Lib.h - header file for ftpd6Lib.c */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2001-2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01l,09jan12,h_x Move extern "C" after last header file include.
|
||||
01k,27dec06,kch Removed references to the obsolete coreip virtual stack.
|
||||
01j,15dec04,syy Fixed SPR#104035: add support for guest login
|
||||
01i,20aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01h,12apr04,spm removed virtual stack #include (already in source code)
|
||||
01g,15mar04,rp merged from orion
|
||||
01f,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01e,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01d,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01c,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01b,10jun03,vvv include netVersion.h
|
||||
01a,14sep01,ant written
|
||||
*/
|
||||
|
||||
#ifndef __INCftpd6Libh
|
||||
#define __INCftpd6Libh
|
||||
|
||||
#include <netVersion.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* function declarations */
|
||||
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
|
||||
extern STATUS ftpd6Init (char *, FUNCPTR, int stackSize);
|
||||
extern STATUS ftpd6Delete (void);
|
||||
extern void ftpd6EnableSecurity(void);
|
||||
extern void ftpd6DisableSecurity(void);
|
||||
extern STATUS ftpd6GuestIdSet (const char *, u_int);
|
||||
extern STATUS ftpd6GuestAllow (const char *, const char *, BOOL);
|
||||
|
||||
#else /* __STDC__ */
|
||||
|
||||
extern STATUS ftpd6Init ();
|
||||
extern void ftpd6Delete ();
|
||||
extern void ftpd6EnableSecurity();
|
||||
extern void ftpd6DisableSecurity();
|
||||
|
||||
#endif /* __STDC__ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCftpd6Libh */
|
||||
@@ -0,0 +1,263 @@
|
||||
/* hostLib.h - public header for hostLib files */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1984-2007 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
02n,09jan12,h_x Move extern "C" after last header file include.
|
||||
02m,23aug07,tkf Add scopeStr field to ADDR6 as part of the fix for
|
||||
CQ:WIND00102553
|
||||
02l,07jun07,tkf Remove #ifdef INET from around ADDR4 (WIND00095796)
|
||||
02k,24apr07,tkf Add IPv6-Only build support.
|
||||
02j,27feb07,dlk Remove freehostent() prototype. Add HOSTENT_ALLOC_* defines.
|
||||
02i,12feb07,dlk Add rtpHostLibInit() prototype.
|
||||
02h,21nov06,tlu Remove errCode from structure addrinfoArgs
|
||||
02g,08nov06,tkf Corrected misplacement of freehostent declaration. Also added
|
||||
wrapperHostLib.h for backwards compatibility.
|
||||
02f,16oct06,kch Added addrinfoArgs definition for passing arguments to sysctl.
|
||||
02e,28sep06,kch Restore freehostent() prototype.
|
||||
02d,16sep06,tlu Remove getservbyport(), getservbyname(), getnameinfo(),
|
||||
getaddrinfo(), gethostbyaddr(), gethostbyname(),
|
||||
freeaddrinfo(), freehostent(), gethostname(), sethostname(),
|
||||
gai_strerror(), those function prototyping were moved to
|
||||
wrapper/wrapperHostLib.h
|
||||
02c,24aug06,tkf Remove gethostbynameInit() and gethostbyaddrInit()
|
||||
prototypes.
|
||||
02b,19jun06,jpb Removed I960 check.
|
||||
02a,28jun05,vvv updated gethostbynameInit() prototype
|
||||
01z,07feb05,vvv _KERNEL cleanup
|
||||
01y,14jan05,vvv osdep.h cleanup
|
||||
01x,22sep04,dlk Added declaration for hostTblSetup().
|
||||
01w,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01v,07dec03,vvv moved definition of struct hostArgs from hostLib.c; moved
|
||||
definition of getnameinfoArgs from getnameinfo.c
|
||||
01u,24nov03,vvv updated for RTP support
|
||||
01t,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01s,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01r,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01q,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01p,23oct03,rlm updated #includes for header re-org
|
||||
01o,06aug03,nee Accordion Base6 merge from ACCORDION_BASE6_MERGE_BASELINE
|
||||
label
|
||||
01n,09may03,vvv included vwModNum.h and in6.h
|
||||
01m,20feb03,ann added prototypes for gethostbyaddrInit and gethostbynameInit
|
||||
01l,06sep01,hgo modifications and extensions for IPv6
|
||||
01k,20aug97,jag added function declations for hostTblSearchByAddr(),
|
||||
hostTblSearchByName() (SPR #9175)
|
||||
01j,19may97,spm added S_hostLib_INVALID_PARAMETER error value
|
||||
01i,22sep92,rrr added support for c++
|
||||
01h,27jul92,elh Moved hostShow to netShow.
|
||||
01g,04jul92,jcf cleaned up.
|
||||
01f,26may92,rrr the tree shuffle
|
||||
01e,04oct91,rrr passed through the ansification filter
|
||||
-fixed #else and #endif
|
||||
-changed VOID to void
|
||||
-changed copyright notice
|
||||
01d,05oct90,shl added ANSI function prototypes.
|
||||
made #endif ANSI style.
|
||||
added copyright notice.
|
||||
01c,13apr89,shl added MAXHOSTNAMELEN.
|
||||
01b,04jun88,gae changed S_remLib_* to S_hostLib_*.
|
||||
01a,28may88,dnw extracted from remLib.h
|
||||
*/
|
||||
|
||||
#ifndef __INChostLibh
|
||||
#define __INChostLibh
|
||||
|
||||
#include <wrapper/wrapperHostLib.h>
|
||||
#include <netinet/in.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netdb.h>
|
||||
#include <lstLib.h>
|
||||
#include <vwModNum.h>
|
||||
#include <net/if.h>
|
||||
|
||||
#ifdef INET6
|
||||
#include <netinet6/in6.h>
|
||||
#endif /* INET6 */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef MAXHOSTNAMELEN
|
||||
#define MAXHOSTNAMELEN 64 /* XXX already defined in param.h */
|
||||
#endif
|
||||
|
||||
#define HOST_INET6_ADDR_LEN (USR_NET_IP6ADDR_LEN + IFNAMESIZ)
|
||||
|
||||
/* status messages */
|
||||
|
||||
#define S_hostLib_UNKNOWN_HOST (M_hostLib | 1)
|
||||
#define S_hostLib_HOST_ALREADY_ENTERED (M_hostLib | 2)
|
||||
#define S_hostLib_INVALID_PARAMETER (M_hostLib | 3)
|
||||
/* former h_errno values */
|
||||
#define S_hostLib_NETDB_INTERNAL (M_hostLib | 4) /* see errno */
|
||||
/* Authoritative Answer Host not found */
|
||||
#define S_hostLib_HOST_NOT_FOUND (M_hostLib | 5)
|
||||
/* Non-Authoritative Host not found, or SERVERFAIL */
|
||||
#define S_hostLib_TRY_AGAIN (M_hostLib | 6)
|
||||
/* Valid name, no data record of requested type */
|
||||
#define S_hostLib_NO_RECOVERY (M_hostLib | 7)
|
||||
|
||||
/* Definitions for sysctl nodes under CTL_NET */
|
||||
|
||||
#define HOSTLIB 3
|
||||
#define NAMEINFO 4
|
||||
#define ADDRINFO 5
|
||||
|
||||
/* Options for the host library sysctl handler */
|
||||
|
||||
#define HOSTADD 1
|
||||
#define HOSTDELETE 2
|
||||
#define HOSTADDRSEARCH 3
|
||||
#define HOSTNAMESEARCH 4
|
||||
#define HOSTNAMESEARCH2 5
|
||||
|
||||
/* Current hostentAlloc() limits: */
|
||||
|
||||
/* space allocated for address in hostent::h_addr_list[0] */
|
||||
#define HOSTENT_ALLOC_MAXADDRS 24
|
||||
/* space allocated for name in hostent::h_name */
|
||||
#define HOSTENT_ALLOC_MAXNAME (NI_MAXHOST + 1)
|
||||
/* Reentrant implementation, requiring hostentFree() of result? */
|
||||
#define GETHOSTBYNAME_REENTRANT
|
||||
#define GETHOSTBYADDR_REENTRANT
|
||||
|
||||
/*
|
||||
* Structure shared by hostAdd, hostDelete and hostTblSearchByName2
|
||||
* for passing arguments to sysctl.
|
||||
*/
|
||||
|
||||
struct hostArgs
|
||||
{
|
||||
char * hostName;
|
||||
int hostNameLen;
|
||||
char * hostAddr;
|
||||
int hostAddrLen;
|
||||
const struct addrinfo * pHints;
|
||||
};
|
||||
|
||||
/*
|
||||
* This structure is used to pass the getnameinfo arguments from user-space
|
||||
* to the kernel using sysctl.
|
||||
*/
|
||||
|
||||
struct nameinfoArgs
|
||||
{
|
||||
const struct sockaddr * sa;
|
||||
socklen_t salen;
|
||||
char * host;
|
||||
size_t hostlen;
|
||||
char * serv;
|
||||
size_t servlen;
|
||||
int flags;
|
||||
};
|
||||
|
||||
/*
|
||||
* This structure is used to pass the getaddrinfo arguments from user-space
|
||||
* to the kernel using sysctl.
|
||||
*/
|
||||
|
||||
struct addrinfoArgs
|
||||
{
|
||||
const char * hostname;
|
||||
int hostnamelen;
|
||||
const char * servname;
|
||||
int servnamelen;
|
||||
const struct addrinfo * hints;
|
||||
};
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
/* typdef's for hosttable access */
|
||||
|
||||
typedef struct hostname_struct
|
||||
{
|
||||
struct hostname_struct *link;
|
||||
char *name;
|
||||
} HOSTNAME;
|
||||
|
||||
typedef struct addr4_struct
|
||||
{
|
||||
struct in_addr addr;
|
||||
} ADDR4;
|
||||
|
||||
#ifdef INET6
|
||||
typedef struct addr6_struct
|
||||
{
|
||||
struct in6_addr addr;
|
||||
uint32_t scopeId;
|
||||
char scopeStr [IFNAMSIZ];
|
||||
} ADDR6;
|
||||
#endif
|
||||
|
||||
typedef union addr_union
|
||||
{
|
||||
ADDR4 addr4;
|
||||
#ifdef INET6
|
||||
ADDR6 addr6;
|
||||
#endif
|
||||
} ADDRU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NODE node;
|
||||
HOSTNAME hostName;
|
||||
int family; /* AF_INET or AF_INET6 */
|
||||
ADDRU netAddr; /* ADDR4 or ADDR6 */
|
||||
} HOSTENTRY;
|
||||
#endif /* _WRS_KERNEL */
|
||||
|
||||
/* function declarations */
|
||||
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
|
||||
extern STATUS hostAdd (char *hostName, char *hostAddr);
|
||||
extern STATUS hostDelete (char *name, char *addr);
|
||||
extern STATUS hostGetByAddr (int addr, char *name);
|
||||
extern int hostGetByName (char *name);
|
||||
extern struct hostent * hostentAlloc (void);
|
||||
extern void hostentFree (struct hostent *);
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
extern STATUS hostTblInit (void);
|
||||
extern STATUS hostTblSetup (char * pRemoteName, char * pRemoteAddr,
|
||||
char * pLocalName, char * pLocalAddr);
|
||||
extern int hostTblSearchByName (char *name);
|
||||
extern STATUS hostTblSearchByAddr (int addr, char *name);
|
||||
extern STATUS rtpHostLibInit (void);
|
||||
#endif /* _WRS_KERNEL */
|
||||
|
||||
#else /* __STDC__ */
|
||||
|
||||
extern STATUS hostAdd ();
|
||||
extern STATUS hostDelete ();
|
||||
extern STATUS hostGetByAddr ();
|
||||
extern int hostGetByName ();
|
||||
extern struct hostent * hostentAlloc ();
|
||||
extern void hostentFree ();
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
extern STATUS hostTblInit ();
|
||||
extern STATUS hostTblSetup ();
|
||||
extern int hostTblSearchByName ();
|
||||
extern STATUS hostTblSearchByAddr ();
|
||||
extern STATUS rtpHostLibInit ();
|
||||
#endif /* _WRS_KERNEL */
|
||||
|
||||
#endif /* __STDC__ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INChostLibh */
|
||||
@@ -0,0 +1,15 @@
|
||||
/* Copyright 2011 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* <ifaddrs.h> the proper location for ifaddrs.h according to
|
||||
* POSIX.1-2001. VxWorks has historically defined getifaddrs() and
|
||||
* freeifaddrs() in <net/ifaddrs.h>. Both locations is available to
|
||||
* ensure backwards compatibility.
|
||||
*/
|
||||
|
||||
#ifndef _IFADDRS_H_
|
||||
#define _IFADDRS_H_
|
||||
|
||||
#include "net/ifaddrs.h"
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Copyright 1984-2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01f,19jun06,jpb Updated for POSIX namespace conformance.
|
||||
Changed C preprocessor macro CPU_FAMILY to _VX_CPU_FAMILY.
|
||||
01e,14jan05,vvv osdep.h cleanup
|
||||
01d,23sep04,kc Added coldfire arch support.
|
||||
01c,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
||||
/main/vdt/base6_itn5-int/2)
|
||||
01b,08dec03,dat fix CPU_FAMILY names
|
||||
01a,04dec03,xli creation
|
||||
*/
|
||||
|
||||
/*
|
||||
DESCRIPTION
|
||||
This file is a wrapper of in_cksum.h which include specific in_cksum.h
|
||||
depend on the CPU_FAMILY
|
||||
*/
|
||||
|
||||
#ifndef _IN_CKSUM_H_
|
||||
#define _IN_CKSUM_H_
|
||||
|
||||
#include <vxWorks.h>
|
||||
|
||||
/* The following includes are from target/h/arch */
|
||||
|
||||
#if(_VX_CPU_FAMILY==_VX_ARM)
|
||||
#include <arch/arm/in_cksum.h>
|
||||
|
||||
#elif (_VX_CPU_FAMILY==_VX_MIPS)
|
||||
#include <arch/mips/in_cksum.h>
|
||||
|
||||
#elif (_VX_CPU_FAMILY==_VX_I80X86)
|
||||
#include <arch/i86/in_cksum.h>
|
||||
|
||||
#elif (_VX_CPU_FAMILY==_VX_PPC)
|
||||
#include <arch/ppc/in_cksum.h>
|
||||
|
||||
#elif (_VX_CPU_FAMILY==_VX_SH)
|
||||
#include <arch/sh/in_cksum.h>
|
||||
|
||||
#elif (_VX_CPU_FAMILY==_VX_COLDFIRE)
|
||||
#include <arch/coldfire/in_cksum.h>
|
||||
|
||||
#elif (_VX_CPU_FAMILY==_VX_SIMNT)
|
||||
#include <arch/simnt/in_cksum.h>
|
||||
|
||||
#elif (_VX_CPU_FAMILY==_VX_SIMLINUX)
|
||||
#include <arch/simlinux/in_cksum.h>
|
||||
|
||||
#elif (_VX_CPU_FAMILY==_VX_SIMSPARCSOLARIS)
|
||||
#include <arch/simsolaris/in_cksum.h>
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,108 @@
|
||||
/* inetLib.h - header for Internet address manipulation routines */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1987-2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
02a,17aug12,h_x Fix WIND00370053
|
||||
01z,09jan12,h_x Move extern "C" after last header file include.
|
||||
01y,08nov06,kch Removed prototypes already declared in arpa/inet.h.
|
||||
01x,07feb05,vvv _KERNEL cleanup
|
||||
01w,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01v,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
||||
/main/vdt/base6_itn5_networking-int/1)
|
||||
01u,25nov03,ppp added a comment based on code review
|
||||
01t,21nov03,ppp rtp work
|
||||
01s,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01r,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01q,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01p,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01o,23oct03,rlm updated #includes for header re-org
|
||||
01n,21apr03,ppp vwModNum.h should be picked up from target/h
|
||||
01m,14sep01,hgo Added definition for inet_ntop and inet_pton
|
||||
IPv6 support
|
||||
01l,16dec93,jag Added definition for inet_aton.
|
||||
01k,09aug93,elh removed definitions of inet_addr, inet_ntoa,
|
||||
inet_makeaddr, and inet_network (SPR 2268).
|
||||
01j,22sep92,rrr added support for c++
|
||||
01i,04jul92,jcf cleaned up.
|
||||
01h,26may92,rrr the tree shuffle
|
||||
-changed includes to have absolute path from h/
|
||||
01g,04oct91,rrr passed through the ansification filter
|
||||
-changed includes to have absolute path from h/
|
||||
-changed VOID to void
|
||||
-changed copyright notice
|
||||
01f,19oct90,shl added #include <netinet/in.h>.
|
||||
01e,05oct90,shl added ANSI function prototypes.
|
||||
made #endif ANSI style.
|
||||
added copyright notice.
|
||||
01d,10aug90,dnw added declaration of inet_ntoa_b().
|
||||
01c,24mar88,ecs added include of types.h.
|
||||
01b,15dec87,gae added INET_ADDR_LEN; used IMPORTs on function decl's.
|
||||
01a,01nov87,llk written
|
||||
*/
|
||||
|
||||
#ifndef __INCinetLibh
|
||||
#define __INCinetLibh
|
||||
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <sys/types.h>
|
||||
#include <vwModNum.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* status codes */
|
||||
|
||||
#define S_inetLib_ILLEGAL_INTERNET_ADDRESS (M_inetLib | 1)
|
||||
#define S_inetLib_ILLEGAL_NETWORK_NUMBER (M_inetLib | 2)
|
||||
|
||||
/* length of ASCII represention of inet addresses, eg. "90.0.0.0" */
|
||||
|
||||
#define INET_ADDR_LEN 18
|
||||
#define INET6_ADDR_LEN 46
|
||||
|
||||
#define INETLIB 5 /* first available node */
|
||||
|
||||
/* function declarations */
|
||||
|
||||
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
|
||||
extern int inet_lnaof (int inetAddress);
|
||||
extern int inet_netof (struct in_addr inetAddress);
|
||||
extern unsigned long inet_network (char *);
|
||||
extern struct in_addr inet_makeaddr (int, int);
|
||||
extern void inet_makeaddr_b (int netAddr, int hostAddr,
|
||||
struct in_addr *pInetAddr);
|
||||
extern void inet_ntoa_b (struct in_addr inetAddress, char *pString);
|
||||
extern int inet_aton (const char * pString, struct in_addr * inetAddress);
|
||||
extern void inet_netof_string(char *inetString, char *netString);
|
||||
|
||||
#else /* __STDC__ */
|
||||
|
||||
extern int inet_lnaof ();
|
||||
extern int inet_netof ();
|
||||
extern unsigned long inet_network ();
|
||||
struct in_addr inet_makeaddr();
|
||||
extern void inet_makeaddr_b ();
|
||||
extern void inet_ntoa_b ();
|
||||
extern int inet_aton ();
|
||||
extern void inet_netof_string();
|
||||
|
||||
#endif /* __STDC__ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCinetLibh */
|
||||
@@ -0,0 +1,99 @@
|
||||
/* ipProto.h - defines for the bsd protocol pseudo-device driver */
|
||||
|
||||
/* Copyright 1996 - 2006 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
02f,09jan12,h_x Move extern "C" after last header file include.
|
||||
02e,05sep06,kch Cleanup for IPNet integration.
|
||||
02d,07sep05,dlk Add ipBcastAddrGet() prototype.
|
||||
02c,24jun05,wap Add ifmedia support
|
||||
02b,07feb05,vvv _KERNEL cleanup
|
||||
02a,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01z,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
||||
/main/vdt/base6_itn5_networking-int/1)
|
||||
01y,24nov03,wap Merge changes from Snowflake
|
||||
01x,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01w,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01v,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01u,27oct03,cdw update include statements post header re-org.
|
||||
01t,08sep03,vvv merged from ACCORDION_BASE6_MERGE_BASELINE
|
||||
01s,09may03,vvv added prototypes for ipDetach() and ip6Detach()
|
||||
01r,29apr03,syy Added #ifdef for __cplusplus
|
||||
01q,11jul02,ann added a new structure to hold the interface identifier info
|
||||
01p,13jun02,ann making some changes for IPv4/IPv6 attach issue
|
||||
01o,03feb02,ham changes for tornado build.
|
||||
01n,25feb01,rae merged 01o tor2_0.barney (base 01m):
|
||||
moved nptFlag from END_OBJ for T2 END compatibility
|
||||
01m,19apr00,spm Merging NPT changes.
|
||||
01l,05apr00,spm cleanup: removing unused fields from control structure
|
||||
01k,02mar99,pul protoType for ipAttach(), SPR# 24253
|
||||
01j,08aug98,ann Included if_ether.h to reference idr
|
||||
01i,08dec97,gnn END code review fixes.
|
||||
01h,25sep97,gnn SENS beta feedback fixes
|
||||
01g,19aug97,gnn changes due to new buffering scheme.
|
||||
01f,12aug97,gnn changes necessitated by MUX/END update.
|
||||
01e,02jun97,gnn Added added memWidth to structure.
|
||||
01d,21mar97,map Added pRefCntHead, removed nLoan from BSD_DRV_CTRL.
|
||||
01c,22jan97,gnn Added new private flags that is seperate from if flags.
|
||||
01b,21jan97,gnn Removed buffer loaning stuff.
|
||||
Added reference count information.
|
||||
Added minFirstBuf for scatter/gather.
|
||||
01a,17dec96,gnn written.
|
||||
|
||||
*/
|
||||
|
||||
#ifndef __INCipProtoh
|
||||
#define __INCipProtoh
|
||||
|
||||
/* includes */
|
||||
|
||||
#include <net/if_arp.h>
|
||||
#include <netinet/if_ether.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* defines */
|
||||
|
||||
/* Define the length for EUI 64 id storage */
|
||||
|
||||
#define EUI_64_LEN 8
|
||||
|
||||
|
||||
/*
|
||||
* Structure to hold the interface identifier information. This is used in
|
||||
* the alloction of global and link/site local addresses.
|
||||
*/
|
||||
|
||||
typedef struct if_id_s
|
||||
{
|
||||
unsigned char interfaceId[EUI_64_LEN]; /* EUI 64 based id */
|
||||
unsigned long interfaceIdLen; /* Length of id */
|
||||
/* The following field could change later */
|
||||
unsigned long expireTimer; /* Reserved for future use */
|
||||
} IF_ID_T;
|
||||
|
||||
|
||||
/* forward declarations */
|
||||
|
||||
/* globals */
|
||||
IMPORT int ipAttach (int unit, char * pDevice);
|
||||
|
||||
IMPORT int ipDetach (int unit, char * pDevice);
|
||||
|
||||
IMPORT int ip6Attach (int unit, char * pDevice);
|
||||
|
||||
IMPORT int ip6Detach (int unit, char * pDevice);
|
||||
|
||||
/* locals */
|
||||
|
||||
/* forward declarations */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCipProtoh */
|
||||
@@ -0,0 +1,343 @@
|
||||
/* IPNET socket ioctl header file */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2006-2008, 2015 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
11nov15,dlk Added SIOCSNDASYNC.
|
||||
14may08,brg SIFBRDADDR ioctl added for ipvxcompat
|
||||
17sep07,rme Added SIOCBEATTY to support socket as TTY
|
||||
20aug07,kch Added SIOCGIFCAP support (WIND00102912).
|
||||
12jul07,kch Added SIOCSETVLANPRI ioctl mapping.
|
||||
12dec06,kch Added SIOCXPROMISC and corrected some inline comments.
|
||||
30nov06,kch Created.
|
||||
*/
|
||||
|
||||
#ifndef __INCipioctlh
|
||||
#define __INCipioctlh
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* IOCTL types: */
|
||||
#define VX_IOC_VOID 0x20000000
|
||||
#define VX_IOC_OUT 0x40000000
|
||||
#define VX_IOC_IN 0x80000000
|
||||
#define VX_IOC_INOUT (VX_IOC_IN | VX_IOC_OUT)
|
||||
#define VX_IOC_READ(a) (((0x40 << 24) & (a)) == VX_IOC_OUT)
|
||||
#define VX_IOC_WRITE(a) (((0x80 << 24) & (a)) == VX_IOC_IN)
|
||||
#define VX_IOC_RW(a) (((0xc0 << 24) & (a)) == VX_IOC_INOUT)
|
||||
|
||||
/* IOCTL size: */
|
||||
#define VX_IOCPARM_MASK 0x1fff /* Parameter length 13 bits */
|
||||
#define VX_IOCPARM_LEN(r) (VX_IOCPARM_MASK & ((r) >> 16))
|
||||
|
||||
/* IOCTL flags. */
|
||||
#define VX_IOCF_R 0x00000000 /* read. */
|
||||
#define VX_IOCF_W 0x00001000 /* write bit. */
|
||||
|
||||
/* IOCTL groups: */
|
||||
#define VX_IOC_GROUP(c) (((c) & 0x00000f00) >> 8)
|
||||
#define VX_IOCG_BASE 1
|
||||
#define VX_IOCG_SOCK 2
|
||||
#define VX_IOCG_NETIF 3
|
||||
#define VX_IOCG_ARP 4
|
||||
#define VX_IOCG_INET 5
|
||||
#define VX_IOCG_INET6 6
|
||||
#define VX_IOCG_ETH 7
|
||||
#define VX_IOCG_PPP 8
|
||||
#define VX_IOCG_WLAN 9
|
||||
#define VX_IOCG_MCAST 10
|
||||
#define VX_IOCG_MCAST_IN6 11
|
||||
#define VX_IOCG_MPLS 12
|
||||
#define VX_IOCG_RTAB 13
|
||||
#define VX_IOCG_DS 14
|
||||
#define VX_IOCG_POLICY_RT 15
|
||||
|
||||
#define VX_IOX(g,i,f,t) (((sizeof(t) & VX_IOCPARM_MASK) << 16) | (VX_IOCF_ ## f) | ((VX_IOCG_ ## g) << 8) | (i & 0xff))
|
||||
|
||||
#define VX_IO(g,i,f,t) (VX_IOC_VOID | /* no parameter */ \
|
||||
(((sizeof(t) & VX_IOCPARM_MASK) << 16) | (VX_IOCF_ ## f) | ((VX_IOCG_ ## g) << 8) | (i & 0xff)))
|
||||
|
||||
#define VX_IOR(g,i,f,t) (VX_IOC_OUT | /* out-parameter */ \
|
||||
(((sizeof(t) & VX_IOCPARM_MASK) << 16) | (VX_IOCF_ ## f) | ((VX_IOCG_ ## g) << 8) | (i & 0xff)))
|
||||
|
||||
#define VX_IOW(g,i,f,t) (VX_IOC_IN | /* in-parameter */ \
|
||||
(((sizeof(t) & VX_IOCPARM_MASK) << 16) | (VX_IOCF_ ## f) | ((VX_IOCG_ ## g) << 8) | (i & 0xff)))
|
||||
|
||||
#define VX_IOWR(g,i,f,t) (VX_IOC_INOUT | /* in- and out-parameter */ \
|
||||
(((sizeof(t) & VX_IOCPARM_MASK) << 16) | (VX_IOCF_ ## f) | ((VX_IOCG_ ## g) << 8) | (i & 0xff)))
|
||||
|
||||
/* SOCK ioctls (others elsewhere, e.g. sys/ioctl.h): */
|
||||
#define SIOCSNDASYNC VX_IOW(SOCK, 15, W, int)
|
||||
|
||||
/* AF_INET ioctls: */
|
||||
/* Get interface primary address. */
|
||||
#define SIOCGIFADDR VX_IOWR(INET, 1, R, struct ifreq)
|
||||
|
||||
/* Set interface primary address. */
|
||||
#define SIOCSIFADDR VX_IOWR(INET, 2, W, struct ifreq)
|
||||
|
||||
/* Get broadcast address. */
|
||||
#define SIOCGIFBRDADDR VX_IOWR(INET, 3, R, struct ifreq)
|
||||
|
||||
/* Set broadcast address. */
|
||||
#define SIOCSIFBRDADDR VX_IOWR(INET, 4, W, struct ifreq)
|
||||
|
||||
/* Get (sub)net address mask. */
|
||||
#define SIOCGIFNETMASK VX_IOWR(INET, 5, R, struct ifreq)
|
||||
|
||||
/* Set (sub)net address mask. */
|
||||
#define SIOCSIFNETMASK VX_IOWR(INET, 6, W, struct ifreq)
|
||||
|
||||
/* Get point-to-point IPv4 address. */
|
||||
#define SIOCGIFDSTADDR VX_IOWR(INET, 7, R, struct ifreq)
|
||||
|
||||
/* Set point-to-point IPv4 address. */
|
||||
#define SIOCSIFDSTADDR VX_IOWR(INET, 8, W, struct ifreq)
|
||||
|
||||
/* Add interface alias/address. */
|
||||
#define SIOCAIFADDR VX_IOWR(INET, 9, W, struct in_aliasreq)
|
||||
|
||||
/* Delete interface address. */
|
||||
#define SIOCDIFADDR VX_IOWR(INET, 10, W, struct ifreq)
|
||||
|
||||
/* Deprecated (BSD 4.3 compat): add route. */
|
||||
#define SIOCADDRT VX_IOWR(INET, 11, W, struct ortentry)
|
||||
|
||||
/* Deprecated (BSD 4.3 compat): remove route. */
|
||||
#define SIOCDELRT VX_IOWR(INET, 12, W, struct ortentry)
|
||||
|
||||
/* Proprietary (BSD 4.3 compat): get route. */
|
||||
#define SIOCXGETRT VX_IOWR(INET, 13, R, struct ortentry)
|
||||
|
||||
/* Proprietary AF_INET MIP ioctls */
|
||||
/* Add a home address */
|
||||
#define SIOCAHOMEADDR VX_IOWR(INET, 14, W, struct in_aliasreq)
|
||||
|
||||
/* AF_INET6 ioctls: */
|
||||
#ifdef INET6
|
||||
/* Add interface IPv6 address */
|
||||
#define SIOCAIFADDR_IN6 VX_IOWR(INET6, 1, W, struct in6_aliasreq)
|
||||
|
||||
/* Delete interface IPv6 address. */
|
||||
#define SIOCDIFADDR_IN6 VX_IOWR(INET6, 2, W, struct in6_ifreq)
|
||||
|
||||
/* Get destination IPv6 address. */
|
||||
#define SIOCGIFDSTADDR_IN6 VX_IOWR(INET6, 3, R, struct in6_ifreq)
|
||||
|
||||
/* proprietary AF_INET6 MIP6 ioctl */
|
||||
#define SIOCMIP6 VX_IOWR(INET6, 4, W, struct mip6) /* MIP6 */
|
||||
|
||||
/* Get interface IPv6 address prefix */
|
||||
#define SIOCGIFPREFIX_IN6 VX_IOWR(INET6, 5, R, struct in6_ifreq)
|
||||
|
||||
/* Get interface IPv6 address */
|
||||
#define SIOCXGIFADDR_IN6 VX_IOWR(INET6, 6, W, struct in6_aliasreq)
|
||||
|
||||
/* Get inerface IPv6 address prefix */
|
||||
#define SIOCGIFPREFIX_IN6 VX_IOWR(INET6, 5, R, struct in6_ifreq)
|
||||
#endif /* INET6 */
|
||||
|
||||
/* ARP ioctls: */
|
||||
/* Create/modify ARP entry. */
|
||||
#define SIOCSARP VX_IOWR(ARP, 1, W, struct arpreq)
|
||||
|
||||
/* Get ARP entry. */
|
||||
#define SIOCGARP VX_IOWR(ARP, 2, R, struct arpreq)
|
||||
|
||||
/* Delete ARP entry */
|
||||
#define SIOCDARP VX_IOWR(ARP, 3, W, struct arpreq)
|
||||
|
||||
/* interface ioctls: */
|
||||
/* Get interface flags. */
|
||||
#define SIOCGIFFLAGS VX_IOWR(NETIF, 1, R, struct ifreq)
|
||||
|
||||
/* Set interface flags. */
|
||||
#define SIOCSIFFLAGS VX_IOWR(NETIF, 2, W, struct ifreq)
|
||||
|
||||
/* Get interface MTU. */
|
||||
#define SIOCGIFMTU VX_IOWR(NETIF, 3, R, struct ifreq)
|
||||
|
||||
/* Set interface MTU. */
|
||||
#define SIOCSIFMTU VX_IOWR(NETIF, 4, W, struct ifreq)
|
||||
|
||||
/* Get link level address. */
|
||||
#define SIOCGIFLLADDR VX_IOWR(NETIF, 13, R, struct ifreq)
|
||||
|
||||
/* Set link level address. */
|
||||
#define SIOCSIFLLADDR VX_IOWR(NETIF, 14, W, struct ifreq)
|
||||
|
||||
/* Get interface list. */
|
||||
#define SIOCGIFCONF VX_IOWR(NETIF, 21, R, struct ifconf)
|
||||
|
||||
/* Get interface index */
|
||||
#define SIOCGIFINDEX VX_IOWR(NETIF, 22, R, struct ifreq)
|
||||
|
||||
/* Get interface capabilities */
|
||||
#define SIOCGIFCAP VX_IOWR(NETIF, 23, R, struct ifreq)
|
||||
|
||||
/* Get interface name */
|
||||
#define SIOCGIFNAME VX_IOWR(NETIF, 24, R, struct ifreq)
|
||||
|
||||
/* Get TX queue length */
|
||||
#define SIOCGIFTXQLEN VX_IOWR(NETIF, 25, R, struct ifreq)
|
||||
|
||||
/* Set TX queue length */
|
||||
#define SIOCSIFTXQLEN VX_IOWR(NETIF, 26, R, struct ifreq)
|
||||
|
||||
/* Set interface name */
|
||||
#define SIOCSIFNAME VX_IOWR(NETIF, 27, R, struct ifreq)
|
||||
|
||||
/* Set HW broadcast */
|
||||
#define SIOCSIFHWBROADCAST VX_IOWR(NETIF, 28, R, struct ifreq)
|
||||
|
||||
/* Add multicast address */
|
||||
#define SIOCADDMULTI VX_IOWR(NETIF, 29, W, struct sockaddr)
|
||||
|
||||
/* Delete multicast address */
|
||||
#define SIOCDELMULTI VX_IOWR(NETIF, 30, W, struct sockaddr)
|
||||
|
||||
/* Set interface hardware address */
|
||||
#define SIOCGIFHWADDR VX_IOWR(NETIF, 31, R, struct ifreq)
|
||||
|
||||
/* proprietary ioctls: */
|
||||
/* Detach interface. */
|
||||
#define SIOCXDETACH VX_IOWR(NETIF, 50, W, struct ifreq)
|
||||
|
||||
/* Attach interface. */
|
||||
#define SIOCXATTACH VX_IOWR(NETIF, 51, W, struct ifreq)
|
||||
|
||||
/* Get DHCP status. */
|
||||
#define SIOCXGDHCPRUNNING VX_IOWR(NETIF, 52, R, struct ifreq)
|
||||
|
||||
/* Enable(1)/Disable(0) DHCP. */
|
||||
#define SIOCXSDHCPRUNNING VX_IOWR(NETIF, 53, W, struct ifreq)
|
||||
|
||||
/* Get private interface data */
|
||||
#define SIOCGIFPRIVATE VX_IOWR(NETIF, 54, R, struct ifreq)
|
||||
|
||||
/* Set private interface data */
|
||||
#define SIOCSIFPRIVATE VX_IOWR(NETIF, 55, W, struct ifreq)
|
||||
|
||||
/* Set interface callback. */
|
||||
#define SIOCXSIFFEVENTCB VX_IOW(BASE, 74, W, if_eventcb)
|
||||
|
||||
/* Delete interface callback. */
|
||||
#define SIOCXDIFFEVENTCB VX_IOW(BASE, 75, W, if_eventcb)
|
||||
|
||||
/* Pretend to be a TTY. */
|
||||
#define SIOCBEATTY VX_IOW(BASE, 76, W, int)
|
||||
|
||||
#ifdef INET6
|
||||
/* Proprietary : get IPv6 gateway. */
|
||||
#define SIOCXGETGW_IN6 VX_IOWR(BASE, 53, R, struct sockaddr_in6)
|
||||
|
||||
/* Proprietaty : set IPv6 gateway. */
|
||||
#define SIOCXSETGW_IN6 VX_IOWR(BASE, 54, W, struct sockaddr_in6)
|
||||
#endif /* INET6 */
|
||||
|
||||
/* IPSEC ioctls */
|
||||
#define SIOCXIPSEC_CTL VX_IOWR(BASE, 55, W, void *)
|
||||
#define SIOCXIPSEC_SA_CTL VX_IOWR(BASE, 56, W, void *[2])
|
||||
#define SIOCXIPSEC_CONF_CTL VX_IOWR(BASE, 57, W, void *)
|
||||
|
||||
/* Multicast ioctls: */
|
||||
/* get VIF statistics */
|
||||
#define SIOCGETVIFCNT VX_IOWR(MCAST, 0, R, struct sioc_vif_req)
|
||||
|
||||
/* get mcast route statistics */
|
||||
#define SIOCGETSGCNT VX_IOWR(MCAST, 1, R, struct sioc_sg_req)
|
||||
|
||||
#ifdef INET6
|
||||
/* AF_INET6 multicast ioctls: */
|
||||
/* get MIF statistics */
|
||||
#define SIOCGETMIFCNT_IN6 VX_IOWR(MCAST_IN6, 0, R, struct sioc_mif_req6)
|
||||
|
||||
/* get mcast6 route statistics */
|
||||
#define SIOCGETSGCNT_IN6 VX_IOWR(MCAST_IN6, 1, R, struct sioc_sg_req6)
|
||||
#endif /* INET6 */
|
||||
|
||||
/* route table ioctls */
|
||||
/* Add a new virtual router and creates a route table with table ID == 0 */
|
||||
#define SIOCADDVR VX_IOWR(RTAB, 0, W, u_int16_t)
|
||||
|
||||
/* Delete a virtual router and all tables owned by it */
|
||||
#define SIOCDELVR VX_IOWR(RTAB, 1, W, u_int16_t)
|
||||
|
||||
/* Add a route table to a (virtual) router */
|
||||
#define SIOCADDROUTETAB VX_IOWR(RTAB, 2, W, struct sioc_route_table)
|
||||
|
||||
/* Delete a route table to a (virtual) router */
|
||||
#define SIOCDELROUTETAB VX_IOWR(RTAB, 3, W, struct sioc_route_table)
|
||||
|
||||
/* Get/create a route table by name */
|
||||
#define SIOCGETROUTETAB VX_IOWR(RTAB, 4, W, struct sioc_route_table)
|
||||
|
||||
/* Set a name for a route table. */
|
||||
#define SIOCSROUTETABNAME VX_IOWR(RTAB, 5, W, struct sioc_route_table)
|
||||
|
||||
/* Map a route table name to VR and table ID */
|
||||
#define SIOCGROUTETABNAME VX_IOWR(RTAB, 6, R, struct sioc_route_table)
|
||||
|
||||
/* interface ioctls: */
|
||||
/* Get interface metric. */
|
||||
#define SIOCGIFMETRIC VX_IOWR(NETIF, 5, R, struct ifreq)
|
||||
|
||||
/* Set interface metric. */
|
||||
#define SIOCSIFMETRIC VX_IOWR(NETIF, 6, W, struct ifreq)
|
||||
|
||||
/* Get the route table index for an interface. */
|
||||
#define SIOCGIFVR VX_IOWR(NETIF, 7, R, struct ifreq)
|
||||
|
||||
/* Set an interface to a specific route table. */
|
||||
#define SIOCSIFVR VX_IOWR(NETIF, 8, W, struct ifreq)
|
||||
|
||||
/* Get tunnel parameter. */
|
||||
#define SIOCGETTUNNEL VX_IOWR(NETIF, 10, R, struct ip_tunnel_param)
|
||||
|
||||
/* Change tunnel parameters. */
|
||||
#define SIOCCHGTUNNEL VX_IOWR(NETIF, 12, W, struct ip_tunnel_param)
|
||||
|
||||
/* Get information about a virtual LAN interface,
|
||||
* 'ifru_data' must point to a struct vlanreq
|
||||
*/
|
||||
#define SIOCGETVLAN VX_IOWR(NETIF, 15, R, struct ifreq)
|
||||
|
||||
/* Set information about a virtual LAN interface,
|
||||
* 'ifru_data' must point to a struct vlanreq
|
||||
*/
|
||||
#define SIOCSETVLAN VX_IOWR(NETIF, 16, W, struct ifreq)
|
||||
|
||||
/* Create a pseudo interface (like vlan) */
|
||||
#define SIOCIFCREATE VX_IOWR(NETIF, 17, W, struct ifreq)
|
||||
|
||||
/* Destroy a pseudo interface (like vlan) */
|
||||
#define SIOCIFDESTROY VX_IOWR(NETIF, 18, W, struct ifreq)
|
||||
|
||||
/* Set vlan priority for a virtual LAN interface */
|
||||
#define SIOCSETVLANPRI VX_IOWR(NETIF, 19, W, struct ifreq)
|
||||
|
||||
/* bool: Activate/deactivate promiscuous mode. 'bool'is stored in int. */
|
||||
#define SIOCXPROMISC VX_IOW(NETIF, 102, W, int)
|
||||
|
||||
/* proprietary ioctls: */
|
||||
/* Reset interface statistics counter */
|
||||
#define SIOCXRESETSTAT VX_IOWR(NETIF, 60, W, struct ifreq)
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCipioctlh */
|
||||
@@ -0,0 +1,122 @@
|
||||
/* ipioctl_var.h - IP ioctl variable header file */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01c,12jul07,kch Moved sioc_vif_req and sioc_sg_req struct to ip_mroute.h.
|
||||
Also moved sioc_sg_req6 and sioc_mif_req6 struct to
|
||||
ip6_mroute.h (WIND00102340).
|
||||
01b,24apr07,tkf Add IPv6-Only build support.
|
||||
01a,30nov06,kch Created.
|
||||
*/
|
||||
|
||||
#ifndef __INCipioctl_varh
|
||||
#define __INCipioctl_varh
|
||||
|
||||
/* includes */
|
||||
#include <net/if.h>
|
||||
#ifdef INET
|
||||
#include <netinet/in.h>
|
||||
#endif
|
||||
#ifdef INET6
|
||||
#include <netinet6/in6.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef int (*if_eventcb)(char *ifname, u_int32_t ifindex, u_int32_t ifflags,
|
||||
int event, void *data);
|
||||
|
||||
/* The maximum length of route table name */
|
||||
#define RTNAMSIZ 16
|
||||
|
||||
/* This VR ID tells the stack to choose an unused ID and also choose the
|
||||
default route table ID */
|
||||
#define VR_ANY 0xffff
|
||||
|
||||
/* This table ID tells the stack to choose an unused ID on the specified VR */
|
||||
#define ROUTE_TABLE_ANY 0xffffffff
|
||||
|
||||
/*
|
||||
* Structure used by SIOCADDROUTETAB, SIOCDELROUTETAB, SIOCGETROUTETAB,
|
||||
* SIOCSROUTETABNAME and SIOCGROUTETABNAME for manipulating route tables
|
||||
* for an existing (virtual) router.
|
||||
*/
|
||||
struct sioc_route_table {
|
||||
|
||||
/* (Virtual) router index, 0 == default, VR_ANY can be used to let the
|
||||
* stack choose a virtual router ID
|
||||
*/
|
||||
u_int16_t vr;
|
||||
|
||||
/* The ID of this table. Table 0 is always present and cannot be deleted.
|
||||
* Setting table to ROUTE_TABLE_ANY in an add operation will result in
|
||||
* the stack choosing a free ID
|
||||
*/
|
||||
u_int32_t table;
|
||||
char name[RTNAMSIZ]; /* The (optional) name of the route table */
|
||||
};
|
||||
|
||||
union sockaddr_union
|
||||
{
|
||||
struct sockaddr sa;
|
||||
#ifdef INET
|
||||
struct sockaddr_in sin;
|
||||
#endif /* INET */
|
||||
#ifdef INET6
|
||||
struct sockaddr_in6 sin6;
|
||||
#endif /* INET6 */
|
||||
};
|
||||
|
||||
/*
|
||||
* Tunnel parameter struct used with SIOCGETTUNNEL and SIOCCHGTUNNEL ioctls.
|
||||
*/
|
||||
struct ip_tunnel_param
|
||||
{
|
||||
char ifr_name[IFNAMSIZ]; /* if name, e.g. "gif1", "gre1" */
|
||||
|
||||
/* The address to use as source address for outgoing packets, must
|
||||
* be the address of a local interface
|
||||
*/
|
||||
union sockaddr_union local_addr;
|
||||
|
||||
/* The address to use as destination address for outgoing packets */
|
||||
union sockaddr_union remote_addr;
|
||||
|
||||
u_int8_t ttl; /* Value to put in time to live field */
|
||||
|
||||
/* These fields are read only (returned by IP_SIOCGETTUNNEL) */
|
||||
/* Tunnel protocol: IP_IPPROTO_IPIP or IP_IPPROTO_GRE. */
|
||||
u_int8_t protocol;
|
||||
|
||||
u_int16_t o_flags; /* Output flags (tunnel protocol specific). */
|
||||
u_int16_t i_flags; /* Input flags (tunnel protocol specific). */
|
||||
};
|
||||
|
||||
#ifdef INET6
|
||||
/*
|
||||
* used when communicating with the MIP6 subsystem
|
||||
*/
|
||||
struct mip6
|
||||
{
|
||||
u_int32_t pad[40]; /* Large enough to deal with the MIP stuff */
|
||||
};
|
||||
#endif /* INET6 */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCipioctl_varh */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,386 @@
|
||||
/* pfkeyv2.h - Extended PF_KEY version 2 header file */
|
||||
|
||||
/*
|
||||
* This file defines structures and symbols for the PF_KEY Version 2
|
||||
* key management interface. It was written at the U.S. Naval Research
|
||||
* Laboratory. This file is in the public domain. The authors ask that
|
||||
* you leave this credit intact on any copies of this file.
|
||||
*/
|
||||
|
||||
/* Copyright 2006 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
*/
|
||||
|
||||
#ifndef __PFKEY_V2_H
|
||||
#define __PFKEY_V2_H 1
|
||||
|
||||
/* includes */
|
||||
#include "sys/types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* version
|
||||
*/
|
||||
#define PF_KEY_V2 2
|
||||
#define PFKEYV2_REVISION 199806L
|
||||
|
||||
/*
|
||||
* SA types
|
||||
*/
|
||||
#define SADB_SATYPE_UNSPEC 0
|
||||
#define SADB_SATYPE_AH 2
|
||||
#define SADB_SATYPE_ESP 3
|
||||
#define SADB_SATYPE_RSVP 5
|
||||
#define SADB_SATYPE_OSPFV2 6
|
||||
#define SADB_SATYPE_RIPV2 7
|
||||
#define SADB_SATYPE_MIP 8
|
||||
#define SADB_X_SATYPE_IPIP 9
|
||||
#define SADB_X_SATYPE_TCPSIGNATURE 10
|
||||
#define SADB_X_SATYPE_BYPASS 11
|
||||
#define SADB_SATYPE_MAX 11
|
||||
|
||||
|
||||
/*
|
||||
* SA extensions - SADB_EXT_
|
||||
*/
|
||||
#define SADB_EXT_RESERVED 0 /* _Extension_data_type_ */
|
||||
#define SADB_EXT_SA 1 /* struct sadb_sa */
|
||||
#define SADB_EXT_LIFETIME_CURRENT 2 /* struct sadb_lifetime */
|
||||
#define SADB_EXT_LIFETIME_HARD 3 /* struct sadb_lifetime */
|
||||
#define SADB_EXT_LIFETIME_SOFT 4 /* struct sadb_lifetime */
|
||||
#define SADB_EXT_ADDRESS_SRC 5 /* struct sadb_address */
|
||||
#define SADB_EXT_ADDRESS_DST 6 /* struct sadb_address */
|
||||
#define SADB_EXT_ADDRESS_PROXY 7 /* struct sadb_address */
|
||||
#define SADB_EXT_KEY_AUTH 8 /* struct sadb_key */
|
||||
#define SADB_EXT_KEY_ENCRYPT 9 /* struct sadb_key */
|
||||
#define SADB_EXT_IDENTITY_SRC 10 /* struct sadb_ident */
|
||||
#define SADB_EXT_IDENTITY_DST 11 /* struct sadb_ident */
|
||||
#define SADB_EXT_SENSITIVITY 12 /* struct sadb_sens */
|
||||
#define SADB_EXT_PROPOSAL 13 /* struct sadb_prop */
|
||||
#define SADB_EXT_SUPPORTED 14 /* struct sadb_supported */
|
||||
#define SADB_EXT_SPIRANGE 15 /* struct sadb_spirange */
|
||||
#define SADB_X_EXT_SRC_MASK 16 /* struct sadb_address */
|
||||
#define SADB_X_EXT_DST_MASK 17 /* struct sadb_address */
|
||||
#define SADB_X_EXT_PROTOCOL 18 /* struct sadb_protocol */
|
||||
#define SADB_X_EXT_SA2 19 /* struct sadb_sa */
|
||||
#define SADB_X_EXT_SRC_FLOW 20 /* struct sadb_address */
|
||||
#define SADB_X_EXT_DST_FLOW 21 /* struct sadb_address */
|
||||
#define SADB_X_EXT_DST2 22 /* struct sadb_address */
|
||||
#define SADB_X_EXT_FLOW_TYPE 23 /* struct sadb_protocol */
|
||||
#define SADB_X_EXT_UDPENCAP 24 /* struct sadb_x_udpencap */
|
||||
#define SADB_EXT_MAX 24
|
||||
|
||||
|
||||
/* sadb_sa_flags */
|
||||
#define SADB_SAFLAGS_PFS 0x001L /* perfect forward secrecy */
|
||||
#define SADB_X_SAFLAGS_HALFIV 0x002L /* Used for ESP-old */
|
||||
#define SADB_X_SAFLAGS_TUNNEL 0x004L /* Force tunneling */
|
||||
#define SADB_X_SAFLAGS_CHAINDEL 0x008L /* Delete whole SA chain */
|
||||
#define SADB_X_SAFLAGS_REPLACEFLOW 0x020L /* Replace existing flow */
|
||||
#define SADB_X_SAFLAGS_INGRESS_FLOW 0x040L /* Ingress ACL entry */
|
||||
#define SADB_X_SAFLAGS_RANDOMPADDING 0x080L /* Random ESP padding */
|
||||
#define SADB_X_SAFLAGS_NOREPLAY 0x100L /* No replay counter */
|
||||
#define SADB_X_SAFLAGS_UDPENCAP 0x200L /* ESP in UDP */
|
||||
|
||||
/* new sadb_sa_flags by Interpeak: */
|
||||
#define SADB_X_SAFLAGS_INGRESS_SA 0x040L /* Ingress SA entry (same val as INGRESS_FLOW) */
|
||||
#define SADB_X_SAFLAGS_EGRESS_SA 0x400L /* Egress (output) SA entry */
|
||||
|
||||
|
||||
/*
|
||||
* sadb_msg
|
||||
*/
|
||||
struct sadb_msg
|
||||
{
|
||||
uint8_t sadb_msg_version;
|
||||
uint8_t sadb_msg_type;
|
||||
uint8_t sadb_msg_errno;
|
||||
uint8_t sadb_msg_satype;
|
||||
uint16_t sadb_msg_len;
|
||||
uint16_t sadb_msg_reserved;
|
||||
uint32_t sadb_msg_seq;
|
||||
uint32_t sadb_msg_pid;
|
||||
};
|
||||
|
||||
/* sadb_msg_type */
|
||||
#define SADB_RESERVED 0
|
||||
#define SADB_GETSPI 1
|
||||
#define SADB_UPDATE 2
|
||||
#define SADB_ADD 3
|
||||
#define SADB_DELETE 4
|
||||
#define SADB_GET 5
|
||||
#define SADB_ACQUIRE 6
|
||||
#define SADB_REGISTER 7
|
||||
#define SADB_EXPIRE 8
|
||||
#define SADB_FLUSH 9
|
||||
#define SADB_DUMP 10
|
||||
#define SADB_X_PROMISC 11
|
||||
#define SADB_X_ADDFLOW 12
|
||||
#define SADB_X_DELFLOW 13
|
||||
#define SADB_X_GRPSPIS 14
|
||||
#define SADB_X_BINDSA 15
|
||||
#define SADB_MAX 15
|
||||
|
||||
|
||||
/*
|
||||
* sadb_ext
|
||||
*/
|
||||
struct sadb_ext
|
||||
{
|
||||
uint16_t sadb_ext_len;
|
||||
uint16_t sadb_ext_type;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* sadb_sa
|
||||
*/
|
||||
struct sadb_sa
|
||||
{
|
||||
uint16_t sadb_sa_len;
|
||||
uint16_t sadb_sa_exttype;
|
||||
uint32_t sadb_sa_spi;
|
||||
uint8_t sadb_sa_replay;
|
||||
uint8_t sadb_sa_state;
|
||||
uint8_t sadb_sa_auth;
|
||||
uint8_t sadb_sa_encrypt;
|
||||
uint32_t sadb_sa_flags;
|
||||
};
|
||||
|
||||
|
||||
/* sadb_sa_state */
|
||||
#define SADB_SASTATE_LARVAL 0
|
||||
#define SADB_SASTATE_MATURE 1
|
||||
#define SADB_SASTATE_DYING 2
|
||||
#define SADB_SASTATE_DEAD 3
|
||||
#define SADB_SASTATE_MAX 3
|
||||
|
||||
#define SADB_KEY_FLAGS_MAX 0
|
||||
|
||||
/* sadb_sa_auth */
|
||||
#define SADB_AALG_NONE 0
|
||||
#define SADB_AALG_MD5HMAC 1
|
||||
#define SADB_AALG_SHA1HMAC 2
|
||||
#define SADB_AALG_MD5HMAC96 3
|
||||
#define SADB_AALG_SHA1HMAC96 4
|
||||
#define SADB_X_AALG_RIPEMD160HMAC96 5
|
||||
#define SADB_X_AALG_MD5 6
|
||||
#define SADB_X_AALG_SHA1 7
|
||||
#define SADB_X_AALG_AESXCBCMAC96 8
|
||||
#define SADB_AALG_MAX 8
|
||||
|
||||
/* sadb_sa_encrypt */
|
||||
#define SADB_EALG_NONE 0
|
||||
#define SADB_EALG_DESCBC 1
|
||||
#define SADB_EALG_3DESCBC 2
|
||||
#define SADB_X_EALG_BLF 3
|
||||
#define SADB_X_EALG_CAST 4
|
||||
#define SADB_X_EALG_SKIPJACK 5 /* not supported */
|
||||
#define SADB_X_EALG_AES 6
|
||||
#define SADB_EALG_MAX 6
|
||||
|
||||
/*
|
||||
* sadb_lifetime
|
||||
*/
|
||||
struct sadb_lifetime
|
||||
{
|
||||
uint16_t sadb_lifetime_len;
|
||||
uint16_t sadb_lifetime_exttype;
|
||||
uint32_t sadb_lifetime_allocations;
|
||||
uint64_t sadb_lifetime_bytes;
|
||||
uint64_t sadb_lifetime_addtime;
|
||||
uint64_t sadb_lifetime_usetime;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* sadb_address
|
||||
*/
|
||||
struct sadb_address
|
||||
{
|
||||
uint16_t sadb_address_len;
|
||||
uint16_t sadb_address_exttype;
|
||||
uint8_t sadb_address_proto;
|
||||
uint8_t sadb_address_prefixlen;
|
||||
uint16_t sadb_address_reserved;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* sadb_key
|
||||
*/
|
||||
struct sadb_key
|
||||
{
|
||||
uint16_t sadb_key_len;
|
||||
uint16_t sadb_key_exttype;
|
||||
uint16_t sadb_key_bits;
|
||||
uint16_t sadb_key_reserved;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* sadb_ident
|
||||
*/
|
||||
struct sadb_ident
|
||||
{
|
||||
uint16_t sadb_ident_len;
|
||||
uint16_t sadb_ident_exttype;
|
||||
uint16_t sadb_ident_type;
|
||||
uint16_t sadb_ident_reserved;
|
||||
uint64_t sadb_ident_id;
|
||||
};
|
||||
|
||||
|
||||
/* sadb_ident_type */
|
||||
#define SADB_IDENTTYPE_RESERVED 0
|
||||
#define SADB_IDENTTYPE_PREFIX 1
|
||||
#define SADB_IDENTTYPE_FQDN 2
|
||||
#define SADB_IDENTTYPE_USERFQDN 3
|
||||
#define SADB_IDENTTYPE_MAX 3
|
||||
|
||||
|
||||
/*
|
||||
* sadb_sens
|
||||
*/
|
||||
struct sadb_sens
|
||||
{
|
||||
uint16_t sadb_sens_len;
|
||||
uint16_t sadb_sens_exttype;
|
||||
uint32_t sadb_sens_dpd;
|
||||
uint8_t sadb_sens_sens_level;
|
||||
uint8_t sadb_sens_sens_len;
|
||||
uint8_t sadb_sens_integ_level;
|
||||
uint8_t sadb_sens_integ_len;
|
||||
uint32_t sadb_sens_reserved;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* sadb_prop
|
||||
*/
|
||||
struct sadb_prop
|
||||
{
|
||||
uint16_t sadb_prop_len;
|
||||
uint16_t sadb_prop_exttype;
|
||||
uint8_t sadb_prop_replay;
|
||||
uint8_t sadb_prop_reserved[3];
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* sadb_comb
|
||||
*/
|
||||
struct sadb_comb
|
||||
{
|
||||
uint8_t sadb_comb_auth;
|
||||
uint8_t sadb_comb_encrypt;
|
||||
uint16_t sadb_comb_flags;
|
||||
uint16_t sadb_comb_auth_minbits;
|
||||
uint16_t sadb_comb_auth_maxbits;
|
||||
uint16_t sadb_comb_encrypt_minbits;
|
||||
uint16_t sadb_comb_encrypt_maxbits;
|
||||
uint32_t sadb_comb_reserved;
|
||||
uint32_t sadb_comb_soft_allocations;
|
||||
uint32_t sadb_comb_hard_allocations;
|
||||
uint64_t sadb_comb_soft_bytes;
|
||||
uint64_t sadb_comb_hard_bytes;
|
||||
uint64_t sadb_comb_soft_addtime;
|
||||
uint64_t sadb_comb_hard_addtime;
|
||||
uint64_t sadb_comb_soft_usetime;
|
||||
uint64_t sadb_comb_hard_usetime;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* sadb_suppported
|
||||
* original sadb_supported struct:
|
||||
* struct sadb_supported
|
||||
* {
|
||||
* uint16_t sadb_supported_len;
|
||||
* uint16_t sadb_supported_exttype;
|
||||
* uint32_t sadb_supported_reserved;
|
||||
* };
|
||||
*/
|
||||
struct sadb_supported
|
||||
{
|
||||
uint16_t sadb_supported_len;
|
||||
uint16_t sadb_supported_exttype;
|
||||
uint8_t sadb_supported_nauth;
|
||||
uint8_t sadb_supported_nencrypt;
|
||||
uint16_t sadb_supported_reserved;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* sadb_alg
|
||||
*/
|
||||
struct sadb_alg
|
||||
{
|
||||
uint8_t sadb_alg_id;
|
||||
uint8_t sadb_alg_ivlen;
|
||||
uint16_t sadb_alg_minbits;
|
||||
uint16_t sadb_alg_maxbits;
|
||||
uint16_t sadb_alg_reserved;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* sadb_spirange
|
||||
*/
|
||||
struct sadb_spirange
|
||||
{
|
||||
uint16_t sadb_spirange_len;
|
||||
uint16_t sadb_spirange_exttype;
|
||||
uint32_t sadb_spirange_min;
|
||||
uint32_t sadb_spirange_max;
|
||||
uint32_t sadb_spirange_reserved;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* sadb_protocol
|
||||
*/
|
||||
struct sadb_protocol
|
||||
{
|
||||
uint16_t sadb_protocol_len;
|
||||
uint16_t sadb_protocol_exttype;
|
||||
uint8_t sadb_protocol_proto;
|
||||
uint8_t sadb_protocol_reserved1;
|
||||
uint16_t sadb_protocol_reserved2;
|
||||
};
|
||||
|
||||
/* SADB_X_EXT_FLOW_TYPE sadb_protocol_proto */
|
||||
#define SADB_X_FLOW_TYPE_USE 1 /* Apply security (standard flow) */
|
||||
#define SADB_X_FLOW_TYPE_ACQUIRE 2 /* Generate acquire message, send packet in cleartext */
|
||||
#define SADB_X_FLOW_TYPE_REQUIRE 3 /* Generate acquire message, discard packet */
|
||||
#define SADB_X_FLOW_TYPE_BYPASS 4 /* Send without applying security, i.e. cleartext */
|
||||
#define SADB_X_FLOW_TYPE_DENY 5 /* Silent discard */
|
||||
/*#define SADB_X_FLOW_TYPE_DONTACQ 6*/
|
||||
|
||||
|
||||
/*
|
||||
* sadb_x_udpencap
|
||||
*/
|
||||
struct sadb_x_udpencap
|
||||
{
|
||||
uint16_t sadb_x_udpencap_len;
|
||||
uint16_t sadb_x_udpencap_exttype;
|
||||
uint16_t sadb_x_udpencap_port;
|
||||
uint16_t sadb_x_udpencap_reserved;
|
||||
};
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !__PFKEY_V2_H */
|
||||
@@ -0,0 +1,117 @@
|
||||
/* policy_routing.h - policy routing header file */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01a,30nov06,kch Guarded inet6 definitions with INET6. Also replaced IP_IOWR
|
||||
with VX_IOWR and added ipnet/ipioctl.h include.
|
||||
*/
|
||||
|
||||
#ifndef __INCpolicy_routingh
|
||||
#define __INCpolicy_routingh
|
||||
|
||||
/* includes */
|
||||
#include <ipnet/ipioctl.h>
|
||||
#include "netinet/in.h"
|
||||
#ifdef INET6
|
||||
#include "netinet6/in6.h"
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Policy routing i/o controls
|
||||
*/
|
||||
|
||||
#define PR_BASE 20
|
||||
|
||||
#define SIOCGPRRULE VX_IOWR(POLICY_RT, 0, R, struct policy_routing_rule)
|
||||
#define SIOCSPRRULE VX_IOWR(POLICY_RT, 1, W, struct policy_routing_rule)
|
||||
#define SIOCDPRRULE VX_IOWR(POLICY_RT, 2, W, struct policy_routing_rule)
|
||||
#define SIOCEPRRULE VX_IOWR(POLICY_RT, 3, R, struct policy_routing_rule)
|
||||
|
||||
/*
|
||||
* Rules are processed by descending priority, rules with same priority
|
||||
* are processed in the order they where added (added first is processed first)
|
||||
*/
|
||||
#define PR_PRIO_MIN (-32768)
|
||||
#define PR_PRIO_MAX (32767)
|
||||
|
||||
#define PR_ID_NONE 0
|
||||
|
||||
|
||||
/*
|
||||
* in_addr_union
|
||||
*/
|
||||
#ifndef IN_ADDR_UNION_TYPE
|
||||
#define IN_ADDR_UNION_TYPE
|
||||
union in_addr_union
|
||||
{
|
||||
struct in_addr in;
|
||||
#ifdef INET6
|
||||
struct in6_addr in6;
|
||||
#endif /* INET6 */
|
||||
};
|
||||
#endif /* !IN_ADDR_UNION_TYPE */
|
||||
|
||||
/*
|
||||
* policy_routing_rule
|
||||
*/
|
||||
struct policy_routing_rule
|
||||
{
|
||||
u_long table; /* The table ID of the routing table to use if this rule matches */
|
||||
BOOL last; /* Set to TRUE if no other rules should consider if the
|
||||
routing table with policy ID 'policy' does not give a match */
|
||||
u_long id; /* Unique identifier of this rule (SIOCSPRRULE set this) */
|
||||
short prio; /* The index of this rule or one of the PR_IDX_xxx macros */
|
||||
u_short mask; /* Set PR_RULE_xxx bit for each field that must match */
|
||||
u_char af; /* Address family for this rule */
|
||||
u_char ds; /* Traffic class (IPv6) or TOS (IPv4) (== DS field for DiffServ) */
|
||||
u_char proto; /* Protocol in the IP header */
|
||||
u_char saddr_prefixlen; /* Source prefixlen, set to 0 for exact match of 'saddr' */
|
||||
u_char daddr_prefixlen; /* Destination prefixlen, set to 0 for exact match of 'daddr' */
|
||||
union in_addr_union saddr; /* Source address or source network */
|
||||
union in_addr_union daddr; /* Destination address or destination network */
|
||||
u_long flow; /* IPv6 flow ID in host byte order */
|
||||
u_long ifindex; /* Interface index in host byte order (bound if for sending, incoming if for forwarding) */
|
||||
u_long scope; /* The scope of the destination */
|
||||
u_long pkt_mask; /* The mask to apply to the packet */
|
||||
u_long pkt_result; /* The result when masking the flags */
|
||||
};
|
||||
|
||||
/*
|
||||
* PR_xx
|
||||
*/
|
||||
|
||||
#define PR_RULE_DS (1 << 0)
|
||||
#define PR_RULE_PROTO (1 << 1)
|
||||
#define PR_RULE_SADDR (1 << 2)
|
||||
#define PR_RULE_FLOW (1 << 3)
|
||||
#define PR_RULE_IFINDEX (1 << 4)
|
||||
#define PR_RULE_SCOPE (1 << 5)
|
||||
#define PR_RULE_DADDR (1 << 7)
|
||||
#define PR_RULE_PKTFLAGS (1 << 8)
|
||||
|
||||
/* Do the route lookup based on the source (not destination)
|
||||
* address in the matching route table
|
||||
*/
|
||||
#define PR_RULE_RTKEYSADDR (1 << 15)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !__INCpolicy_routingh */
|
||||
|
||||
@@ -0,0 +1,266 @@
|
||||
/*
|
||||
* Copyright (c) 2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01a,30nov06,kch Created.
|
||||
*/
|
||||
|
||||
#ifndef __INCppp_varh
|
||||
#define __INCppp_varh
|
||||
|
||||
/* includes */
|
||||
#include "net/if.h"
|
||||
#include "ipnet/ipioctl.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The following must not be changed unless equivalent changes are made to
|
||||
* IPCOM_AUTH_USERNAME_MAX and IPCOM_AUTH_PASSWORD_MAX as well.
|
||||
*/
|
||||
#define PPP_AUTH_USERNAME_MAX 32 /* Max user name length. */
|
||||
#define PPP_AUTH_PASSWORD_MAX 32 /* Max user password length. */
|
||||
|
||||
/*
|
||||
* IO control commands specific to the PPP protocol.
|
||||
*/
|
||||
|
||||
/* Driver PPP ioctls: */
|
||||
|
||||
/* ppp_drvconf; Get PPP driver config (default). */
|
||||
#define SIOCXPPPGDRVCONF VX_IOWR(PPP, 1, R, struct pppreq)
|
||||
|
||||
/* ppp_drvconf; Get PPP driver info (current). */
|
||||
#define SIOCXPPPGDRVINFO VX_IOWR(PPP, 2, R, struct pppreq)
|
||||
|
||||
/* u_int32_t; Set PPP driver baudrate. */
|
||||
#define SIOCXPPPSDRVBAUDRATE VX_IOWR(PPP, 3, W, struct pppreq)
|
||||
|
||||
/* -; Make driver signal up (test ioctl) */
|
||||
#define SIOCXPPPSDRVUP VX_IOWR(PPP, 4, R, struct pppreq)
|
||||
|
||||
/* -; Make driver signal down (test ioctl) */
|
||||
#define SIOCXPPPSDRVDOWN VX_IOWR(PPP, 5, R, struct pppreq)
|
||||
|
||||
/* int; Enable wincompat mode */
|
||||
#define SIOCXPPPSDRVWINCOMPAT VX_IOWR(PPP, 6, R, struct pppreq)
|
||||
|
||||
/* Link layer PPP ioctls: */
|
||||
/* u_int32_t; Get PPP main flags (see PPP_FLAG_xxx) */
|
||||
#define SIOCXPPPGFLAGS VX_IOWR(PPP, 10, R, struct pppreq)
|
||||
|
||||
/* u_int32_t; Set PPP main flags (in ipcom_netif.h) */
|
||||
#define SIOCXPPPSFLAGS VX_IOWR(PPP, 11, W, struct pppreq)
|
||||
|
||||
/* ppp_conf; Get PPP main config. */
|
||||
#define SIOCXPPPGCONF VX_IOWR(PPP, 12, R, struct pppreq)
|
||||
|
||||
/* ppp_conf; Set PPP main config. */
|
||||
#define SIOCXPPPSCONF VX_IOWR(PPP, 13, W, struct pppreq)
|
||||
|
||||
/* char [AUTH_USERNAME_MAX]; Get local user. */
|
||||
#define SIOCXPPPGUSER VX_IOWR(PPP, 14, R, struct pppreq)
|
||||
|
||||
/* char [AUTH_USERNAME_MAX]; Set local user. */
|
||||
#define SIOCXPPPSUSER VX_IOWR(PPP, 15, W, struct pppreq)
|
||||
|
||||
/* char [PPP_AUTH_PASSWORD_MAX]; Get local password. */
|
||||
#define SIOCXPPPGPASSWD VX_IOWR(PPP, 16, R, struct pppreq)
|
||||
|
||||
/* char [PPP_AUTH_PASSWORD_MAX]; Set local password. */
|
||||
#define SIOCXPPPSPASSWD VX_IOWR(PPP, 17, W, struct pppreq)
|
||||
|
||||
/* char [PPP_AUTH_USERNAME_MAX]; Get peer user. */
|
||||
#define SIOCXPPPGPEERUSER VX_IOWR(PPP, 18, R, struct pppreq)
|
||||
|
||||
/* if_name[IFNAMSIZ]; Set pppoe Ethernet interface */
|
||||
#define SIOCXPPPSETIF VX_IOWR(PPP, 20, W, struct pppreq)
|
||||
|
||||
/* ppp_debuginfo; Get PPP debug info. */
|
||||
#define SIOCXPPPGDINFO VX_IOWR(PPP, 22, R, struct pppreq)
|
||||
|
||||
|
||||
/*
|
||||
* PPP flags used with SIOCXPPP[G|S]FLAGS ioctl().
|
||||
*/
|
||||
|
||||
/* Disable Address/Control compression in both directions (snd/rcv). */
|
||||
#define PPP_FLAG_NOACCOMP 0x00000001
|
||||
|
||||
/* Do not send or ack ACCM confreq. */
|
||||
#define PPP_FLAG_NOACCM 0x00000002
|
||||
|
||||
/* Require the peer to authenticate itself before allowing snd/rcv NCP. */
|
||||
#define PPP_FLAG_AUTH 0x00000004
|
||||
|
||||
/* Do not require the peer to authenticate itself, i.e. do not ask for
|
||||
* authentication.
|
||||
*/
|
||||
#define PPP_FLAG_NOAUTH 0x00000008
|
||||
|
||||
/* Do not agree to authenticate using PAP. */
|
||||
#define PPP_FLAG_REFUSE_PAP 0x00000010
|
||||
|
||||
/* Do not agree to authenticate using MD5 CHAP. */
|
||||
#define PPP_FLAG_REFUSE_CHAP 0x00000020
|
||||
|
||||
|
||||
/* Initialization action is called directly after the PPP/PPPoE interface has
|
||||
* been attached, i.e. directly after ipcom_if_attach() has been called.
|
||||
* The init action is a good place to configure the interface with static
|
||||
* interface configuration like LCP, AUTH, IPCP and/or IPV6CP etc.
|
||||
* Note: The init action has replaced the example action callback function
|
||||
* in previous releases.
|
||||
*/
|
||||
#define PPP_ACTION_INIT 1
|
||||
|
||||
/* Called when LCP is starting. Configure LCP here.
|
||||
*/
|
||||
#define PPP_ACTION_LCP_STARTING 2
|
||||
|
||||
|
||||
/* Called when IPCP is starting.
|
||||
* Use this callback to set desired local IPv4 address.
|
||||
* The default local IP address is 0, which means we want the peer to suggest
|
||||
* an IP address for us.
|
||||
*/
|
||||
#define PPP_ACTION_IPCP_STARTING 3
|
||||
|
||||
/* Called when IPV6CP is starting.
|
||||
* Use this callback to set desired peer IPv6 address.
|
||||
* The default peer IP address is 0, which means we will refuse to suggest
|
||||
* an IP address for the peer.
|
||||
*/
|
||||
#define PPP_ACTION_IPV6CP_STARTING 4
|
||||
|
||||
|
||||
/* IPv4 / IPv6 up/down actions:
|
||||
* Enter code which must be run when PPP comes up/down here.
|
||||
*/
|
||||
#define PPP_ACTION_IP_UP 5
|
||||
#define PPP_ACTION_IP_DOWN 6
|
||||
#define PPP_ACTION_IPV6_UP 7
|
||||
#define PPP_ACTION_IPV6_DOWN 8
|
||||
|
||||
|
||||
/*
|
||||
* Called when peer sends IPv6 Identifier Configure-Request.
|
||||
* See RFC274:p6-8 for details.
|
||||
* Return -1 if refuse to suggest peer IP identifier, else 0.
|
||||
* 'data' = pointer to 128-bit IPv6 identifier.
|
||||
*/
|
||||
#define PPP_ACTION_PEER_IDENTIFIER 9
|
||||
|
||||
/*
|
||||
* Called when we need to authenticate ourselves (i.e. login) to the peer.
|
||||
* User code must call ipppp_login() with the same 'data',
|
||||
* user name and password when ready to login.
|
||||
*/
|
||||
#define PPP_ACTION_LOGIN 10
|
||||
|
||||
|
||||
/*
|
||||
* ioctl structure for SIOCXPPP[G|S]CONF options.
|
||||
*/
|
||||
typedef struct ppp_conf_struct
|
||||
{
|
||||
u_int16_t restart; /* Retransmission timeout in seconds. Default 3 */
|
||||
|
||||
/* Max # ConfNak returned before sending ConfRej. Default 10 */
|
||||
u_int8_t max_failure;
|
||||
|
||||
u_int8_t max_configure; /* Max # ConfReq retransmissions. Default 10 */
|
||||
u_int8_t max_terminate; /* Max # TermReq retransmissions. Default 2 */
|
||||
|
||||
/* Max # auth retransmissions before link terminate. Default 3 */
|
||||
u_int8_t max_authreq;
|
||||
u_int8_t pad[2];
|
||||
} ppp_conf;
|
||||
|
||||
|
||||
/*
|
||||
* ioctl structure for SIOCXPPPGDRVCONF option.
|
||||
*/
|
||||
typedef struct ppp_drvconf_struct
|
||||
{
|
||||
u_int32_t drv_flags; /* PPP driver flags. */
|
||||
u_int32_t baudrate; /* Baudrate. */
|
||||
|
||||
u_int32_t rcv_accm; /* Recv asyncmap. Default 0xffffffff */
|
||||
u_int32_t snd_accm; /* Send asyncmap. Default 0xffffffff */
|
||||
u_int16_t mru; /* Maximum Receive Unit. Default 1500. */
|
||||
u_int16_t mtu; /* Maximum Transmit Unit. Default 1500. */
|
||||
} ppp_drvconf;
|
||||
|
||||
|
||||
/*
|
||||
* PPP driver flags (drv_flags):
|
||||
*/
|
||||
|
||||
/* No initial/trailing PPP flag (0x7e). */
|
||||
#define DRVPPP_FLAG_NOFLAG 0x00000001
|
||||
|
||||
/* Do not byte-escape output/input packets. */
|
||||
#define DRVPPP_FLAG_NOESCAPE 0x00000002
|
||||
|
||||
/* Do not input-check or add output FCS. */
|
||||
#define DRVPPP_FLAG_NOFCS 0x00000004
|
||||
|
||||
/* Do not snd/rcv addr(0xff) ctrl(0x03). */
|
||||
#define DRVPPP_FLAG_NOACFC 0x00000008
|
||||
|
||||
|
||||
/*
|
||||
* ioctl structure for SIOCXPPPGDEBUGINFO option.
|
||||
*/
|
||||
typedef struct ppp_debuginfo_struct
|
||||
{
|
||||
u_int32_t link_flags; /* See ipnet_netif.h */
|
||||
u_int32_t pppoe_eth_ifindex;
|
||||
u_int8_t link_state;
|
||||
u_int8_t lcp_state;
|
||||
u_int8_t ipcp_state;
|
||||
u_int8_t ipv6cp_state;
|
||||
} ppp_debuginfo;
|
||||
|
||||
|
||||
/*
|
||||
* Interface request structure used for PPP ioctl's. All interface
|
||||
* ioctl's must have parameter definitions which begin with ifr_name and
|
||||
* link_index. The remainder may be option specific.
|
||||
*/
|
||||
struct pppreq
|
||||
{
|
||||
char pppr_name[IFNAMSIZ]; /* if name, e.g. "ppp0" */
|
||||
int link_index; /* link_index, currently unused (for MPPP) */
|
||||
|
||||
union
|
||||
{
|
||||
u_int32_t ppp_flags; /* Get/Set PPP flags. */
|
||||
ppp_conf pppconf; /* Get/Set PPP protocol configuration. */
|
||||
char username[PPP_AUTH_USERNAME_MAX];
|
||||
char password[PPP_AUTH_PASSWORD_MAX];
|
||||
char if_name[IFNAMSIZ];
|
||||
ppp_drvconf drvconf; /* Get PPP driver configuration. */
|
||||
u_int32_t drv_baudrate; /* Set PPP driver baudrate. */
|
||||
int drv_wincompat; /* Windows compat mode */
|
||||
ppp_debuginfo debuginfo; /* Get PPP debug info. */
|
||||
} pppru;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCppp_varh */
|
||||
@@ -0,0 +1,362 @@
|
||||
/* qos.h - quality of service header file */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01a,30nov06,kch Guarded inet6 definitions with INET6. Also replaced IP_IOWR
|
||||
with VX_IOWR and added ipnet/ipioctl.h include.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __INCqosh
|
||||
#define __INCqosh
|
||||
|
||||
/* includes */
|
||||
#include <ipnet/ipioctl.h>
|
||||
#include "net/if.h"
|
||||
#include "netinet/in.h"
|
||||
#ifdef INET6
|
||||
#include "netinet6/in6.h"
|
||||
#endif /* INET6 */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Quality of service i/o controls
|
||||
*/
|
||||
#define IFQ_BASE 192
|
||||
|
||||
/* Add a filter for differentiated services meter/marker */
|
||||
#define SIOCXADSFILTER VX_IOWR(DS, 0, W, struct ds_filter)
|
||||
|
||||
/* Delete a filter for differentiated services meter/marker */
|
||||
#define SIOCXDDSFILTER VX_IOWR(DS, 1, W, struct ds_filter)
|
||||
|
||||
/* Create a new differentiated services meter/marker entity */
|
||||
#define SIOCXDSCREATE VX_IOWR(DS, 2, W, struct ds)
|
||||
|
||||
/* Destroys a differentiated services meter/marker entity */
|
||||
#define SIOCXDSDESTROY VX_IOWR(DS, 3, W, struct ds)
|
||||
|
||||
/* Add a filter for differentiated services meter/marker */
|
||||
#define SIOCXADSMAP VX_IOWR(DS, 4, W, struct ds_map)
|
||||
|
||||
/* Delete a filter for differentiated services meter/marker */
|
||||
#define SIOCXDDSMAP VX_IOWR(DS, 5, W, struct ds_map)
|
||||
|
||||
/* Get the queue type for an interface */
|
||||
#define SIOCGIFQUEUE VX_IOWR(NETIF, (IFQ_BASE + 0), R, struct ifqueue_qos)
|
||||
|
||||
/* Set the queue type for an interface */
|
||||
#define SIOCSIFQUEUE VX_IOWR(NETIF, (IFQ_BASE + 1), W, struct ifqueue_qos)
|
||||
|
||||
/* Add a filter to an interface queue */
|
||||
#define SIOCXAIFQFILTER VX_IOWR(NETIF, (IFQ_BASE + 2), W, struct ifqueue_filter)
|
||||
|
||||
/* Delete a filter from an interface queue */
|
||||
#define SIOCXDIFQFILTER VX_IOWR(NETIF, (IFQ_BASE + 3), W, struct ifqueue_filter)
|
||||
|
||||
|
||||
/*
|
||||
* in_addr_union
|
||||
*/
|
||||
#ifndef IN_ADDR_UNION_TYPE
|
||||
#define IN_ADDR_UNION_TYPE
|
||||
union in_addr_union
|
||||
{
|
||||
struct in_addr in;
|
||||
#ifdef INET6
|
||||
struct in6_addr in6;
|
||||
#endif /* INET6 */
|
||||
};
|
||||
#endif /* !IN_ADDR_UNION_TYPE */
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* CLASSIFIER DEFINES
|
||||
*/
|
||||
|
||||
/*
|
||||
* classifier_rule
|
||||
*/
|
||||
struct classifier_rule
|
||||
{
|
||||
u_short mask; /* Set CLS_RULE_xxx bit for each field that must match */
|
||||
u_char ds; /* Traffic class (IPv6) or TOS (IPv4) (== DS field for DiffServ) */
|
||||
u_char proto; /* Protocol in the IP header */
|
||||
u_short sport_low; /* Source port for UDP and TCP protocols [low..high] */
|
||||
u_short sport_high; /* Source port for UDP and TCP protocols */
|
||||
u_short dport_low; /* Destination port for UDP and TCP protocols [low..high] */
|
||||
u_short dport_high; /* Destination port for UDP and TCP protocols */
|
||||
u_char af; /* Address family of the addresses (AF_INET or AF_INET6) */
|
||||
u_char saddr_prefixlen; /* Source prefixlen, set to 0 for exact match of 'saddr' */
|
||||
u_char daddr_prefixlen; /* Destination prefixlen, set to 0 for exact match of 'daddr' */
|
||||
union in_addr_union saddr; /* Source address or source network */
|
||||
union in_addr_union daddr; /* Destination address or destination network */
|
||||
};
|
||||
|
||||
#define CLS_RULE_DS (1 << 0)
|
||||
#define CLS_RULE_PROTO (1 << 1)
|
||||
#define CLS_RULE_SADDR (1 << 2)
|
||||
#define CLS_RULE_DADDR (1 << 3)
|
||||
#define CLS_RULE_SPORT (1 << 4)
|
||||
#define CLS_RULE_DPORT (1 << 5)
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* DIFFERENTIATE SERVICES
|
||||
*/
|
||||
|
||||
/*
|
||||
* Connects a DS rule with a DS meter/marker.
|
||||
* Each meter/marker can be pointed to by more than one rule
|
||||
*/
|
||||
struct ds_map
|
||||
{
|
||||
int filter_id; /* The filter ID when running in DiffServ Multi-Field mode.
|
||||
The value of the DS (i.e. TOS or TCLASS) field when running in
|
||||
Behavior Aggregate mode */
|
||||
int ds_id; /* The ID of the Differentiated Services handler to apply for
|
||||
traffic matching the filter */
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Rule to match traffic
|
||||
*/
|
||||
|
||||
struct ds_filter
|
||||
{
|
||||
int id; /* Id for this filter. Read only for add operation */
|
||||
struct classifier_rule rule; /* The rule for this filter */
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* name="SimpleMarker" - Structure for the simple marker
|
||||
* Matching traffic will be assigned the specified DS field
|
||||
* and the specified drop_precedence
|
||||
*/
|
||||
struct ds_sm
|
||||
{
|
||||
u_char mask; /* DS_SM_xxx bits that determines if what should be done
|
||||
with matching packets */
|
||||
u_char ds_value; /* Differentiated Services Field to set (if DS_SM_DS_VAL is set) */
|
||||
u_char drop_precedence; /* The drop precedence, which has to be one of the
|
||||
IPCOM_PKT_DROP_PRECEDENCE_xxx constants (if DS_SM_DROP_P is set) */
|
||||
};
|
||||
|
||||
#define DS_SM_DS_VAL ((u_char)(1 << 0))
|
||||
#define DS_SM_DROP_P ((u_char)(1 << 1))
|
||||
|
||||
|
||||
/*
|
||||
* name="srTCM" - Structure for the single rate Three Color Marker
|
||||
*/
|
||||
struct ds_srtcm
|
||||
{
|
||||
u_char mode; /* Mode this meter is operating in, one of the
|
||||
DS_SRTCM_MODE_xxx constants */
|
||||
u_long CIR; /* Committed Information Rate (bytes/second) */
|
||||
u_long CBS; /* Committed Burst Size (bytes) */
|
||||
u_long EBS; /* Excess Burst Size (bytes) */
|
||||
u_char ds_green; /* Differentiated Services Field to set for green packets */
|
||||
u_char ds_yellow; /* Differentiated Services Field to set for yellow packets */
|
||||
u_char ds_red; /* Differentiated Services Field to set for red packets */
|
||||
};
|
||||
|
||||
/* The mode that the srTCM can operate in */
|
||||
#define DS_SRTCM_MODE_COLOR_BLIND 1
|
||||
#define DS_SRTCM_MODE_COLOR_AWARE 2
|
||||
|
||||
|
||||
/*
|
||||
* Differentiated Services ID structure
|
||||
*/
|
||||
#define DS_NAME_SIZE 16
|
||||
struct ds
|
||||
{
|
||||
int id; /* ID of the diffserv handler. Read only for create operation */
|
||||
char name[DS_NAME_SIZE]; /* The name of the diffserv handler */
|
||||
union ds_data
|
||||
{
|
||||
struct ds_sm sm;
|
||||
struct ds_srtcm srtcm;
|
||||
} d;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* LEAF NETWORK INTERFACE QUEUES
|
||||
*/
|
||||
|
||||
/*
|
||||
* ifqueue_fifo
|
||||
* Parameter struct used for "fifo" type queue.
|
||||
*/
|
||||
struct ifqueue_fifo
|
||||
{
|
||||
u_long fifo_limit; /* Max number of packets that can be queued */
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* ifqueue_dpaf
|
||||
* Parameter struct used for the Drop Precedence Aware FIFO queue type.
|
||||
* This queue type uses more memory and is a little slower compared to the
|
||||
* FIFO queue.
|
||||
*/
|
||||
struct ifqueue_dpaf
|
||||
{
|
||||
u_long dpaf_limit; /* Max number of packets (regardless of drop
|
||||
precedence) that can be queued */
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* ifqueue_netemu
|
||||
* Parameter struct used for "netemu" type queue.
|
||||
*/
|
||||
struct ifqueue_netemu
|
||||
{
|
||||
u_long netemu_limit; /* Max number of packets that can be queued */
|
||||
u_long netemu_min_latency; /* Minimum latency added to packets in milliseconds */
|
||||
u_long netemu_max_latency; /* Maximum latency added to packets in milliseconds */
|
||||
BOOL netemu_random_drop; /* FALSE -> drop every drop_probability packet
|
||||
TRUE -> there is 1/every drop_probability
|
||||
chance that at packet is dropped */
|
||||
u_long netemu_drop_probability; /* 1 means every packet dropped, 10 means that
|
||||
every 10 packet is dropped */
|
||||
u_long netemu_drop_pattern; /* Bit patter where set bit means drop packet
|
||||
ex: Bit 0 and bit 2 set, all other cleared */
|
||||
u_char netemu_drop_pattern_len; /* Number of valid bits in "netemu_drop_pattern",
|
||||
setting the length to zero will have the same effect
|
||||
as setting bit 0 in the pattern and the length to 1 */
|
||||
BOOL netemu_random_corrupt; /* FALSE -> corrupt every corrupt_probability packet
|
||||
TRUE -> there is 1/every corrupt_probability
|
||||
chance that a packet is corrupted */
|
||||
u_long netemu_corrupt_probability; /* 1 means every packet corrupted, 10 means tha
|
||||
every 10 packet is corrupted */
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* CONTAINER NETWORK INTERFACE QUEUES
|
||||
*/
|
||||
|
||||
/*
|
||||
* ifqueue_filter
|
||||
* Determines which interface queue a packet will be queued at in the
|
||||
* container queue identified by the filter ID.
|
||||
* Diffserv traffic should only use the 'ds' field in the rule, but it is
|
||||
* possible to use all supported fields.
|
||||
*/
|
||||
struct ifqueue_filter
|
||||
{
|
||||
char filter_ifname[IFNAMSIZ]; /* Interface name, e.g. "gif1", "gre1" */
|
||||
int filter_id; /* Will be set to the ID of the filter for add
|
||||
and is used to identify the filter on delete */
|
||||
int filter_queue_id; /* The ID of the queue this filter should
|
||||
be attached to */
|
||||
/* Following fields are only needed for filter add operations */
|
||||
int filter_child_queue_id; /* The ID of the child that packet matching
|
||||
this rule should be queued at */
|
||||
struct classifier_rule filter_rule;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* ifqueue_container
|
||||
* Read only structure that will be filled in by SIOCGIFQUEUE operation.
|
||||
*/
|
||||
#define IFQ_CONTAINER_MAX_COUNT 64
|
||||
struct ifqueue_container
|
||||
{
|
||||
int child_count; /* Number of valid entries in the 'child_ids' array */
|
||||
int child_ids[IFQ_CONTAINER_MAX_COUNT]; /* ID of the childs */
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* ifqueue_mbc
|
||||
* Parameter struct used for "mbc" type queues.
|
||||
* This container queue type has 2 or more "bands", filter rules determines
|
||||
* which band is used when enqueueing. The rule for dequeueing works like
|
||||
* this; packet will be dequeued from band 0 until empty,
|
||||
* packets will then be dequeued from band 1 until empty, etc.
|
||||
*/
|
||||
struct ifqueue_mbc
|
||||
{
|
||||
struct ifqueue_container mbc_container; /* Read only */
|
||||
u_long mbc_bands; /* Number of bands, must be 2 or more */
|
||||
u_long mbc_default_band; /* Index of the band to use for packets that
|
||||
do not match any rule [0..prio_bands) */
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* ifqueue_htbc
|
||||
* Parameter struct used for "htbc" type queues.
|
||||
* The default queue will get all traffic that does not match some other
|
||||
* classify rule.
|
||||
* Dequeueing is done in by Round-Robin through all childs.
|
||||
*/
|
||||
struct ifqueue_htbc
|
||||
{
|
||||
struct ifqueue_container htbc_container; /* Read only */
|
||||
u_long htbc_byterate; /* Maximum bitrate for this queue */
|
||||
u_long htbc_token_limit; /* Maximum number of tokens this queue
|
||||
can have, MUST be >MTU of the interface */
|
||||
int htbc_default_id; /* The ID of the default queue (read-only) */
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* ifqueue_qos - ioctl
|
||||
* struct used with SIOCxIFQUEUE ioctls.
|
||||
*/
|
||||
struct ifqueue_qos
|
||||
{
|
||||
char ifq_name[IFNAMSIZ]; /* if name, e.g. "gif1", "gre1" */
|
||||
char ifq_type[IFNAMSIZ]; /* queue type e.g. "fifo", "red" */
|
||||
int ifq_id; /* Must be an ID that unique on the specified interface or
|
||||
IFQ_ID_NONE for get operation when the root queue should be returned */
|
||||
int ifq_parent_id; /* ID of the parent queue or IFQ_ID_NONE
|
||||
if this is directly attached to the interface */
|
||||
int ifq_count; /* Will contain the current number of queued packets
|
||||
after a SIOCGIFQUEUE call */
|
||||
union ifqueue_data
|
||||
{
|
||||
struct ifqueue_fifo fifo;
|
||||
struct ifqueue_dpaf dpaf;
|
||||
struct ifqueue_netemu netemu;
|
||||
struct ifqueue_htbc htbc;
|
||||
struct ifqueue_mbc mbc;
|
||||
} ifq_data;
|
||||
};
|
||||
|
||||
#define IFQ_ID_NONE 0 /* Must be used as parent ID if the queue is a root queue */
|
||||
#define IFQ_ID_DEFAULT 1 /* Default ID, should be used on root queues where no specific ID is required */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !__INCqosh */
|
||||
@@ -0,0 +1,52 @@
|
||||
/* logCategories.h */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2004-2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01g,20sep10,h_x Add a new marco (QOS) for log.
|
||||
01f,06sep06,kch Cleanup for IPNet integration.
|
||||
01e,08feb06,kch Added ALTQ log entry.
|
||||
01d,15jun05,tlu Add an entry for MIP6
|
||||
01c,19apr05,rp merged from comp_wn_ipv6_mld_interim-dev
|
||||
01b,28oct04,ann changed default log level for FTP client to 0 (SPR# 103249)
|
||||
01a,07sep04,dlk written
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* This header file forms the database of logging facilities used
|
||||
* by applLogLib and syslog.h. It is meant to be included multiple
|
||||
* times, with varying definitions of the LOG_DB() and LOG_DB_LAST()
|
||||
* macros, so it is not protected against multiple inclusion.
|
||||
*
|
||||
* Default Default
|
||||
* Facility Dest. FD Logging Decoration and Level
|
||||
* -------- -------- ------------------------------
|
||||
*/
|
||||
|
||||
LOG_DB (PING_V6, STD_OUT, (_LOG_DEC_DFLT | _LOG_LVL_DFLT))
|
||||
LOG_DB (TELNET, STD_OUT, (_LOG_DEC_DFLT | _LOG_LVL_DFLT))
|
||||
LOG_DB (TELNETD, STD_OUT, (_LOG_DEC_DFLT | _LOG_LVL_DFLT))
|
||||
LOG_DB (TFTPD, STD_OUT, (_LOG_DEC_DFLT | _LOG_LVL_DFLT))
|
||||
LOG_DB (TFTP, STD_OUT, (_LOG_DEC_DFLT | _LOG_LVL_DFLT))
|
||||
LOG_DB (FTP, STD_OUT, (_LOG_DEC_DFLT | 0 ))
|
||||
LOG_DB (FTPD, STD_OUT, (_LOG_DEC_DFLT | _LOG_LVL_DFLT))
|
||||
LOG_DB (SYSCTL, STD_OUT, (_LOG_DEC_DFLT | _LOG_LVL_DFLT))
|
||||
LOG_DB (RLOGIN, STD_OUT, (_LOG_DEC_DFLT | _LOG_LVL_DFLT))
|
||||
LOG_DB (REMLIB, STD_OUT, (_LOG_DEC_DFLT | _LOG_LVL_DFLT))
|
||||
LOG_DB (KERN, KERN_LOG_FD, (_LOG_DEC_DFLT | _LOG_LVL_DFLT))
|
||||
LOG_DB (NETDRV, STD_OUT, (_LOG_DEC_DFLT | _LOG_LVL_DFLT))
|
||||
LOG_DB (QOS, STD_OUT, (_LOG_DEC_DFLT | _LOG_LVL_DFLT))
|
||||
|
||||
/* must be last */
|
||||
LOG_DB_LAST (GENERAL, STD_OUT, (_LOG_DEC_DFLT | _LOG_LVL_DFLT))
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
/* domain.h - communication domain structure and prototypes */
|
||||
|
||||
/* Copyright 2001-2005 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)domain.h 8.1 (Berkeley) 6/2/93
|
||||
* $FreeBSD: src/sys/sys/domain.h,v 1.14 1999/12/29 04:24:40 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01j,09sep06,kch Cleanup for IPNet integration.
|
||||
01i,07feb05,vvv _KERNEL cleanup
|
||||
01h,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01g,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01f,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01e,06aug03,nee Accordion Base6 merge from ACCORDION_BASE6_MERGE_BASELINE
|
||||
label
|
||||
01d,03jan03,ann added the prototype for addDomain
|
||||
01d,02dec02,spm merged from WINDNET_IPV6-1_0-FCS label (ver 01c,06sep02,hsh)
|
||||
01c,26aug02,kal virtualised and moved to addDomain()
|
||||
01b,03feb02,ham included cdefs.h for tornado build.
|
||||
01a,15aug01,ann ported to clarinet from freeBSD 4.3 ver 1.14
|
||||
*/
|
||||
|
||||
#ifndef _SYS_DOMAIN_H_
|
||||
#define _SYS_DOMAIN_H_
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Structure per communications domain.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Forward structure declarations for function prototypes [sic].
|
||||
*/
|
||||
struct mbuf;
|
||||
|
||||
struct domain {
|
||||
int dom_family; /* AF_xxx */
|
||||
char *dom_name;
|
||||
void (*dom_init) /* initialize domain data structures */
|
||||
__P((void));
|
||||
int (*dom_externalize) /* externalize access rights */
|
||||
__P((struct mbuf *));
|
||||
void (*dom_dispose) /* dispose of internalized rights */
|
||||
__P((struct mbuf *));
|
||||
struct protosw *dom_protosw, *dom_protoswNPROTOSW;
|
||||
struct domain *dom_next;
|
||||
int (*dom_rtattach) /* initialize routing table */
|
||||
__P((void **, int));
|
||||
int dom_rtoffset; /* an arg to rtattach, in bits */
|
||||
int dom_maxrtkey; /* for routing layer */
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* _WRS_KERNEL */
|
||||
#endif /* _SYS_DOMAIN_H_ */
|
||||
@@ -0,0 +1,129 @@
|
||||
/* ethernet.h - ethernet header file */
|
||||
|
||||
/* Copyright 2001-2005, 2017 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* Fundamental constants relating to ethernet.
|
||||
*
|
||||
* $FreeBSD: src/sys/net/ethernet.h,v 1.12.2.5 2000/07/19 21:43:52 archie Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01n,02feb16,h_l Add PTP ethertype definition
|
||||
01m,09jan12,h_x Move extern "C" after last header file include.
|
||||
01l,12sep06,kch Removed reference to struct ifnet.
|
||||
01k,09sep06,kch Cleanup for IPNet integration.
|
||||
01j,07feb05,vvv _KERNEL cleanup
|
||||
01i,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01h,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01g,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01f,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01e,20aug03,niq Include cdefs.h for __BEGIN_DECLS definition (to correct
|
||||
compilation issues
|
||||
01d,10jun03,vvv include netVersion.h
|
||||
01c,09sep02,hsh add c++ protection
|
||||
01b,12sep01,ann adding a definition for ETHERSMALL
|
||||
01a,07aug01,ham created from FreeBSD4.3-RELEASE(July-17-01).
|
||||
*/
|
||||
|
||||
#ifndef _NET_ETHERNET_H_
|
||||
#define _NET_ETHERNET_H_
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
|
||||
#include <netVersion.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The number of bytes in an ethernet (MAC) address.
|
||||
*/
|
||||
#define ETHER_ADDR_LEN 6
|
||||
|
||||
/*
|
||||
* The number of bytes in the type field.
|
||||
*/
|
||||
#define ETHER_TYPE_LEN 2
|
||||
|
||||
/*
|
||||
* The number of bytes in the trailing CRC field.
|
||||
*/
|
||||
#define ETHER_CRC_LEN 4
|
||||
|
||||
/*
|
||||
* The length of the combined header.
|
||||
*/
|
||||
#define ETHER_HDR_LEN (ETHER_ADDR_LEN*2+ETHER_TYPE_LEN)
|
||||
|
||||
/*
|
||||
* The minimum packet length.
|
||||
*/
|
||||
#define ETHER_MIN_LEN 64
|
||||
|
||||
/*
|
||||
* The maximum packet length.
|
||||
*/
|
||||
#define ETHER_MAX_LEN 1518
|
||||
|
||||
/*
|
||||
* A macro to validate a length with
|
||||
*/
|
||||
#define ETHER_IS_VALID_LEN(foo) \
|
||||
((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN)
|
||||
|
||||
/*
|
||||
* Structure of a 10Mb/s Ethernet header.
|
||||
*/
|
||||
struct ether_header {
|
||||
u_char ether_dhost[ETHER_ADDR_LEN];
|
||||
u_char ether_shost[ETHER_ADDR_LEN];
|
||||
u_short ether_type;
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure of a 48-bit Ethernet address.
|
||||
*/
|
||||
struct ether_addr {
|
||||
u_char octet[ETHER_ADDR_LEN];
|
||||
};
|
||||
|
||||
#define ETHERTYPE_PUP 0x0200 /* PUP protocol */
|
||||
#define ETHERTYPE_IP 0x0800 /* IP protocol */
|
||||
#define ETHERTYPE_ARP 0x0806 /* Addr. resolution protocol */
|
||||
#define ETHERTYPE_REVARP 0x8035 /* reverse Addr. resolution protocol */
|
||||
#define ETHERTYPE_VLAN 0x8100 /* IEEE 802.1Q VLAN tagging */
|
||||
#define ETHERTYPE_IPV6 0x86dd /* IPv6 */
|
||||
#define ETHERTYPE_PTP 0x88f7 /* PTP */
|
||||
#define ETHERTYPE_LOOPBACK 0x9000 /* used to test interfaces */
|
||||
/* XXX - add more useful types here */
|
||||
|
||||
/*
|
||||
* The ETHERTYPE_NTRAILER packet types starting at ETHERTYPE_TRAIL have
|
||||
* (type-ETHERTYPE_TRAIL)*512 bytes of data followed
|
||||
* by an ETHER type (as given above) and then the (variable-length) header.
|
||||
*/
|
||||
#define ETHERTYPE_TRAIL 0x1000 /* Trailer packet */
|
||||
#define ETHERTYPE_NTRAILER 16
|
||||
|
||||
#define ETHERMTU (ETHER_MAX_LEN-ETHER_HDR_LEN-ETHER_CRC_LEN)
|
||||
#define ETHERMIN (ETHER_MIN_LEN-ETHER_HDR_LEN-ETHER_CRC_LEN)
|
||||
|
||||
/* Clarinet */
|
||||
#define ETHERSMALL 60
|
||||
|
||||
/*
|
||||
* For device drivers to specify whether they support BPF or not
|
||||
*/
|
||||
#define ETHER_BPF_UNSUPPORTED 0
|
||||
#define ETHER_BPF_SUPPORTED 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* _WRS_KERNEL */
|
||||
#endif /* !_NET_ETHERNET_H_ */
|
||||
@@ -0,0 +1,346 @@
|
||||
/* if.h - network interface header file */
|
||||
|
||||
/* Copyright 2001 - 2007 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1989, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)if.h 8.1 (Berkeley) 6/10/93
|
||||
* $FreeBSD: src/sys/net/if.h,v 1.58.2.9 2002/08/30 14:23:38 sobomax Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
02q,12jan12,h_x Move extern "C" after last header file include.
|
||||
02p,20dec07,dlk Add IFF_END_MODIFIABLE mask.
|
||||
02o,04dec06,kch Changed ifru_flags in ifreq to u_short.
|
||||
02n,25oct06,kch Comment out ifi_hwassist in if_data structure for now.
|
||||
02m,03oct06,kch Removed unsupported IFF flags for IPNet integration. Also
|
||||
changed the type for index associated with an ifp from
|
||||
u_short to u_long.
|
||||
02l,26sep06,kch Added ifru_ifindex, ifru_vr and ifru_opt members to ifreq
|
||||
structure. Changed ifru_flags from long to u_short.
|
||||
02k,12sep06,kch Restore if_nameindex structure definition and prototypes
|
||||
for if_nametoindex(), if_indextoname(), if_nameindex()
|
||||
and if_freenameindex().
|
||||
02j,09sep06,kch Cleanup for IPNet integration.
|
||||
02i,30aug05,kch Added ifdeladdrreq structure (moved from if.c) (SPR #112068).
|
||||
02h,17aug05,mcm Including sys/time.h for struct timeval
|
||||
02g,26jul05,kch Move if_clone structure definition to if_clone.h.
|
||||
02f,30jun05,wap Move ifi_link_state for binary compatibility
|
||||
02e,24jun05,wap Add link state support
|
||||
02d,18feb05,wap Allow sysctl init routines to be scaled out
|
||||
02c,07feb05,vvv _KERNEL cleanup
|
||||
02b,14jan05,vvv osdep.h cleanup
|
||||
02a,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01z,19jul04,niq Move sysctl initialization from configelette to the component
|
||||
init routine
|
||||
01y,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
||||
/main/vdt/base6_itn5_networking-int/2)
|
||||
01x,09feb04,niq Include if_var.h only in kernel context
|
||||
01w,14dec03,ijm added IFF_PROXY_ALL for spr#85896,for interface based proxy
|
||||
01v,20nov03,niq osdep.h cleanup
|
||||
01u,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01t,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01s,24oct03,rlm updated #includes for header re-org
|
||||
01r,15sep03,vvv updated path for new headers
|
||||
01q,18aug03,nee Merging from ACCORDION_BASE6_MERGE_BASELINE
|
||||
01p,15may03,spm Tornado 2.2 FCS merge (SPR #69683; ver 01m,10oct01,rae:
|
||||
TOR2_2-FCS-COPY label, tor2 branch, /wind/river VOB)
|
||||
01o,09may03,vvv included socket.h
|
||||
01n,08may03,vvv fixed value for IFF_PPROMISC (SPR #88237)
|
||||
01m,01may03,spm Tornado 2.2 CP1 merge (from ver 01n,17jan03,vvv:
|
||||
TOR2_2-CP1-F label, tor2_2-patch branch, /wind/river VOB)
|
||||
01l,01feb03,pas merge from FreeBSD 4.7 - clone, announce interfaces
|
||||
01k,17sep02,nee added admin control macros
|
||||
01j,09sep02,hsh add c++ protection
|
||||
01i,24aug02,nee extended ifnet for admin control;defined admin states for
|
||||
boot/up/down
|
||||
01h,12jul02,hsh fix head file for ppc
|
||||
01g,03feb02,ham modified for tornado build.
|
||||
01f,16dec01,ann temporarily moving the if_name* declerations out the _KERNEL
|
||||
condition
|
||||
01e,24sep01,ppp adding the prototype for if_name and the macro for IFAREF
|
||||
01d,12sep01,ann adding some IFF flags
|
||||
01c,11sep01,ann uncomment ifi_lastchange
|
||||
01b,09sep01,ham changed header file's path, made ifi_lastchange obsolete.
|
||||
01a,16jul01,ham created from FreeBSD4.3-RELEASE(July-17-01).
|
||||
*/
|
||||
|
||||
#ifndef __INCifh
|
||||
#define __INCifh
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
#include <sys/queue.h>
|
||||
#include <sys/times.h>
|
||||
#else
|
||||
#include <sys/time.h>
|
||||
#endif
|
||||
|
||||
#include <sys/socket.h>
|
||||
#include <cfgDefs.h>
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Length of interface external name, including terminating '\0'.
|
||||
* Note: this is the same size as a generic device's external name.
|
||||
*/
|
||||
#define IFNAMSIZ 16
|
||||
#define IF_NAMESIZE IFNAMSIZ
|
||||
|
||||
/*
|
||||
* Structure describing information about an interface
|
||||
* which may be of interest to management entities.
|
||||
*/
|
||||
struct if_data {
|
||||
/* generic interface information */
|
||||
u_char ifi_type; /* ethernet, tokenring, etc */
|
||||
u_char ifi_addrlen; /* media address length */
|
||||
u_char ifi_hdrlen; /* media header length */
|
||||
u_char ifi_link_state; /* current link state */
|
||||
u_long ifi_mtu; /* maximum transmission unit */
|
||||
u_long ifi_metric; /* routing metric (external only) */
|
||||
u_long ifi_baudrate; /* linespeed */
|
||||
/* volatile statistics */
|
||||
u_long ifi_ipackets; /* packets received on interface */
|
||||
u_long ifi_ierrors; /* input errors on interface */
|
||||
u_long ifi_opackets; /* packets sent on interface */
|
||||
u_long ifi_oerrors; /* output errors on interface */
|
||||
u_long ifi_collisions; /* collisions on csma interfaces */
|
||||
u_long ifi_ibytes; /* total number of octets received */
|
||||
u_long ifi_obytes; /* total number of octets sent */
|
||||
u_long ifi_imcasts; /* packets received via multicast */
|
||||
u_long ifi_omcasts; /* packets sent via multicast */
|
||||
u_long ifi_iqdrops; /* dropped on input, this interface */
|
||||
u_long ifi_noproto; /* destined for unsupported protocol */
|
||||
#if 0
|
||||
u_long ifi_hwassist; /* HW offload capabilities */
|
||||
#endif
|
||||
struct timeval ifi_lastchange; /* time of last administrative change */
|
||||
};
|
||||
|
||||
#define IFF_UP 0x1 /* interface link is up */
|
||||
#define IFF_BROADCAST 0x2 /* broadcast address valid */
|
||||
#define IFF_DEBUG 0x4 /* turn on debugging */
|
||||
#define IFF_LOOPBACK 0x8 /* is a loopback net */
|
||||
#define IFF_POINTOPOINT 0x10 /* interface is point-to-point link */
|
||||
#define IFF_RUNNING 0x40 /* resources allocated */
|
||||
#define IFF_NOARP 0x80 /* no address resolution protocol */
|
||||
#define IFF_PROMISC 0x100 /* receive all packets */
|
||||
#define IFF_ALLMULTI 0x200 /* receive all multicast packets */
|
||||
#define IFF_OACTIVE 0x400 /* transmission in progress */
|
||||
#define IFF_SIMPLEX 0x800 /* can't hear own transmissions */
|
||||
#define IFF_LINK0 0x1000 /* forwarding disabled */
|
||||
#define IFF_LINK1 0x2000 /* per link layer defined bit */
|
||||
#define IFF_LINK2 0x4000 /* per link layer defined bit */
|
||||
#define IFF_ALTPHYS IFF_LINK2 /* use alternate physical connection */
|
||||
#define IFF_MULTICAST 0x8000 /* supports multicast */
|
||||
#define IFF_NOTRAILERS 0x20000 /* avoid use of trailers */
|
||||
|
||||
/*
|
||||
* These bits are modifiable for END devices via EIOCSFLAGS.
|
||||
* For now, we allow modifying some unallocated bits and the IFF_LINK* bits.
|
||||
* IFF_UP is explicitly NOT modifiable; to start or stop an interface
|
||||
* at the END level, one must use muxDevStart()/muxDevStop(). The END driver
|
||||
* controls its own IFF_UP flag in pEnd->flags.
|
||||
*/
|
||||
#define IFF_END_MODIFIABLE \
|
||||
(IFF_DEBUG | IFF_PROMISC | IFF_ALLMULTI | \
|
||||
IFF_LINK0 | IFF_LINK1 | IFF_LINK2 | \
|
||||
0xfffd0000)
|
||||
|
||||
/*
|
||||
* Values for if_link_state.
|
||||
*/
|
||||
#define LINK_STATE_UNKNOWN 0 /* link invalid/unknown */
|
||||
#define LINK_STATE_DOWN 1 /* link is down */
|
||||
#define LINK_STATE_UP 2 /* link is up */
|
||||
|
||||
/* Capabilities that interfaces can advertise. */
|
||||
#define IFCAP_RXCSUM 0x0001 /* can offload checksum on RX */
|
||||
#define IFCAP_TXCSUM 0x0002 /* can offload checksum on TX */
|
||||
#define IFCAP_NETCONS 0x0004 /* can be a network console */
|
||||
|
||||
#define IFCAP_HWCSUM (IFCAP_RXCSUM | IFCAP_TXCSUM)
|
||||
|
||||
|
||||
/*
|
||||
* Message format for use in obtaining information about interfaces
|
||||
* from getkerninfo and the routing socket
|
||||
*/
|
||||
struct if_msghdr {
|
||||
u_short ifm_msglen; /* to skip over non-understood messages */
|
||||
u_char ifm_version; /* future binary compatability */
|
||||
u_char ifm_type; /* message type */
|
||||
int ifm_addrs; /* like rtm_addrs */
|
||||
int ifm_flags; /* value of if_flags */
|
||||
u_long ifm_index; /* index for associated ifp */
|
||||
struct if_data ifm_data;/* statistics and other data about if */
|
||||
};
|
||||
|
||||
/*
|
||||
* Message format for use in obtaining information about interface addresses
|
||||
* from getkerninfo and the routing socket
|
||||
*/
|
||||
struct ifa_msghdr {
|
||||
u_short ifam_msglen; /* to skip over non-understood messages */
|
||||
u_char ifam_version; /* future binary compatability */
|
||||
u_char ifam_type; /* message type */
|
||||
int ifam_addrs; /* like rtm_addrs */
|
||||
int ifam_flags; /* value of ifa_flags */
|
||||
u_long ifam_index; /* index for associated ifp */
|
||||
int ifam_metric; /* value of ifa_metric */
|
||||
};
|
||||
|
||||
/*
|
||||
* Message format announcing the arrival or departure of a network interface.
|
||||
*/
|
||||
struct if_announcemsghdr {
|
||||
u_short ifan_msglen; /* to skip over non-understood messages */
|
||||
u_char ifan_version; /* future binary compatibility */
|
||||
u_char ifan_type; /* message type */
|
||||
u_long ifan_index; /* index for associated ifp */
|
||||
char ifan_name[IFNAMSIZ]; /* if name, e.g. "en0" */
|
||||
u_short ifan_what; /* what type of announcement */
|
||||
};
|
||||
|
||||
#define IFAN_ARRIVAL 0 /* interface arrival */
|
||||
#define IFAN_DEPARTURE 1 /* interface departure */
|
||||
|
||||
/*
|
||||
* Interface request structure used for socket
|
||||
* ioctl's. All interface ioctl's must have parameter
|
||||
* definitions which begin with ifr_name. The
|
||||
* remainder may be interface specific.
|
||||
*/
|
||||
struct sockaddr;
|
||||
|
||||
struct ifreq {
|
||||
char ifr_name[IFNAMSIZ]; /* if name, e.g. "en0" */
|
||||
union {
|
||||
struct sockaddr ifru_addr;
|
||||
struct sockaddr ifru_dstaddr;
|
||||
struct sockaddr ifru_broadaddr;
|
||||
u_short ifru_flags;
|
||||
int ifru_metric;
|
||||
int ifru_mtu;
|
||||
int ifru_ivalue;
|
||||
int ifru_ifindex;
|
||||
int ifru_phys;
|
||||
int ifru_media;
|
||||
void * ifru_data; /* interface dependent data */
|
||||
u_short ifru_vr; /* virtual router */
|
||||
int ifru_opt; /* option: enable=1, disable=0 */
|
||||
int ifru_cap[2];
|
||||
char ifru_newname[IFNAMSIZ]; /* if name, e.g. "eth0" */
|
||||
char ifru_slave[IFNAMSIZ]; /* if name, e.g. "eth0" */
|
||||
|
||||
} ifr_ifru;
|
||||
#define ifr_addr ifr_ifru.ifru_addr /* address */
|
||||
#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */
|
||||
#define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */
|
||||
#define ifr_flags ifr_ifru.ifru_flags /* flags */
|
||||
#define ifr_metric ifr_ifru.ifru_metric /* metric */
|
||||
#define ifr_ifindex ifr_ifru.ifru_ifindex /* Interface index */
|
||||
#define ifr_mtu ifr_ifru.ifru_mtu /* mtu */
|
||||
#define ifr_phys ifr_ifru.ifru_phys /* physical wire */
|
||||
#define ifr_media ifr_ifru.ifru_media /* physical media */
|
||||
#define ifr_data ifr_ifru.ifru_data /* for use by interface */
|
||||
#define ifr_vr ifr_ifru.ifru_vr /* Interpeak virtual router extension*/
|
||||
#define ifr_opt fr_ifru.ifru_opt /* Interpeak option extension */
|
||||
#define ifr_reqcap ifr_ifru.ifru_cap[0] /* requested capabilities */
|
||||
#define ifr_curcap ifr_ifru.ifru_cap[1] /* current capabilities */
|
||||
};
|
||||
|
||||
#define _SIZEOF_ADDR_IFREQ(ifr) \
|
||||
((ifr).ifr_addr.sa_len > sizeof(struct sockaddr) ? \
|
||||
(sizeof(struct ifreq) - sizeof(struct sockaddr) + \
|
||||
(ifr).ifr_addr.sa_len) : sizeof(struct ifreq))
|
||||
|
||||
struct ifaliasreq {
|
||||
char ifra_name[IFNAMSIZ]; /* if name, e.g. "en0" */
|
||||
struct sockaddr ifra_addr;
|
||||
struct sockaddr ifra_broadaddr;
|
||||
struct sockaddr ifra_mask;
|
||||
};
|
||||
|
||||
struct ifmediareq {
|
||||
char ifm_name[IFNAMSIZ]; /* if name, e.g. "en0" */
|
||||
int ifm_current; /* current media options */
|
||||
int ifm_mask; /* don't care mask */
|
||||
int ifm_status; /* media status */
|
||||
int ifm_active; /* active options */
|
||||
int ifm_count; /* # entries in ifm_ulist array */
|
||||
int *ifm_ulist; /* media words */
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure used in SIOCGIFCONF request.
|
||||
* Used to retrieve interface configuration
|
||||
* for machine (useful for programs which
|
||||
* must know all networks accessible).
|
||||
*/
|
||||
struct ifconf {
|
||||
int ifc_len; /* size of associated buffer */
|
||||
union {
|
||||
caddr_t ifcu_buf;
|
||||
struct ifreq *ifcu_req;
|
||||
} ifc_ifcu;
|
||||
#define ifc_buf ifc_ifcu.ifcu_buf /* buffer address */
|
||||
#define ifc_req ifc_ifcu.ifcu_req /* array of structures returned */
|
||||
};
|
||||
|
||||
struct if_nameindex {
|
||||
u_int if_index; /* 1, 2, ... */
|
||||
char *if_name; /* null terminated name: "le0", ... */
|
||||
};
|
||||
|
||||
u_int if_nametoindex __P((const char *));
|
||||
char *if_indextoname __P((u_int, char *));
|
||||
struct if_nameindex *if_nameindex __P((void));
|
||||
void if_freenameindex __P((struct if_nameindex *));
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
#include <net/if_var.h>
|
||||
#endif /* _WRS_KERNEL */
|
||||
|
||||
#endif /* !__INCifh */
|
||||
@@ -0,0 +1,164 @@
|
||||
/* if_arp.h - network interface address resolution protocol header file */
|
||||
|
||||
/* Copyright 2001-2005 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1986, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)if_arp.h 8.1 (Berkeley) 6/10/93
|
||||
* $FreeBSD: src/sys/net/if_arp.h,v 1.14.2.3 2002/02/20 23:34:09 fjoe Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01r,20nov06,kch Removed unused arcbroadcastaddr extern declaration.
|
||||
01q,24oct06.kch Changed arp_ha in arpreq strcture from sockaddr to
|
||||
sockaddr_dl. Removed unsupported ATF flags and added
|
||||
ATF_GRAT and ATF_BLACKHOLE.
|
||||
01p,09sep06,kch Cleanup for IPNet integration.
|
||||
01o,07feb05,vvv _KERNEL cleanup
|
||||
01n,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01m,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01l,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01k,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01j,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01i,27oct03,rlm update include statements post header re-org.
|
||||
01h,06aug03,niq Merging from Accordion label ACCORDION_BASE6_MERGE_BASELINE
|
||||
01g,09may03,vvv included socket.h and if.h
|
||||
01h,07mar03,spm merged from CLARINET-1_1-KAME-UPDATE (ver 01f,01feb03,pas)
|
||||
01g,02dec02,spm merged from WINDNET_IPV6-1_0-FCS label (ver 01e,09sep02,hsh)
|
||||
01f,27aug02,kal inclusion of in.h for struct in_addr (in arpcom)
|
||||
01e,23aug02,vlk added ac_ipaddr item into "arpcom" struct
|
||||
and ATF_INCOMPLETE definition
|
||||
01d,03feb02,ham changes for tornado build.
|
||||
01c,09dec01,ppp adding ATF_PROXY flag
|
||||
01b,20aug01,qli moving the element to protos/arp
|
||||
01a,12aug01,ham created from FreeBSD4.3-RELEASE(July-17-01).
|
||||
*/
|
||||
|
||||
#ifndef _NET_IF_ARP_H_
|
||||
#define _NET_IF_ARP_H_
|
||||
|
||||
/* includes */
|
||||
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <net/if_dl.h>
|
||||
#include <net/if.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Address Resolution Protocol.
|
||||
*
|
||||
* See RFC 826 for protocol description. ARP packets are variable
|
||||
* in size; the arphdr structure defines the fixed-length portion.
|
||||
* Protocol type values are the same as those for 10 Mb/s Ethernet.
|
||||
* It is followed by the variable-sized fields ar_sha, arp_spa,
|
||||
* arp_tha and arp_tpa in that order, according to the lengths
|
||||
* specified. Field names used correspond to RFC 826.
|
||||
*/
|
||||
struct arphdr {
|
||||
u_short ar_hrd; /* format of hardware address */
|
||||
#define ARPHRD_ETHER 1 /* ethernet hardware format */
|
||||
#define ARPHRD_EETHER 2 /* experimental ethernet format */
|
||||
#define ARPHRD_AX25 3 /* AX.25 Level 2 */
|
||||
#define ARPHRD_PRONET 4 /* PROnet token ring */
|
||||
#define ARPHRD_CHAOS 5 /* Chaosnet */
|
||||
#define ARPHRD_IEEE802 6 /* token-ring hardware format */
|
||||
#define ARPHRD_ARCNET 7 /* arcnet hardware format */
|
||||
#define ARPHRD_HYPERCH 8 /* Hyper channel */
|
||||
#define ARPHRD_LANSTAR 9 /* LanStar */
|
||||
#define ARPHRD_ULTRALINK 13 /* UltraLink */
|
||||
#define ARPHRD_FRELAY 15 /* frame relay hardware format */
|
||||
#define ARPHRD_DLCI ARPHRD_FRELAY
|
||||
#define ARPHRD_ATM 19 /* ATM */
|
||||
#define ARPHRD_METRICOM 23 /* Metricom STRIP (new IANA id) */
|
||||
#define ARPHRD_IEEE1394 24 /* IEEE 1394 IPv4 - RFC 2734 */
|
||||
#define ARPHRD_EUI64 27 /* EUI-64 */
|
||||
u_short ar_pro; /* format of protocol address */
|
||||
u_char ar_hln; /* length of hardware address */
|
||||
u_char ar_pln; /* length of protocol address */
|
||||
u_short ar_op; /* one of: */
|
||||
#define ARPOP_REQUEST 1 /* request to resolve address */
|
||||
#define ARPOP_REPLY 2 /* response to previous request */
|
||||
#define ARPOP_REVREQUEST 3 /* request protocol address given hardware */
|
||||
#define ARPOP_REVREPLY 4 /* response giving protocol address */
|
||||
#define ARPOP_INVREQUEST 8 /* request to identify peer */
|
||||
#define ARPOP_INVREPLY 9 /* response identifying peer */
|
||||
/*
|
||||
* The remaining fields are variable in size,
|
||||
* according to the sizes above.
|
||||
*/
|
||||
#ifdef COMMENT_ONLY
|
||||
u_char ar_sha[]; /* sender hardware address */
|
||||
u_char ar_spa[]; /* sender protocol address */
|
||||
u_char ar_tha[]; /* target hardware address */
|
||||
u_char ar_tpa[]; /* target protocol address */
|
||||
#endif
|
||||
};
|
||||
|
||||
#define ar_sha(ap) (((caddr_t)((ap)+1)) + 0)
|
||||
#define ar_spa(ap) (((caddr_t)((ap)+1)) + (ap)->ar_hln)
|
||||
#define ar_tha(ap) (((caddr_t)((ap)+1)) + (ap)->ar_hln + (ap)->ar_pln)
|
||||
#define ar_tpa(ap) (((caddr_t)((ap)+1)) + 2*(ap)->ar_hln + (ap)->ar_pln)
|
||||
|
||||
#define arphdr_len2(ar_hln, ar_pln) \
|
||||
(sizeof(struct arphdr) + 2*(ar_hln) + 2*(ar_pln))
|
||||
#define arphdr_len(ap) (arphdr_len2((ap)->ar_hln, (ap)->ar_pln))
|
||||
|
||||
/*
|
||||
* ARP ioctl request
|
||||
*/
|
||||
struct arpreq {
|
||||
struct sockaddr arp_pa; /* protocol address */
|
||||
struct sockaddr_dl arp_ha; /* hardware address */
|
||||
int arp_flags; /* flags */
|
||||
};
|
||||
/* arp_flags and at_flags field values */
|
||||
#define ATF_COM 0x02 /* completed entry (enaddr valid) */
|
||||
#define ATF_PERM 0x04 /* permanent entry */
|
||||
#define ATF_PUBL 0x08 /* publish entry (respond for other host) */
|
||||
#define ATF_GRAT 0x100 /* send gratuitous ARP request */
|
||||
#define ATF_BLACKHOLE 0x200 /* set blackhole flag on entry */
|
||||
|
||||
extern u_char etherbroadcastaddr[6];
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !_NET_IF_ARP_H_ */
|
||||
@@ -0,0 +1,106 @@
|
||||
/* if_dl.h - data link level structure header file */
|
||||
|
||||
/* Copyright 2001-2005 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)if_dl.h 8.1 (Berkeley) 6/10/93
|
||||
* $FreeBSD: src/sys/net/if_dl.h,v 1.10 2000/03/01 02:46:25 archie Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01k,09jan12,h_x Move extern "C" after last header file include.
|
||||
01j,02oct06,kch Removed the unsupported source routing members from the
|
||||
sockaddr_dl structure.
|
||||
01i,28sep06,kch Removed unsupported prototypes.
|
||||
01h,07feb05,vvv _KERNEL cleanup
|
||||
01g,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01f,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01e,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01d,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01c,10jun03,vvv include netVersion.h
|
||||
01b,09sep02,hsh add c++ protection
|
||||
01a,12jul01,ham created from FreeBSD4.3-RELEASE(July-17-01).
|
||||
*/
|
||||
|
||||
#ifndef _NET_IF_DL_H_
|
||||
#define _NET_IF_DL_H_
|
||||
|
||||
#include <netVersion.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* A Link-Level Sockaddr may specify the interface in one of two
|
||||
* ways: either by means of a system-provided index number (computed
|
||||
* anew and possibly differently on every reboot), or by a human-readable
|
||||
* string such as "il0" (for managerial convenience).
|
||||
*
|
||||
* Census taking actions, such as something akin to SIOCGCONF would return
|
||||
* both the index and the human name.
|
||||
*
|
||||
* High volume transactions (such as giving a link-level ``from'' address
|
||||
* in a recvfrom or recvmsg call) may be likely only to provide the indexed
|
||||
* form, (which requires fewer copy operations and less space).
|
||||
*
|
||||
* The form and interpretation of the link-level address is purely a matter
|
||||
* of convention between the device driver and its consumers; however, it is
|
||||
* expected that all drivers for an interface of a given if_type will agree.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Structure of a Link-Level sockaddr:
|
||||
*/
|
||||
struct sockaddr_dl {
|
||||
u_char sdl_len; /* Total length of sockaddr */
|
||||
u_char sdl_family; /* AF_LINK */
|
||||
u_short sdl_index; /* if != 0, system given index for interface */
|
||||
u_char sdl_type; /* interface type */
|
||||
u_char sdl_nlen; /* interface name length, no trailing 0 reqd. */
|
||||
u_char sdl_alen; /* link level address length */
|
||||
u_char sdl_slen; /* link layer selector length */
|
||||
char sdl_data[12]; /* minimum work area, can be larger;
|
||||
contains both if name and ll address */
|
||||
};
|
||||
|
||||
#define LLADDR(s) ((caddr_t)((s)->sdl_data + (s)->sdl_nlen))
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,124 @@
|
||||
/* if_ll.h - layer 2 link level structure header file */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01a,30nov06,kch Created.
|
||||
*/
|
||||
|
||||
#ifndef _NET_IF_LL_H_
|
||||
#define _NET_IF_LL_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Frame Values
|
||||
* Used for 3rd argument to when creating packet sockets.
|
||||
*/
|
||||
#define NET_ETH_P_ALL 0
|
||||
#define NET_ETH_P_IP 0x0800
|
||||
#define NET_ETH_P_ARP 0x0806
|
||||
#define NET_ETH_P_RARP 0x8035
|
||||
#define NET_ETH_P_IPV6 0x86DD
|
||||
#define NET_ETH_P_PPPOE_DIS 0x8863
|
||||
#define NET_ETH_P_PPPOE_SES 0x8864
|
||||
#define NET_ETH_P_8021Q_VLAN 0x8100
|
||||
#define NET_ETH_P_MPLS_UNICAST 0x8847
|
||||
#define NET_ETH_P_MPLS_MULTICAST 0x8848
|
||||
|
||||
/* Packet types 'sll_pkttype'. Packet is addressed to: */
|
||||
#define PACKET_HOST 1 /* this host */
|
||||
#define PACKET_BROADCAST 2 /* all hosts on this link */
|
||||
#define PACKET_MULTICAST 3 /* a multicast group this host is a member of */
|
||||
#define PACKET_OTHERHOST 4 /* someone else */
|
||||
#define PACKET_OUTGOING 5 /* Packet was sent and read back */
|
||||
|
||||
|
||||
/*
|
||||
* The link level sockaddr is a device independent physical layer address.
|
||||
* It is used for packet socket to receive or send raw packets at the
|
||||
* Layer 2.
|
||||
*
|
||||
* When using the packet socket, the socket type is either SOCK_RAW for
|
||||
* raw packets including the link level header or SOCK_DGRAM for cooked
|
||||
* packets with the link level header removed. The link level header
|
||||
* information is available in a common format in an sockaddr_ll. Allowed
|
||||
* values for Ethernet are any of the NET_ETH_P_xxx constants in network
|
||||
*
|
||||
* When protocol is set to htons(NET_ETH_P_ALL), then all protocols are
|
||||
* received. All incoming packets of that protocol type will be passed to
|
||||
* the packet socket before they are passed to the protocols implemented in
|
||||
* SOCK_RAW packets are passed to and from the device driver without any
|
||||
* changes in the packet data. When receiving a packet, the address is still
|
||||
* parsed and passed in a standard sockaddr_ll address structure. When
|
||||
* transmitting a packet, the user-supplied buffer must contain the physical
|
||||
* layer header. That packet is then queued, unmodified, to the network
|
||||
* driver of the interface defined by the destination address.
|
||||
*
|
||||
* SOCK_DGRAM operates on a slightly higher level. The physical header is
|
||||
* removed before the packet is passed to the user. Packets sent through a
|
||||
* SOCK_DGRAM packet socket get a suitable physical layer header based on
|
||||
* the information in the sockaddr_ll destination address before they are
|
||||
* queued.
|
||||
*
|
||||
* When sending packets using a packet socket, it is enough to specify
|
||||
* sll_family, sll_addr, sll_halen and sll_ifindex. All other fields
|
||||
* should be set to 0. The sll_hatype and sll_pkttype are set on
|
||||
* received packets.
|
||||
*
|
||||
* The connect() operation is not supported on packet sockets.
|
||||
*/
|
||||
|
||||
struct sockaddr_ll
|
||||
{
|
||||
u_int8_t sll_len; /* Length of this structure */
|
||||
u_int8_t sll_family; /* Always AF_PACKET */
|
||||
|
||||
/*
|
||||
* Link layer protocol (frame type) in network order, not used when
|
||||
* sending frames on an SOCK_RAW type socket
|
||||
*/
|
||||
u_int16_t sll_protocol;
|
||||
u_int32_t sll_ifindex; /* Interface index, must not be zero */
|
||||
|
||||
/* Link layer type (IFT_xxx), only used for received frames */
|
||||
u_int16_t sll_hatype;
|
||||
|
||||
/*
|
||||
* Packet type (PACKET_xxx), only used for received frames. Valid
|
||||
* types are:
|
||||
* PACKET_HOST - for packets addressed to the local host
|
||||
* PACKET_BROADCAST - for physical layer broadcast packets to all
|
||||
* hosts on this link
|
||||
* PACKET_MULTICAST - for packets sent to a physical layer multicast
|
||||
* address
|
||||
* PACKET_OTHERHOST - for packets send to some other host that has
|
||||
* been caught by a device driver in promiscuous
|
||||
* mode
|
||||
* PACKET_OUTGOING - for packets originated from local host that
|
||||
* is looped back to a packet socket.
|
||||
*/
|
||||
u_int8_t sll_pkttype;
|
||||
|
||||
u_int8_t sll_halen; /* Length of link layer address */
|
||||
u_int8_t sll_addr[8]; /* Link layer address */
|
||||
};
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _NET_IF_LL_H_ */
|
||||
@@ -0,0 +1,173 @@
|
||||
/* if.h - network interface header file */
|
||||
|
||||
/* Copyright 2001-2004 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)if_llc.h 8.1 (Berkeley) 6/10/93
|
||||
* $FreeBSD: src/sys/net/if_llc.h,v 1.7 1999/08/28 00:48:18 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01i,09jan12,h_x Move extern "C" after last header file include.
|
||||
01h,10nov04,syy Fix SPR#103861
|
||||
01g,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01f,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01e,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01d,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01c,10jun03,vvv include netVersion.h
|
||||
01b,09sep02,hsh add c++ protection
|
||||
01a,10aug01,ham created from FreeBSD4.3-RELEASE(July-17-01).
|
||||
*/
|
||||
|
||||
#ifndef _NET_IF_LLC_H_
|
||||
#define _NET_IF_LLC_H_
|
||||
|
||||
#include <netVersion.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* IEEE 802.2 Link Level Control headers, for use in conjunction with
|
||||
* 802.{3,4,5} media access control methods.
|
||||
*
|
||||
* Headers here do not use bit fields due to shortcomings in many
|
||||
* compilers.
|
||||
*/
|
||||
|
||||
struct llc {
|
||||
u_char llc_dsap;
|
||||
u_char llc_ssap;
|
||||
union {
|
||||
struct {
|
||||
u_char control;
|
||||
u_char format_id;
|
||||
u_char llc_class;
|
||||
u_char window_x2;
|
||||
} type_u;
|
||||
struct {
|
||||
u_char num_snd_x2;
|
||||
u_char num_rcv_x2;
|
||||
} type_i;
|
||||
struct {
|
||||
u_char control;
|
||||
u_char num_rcv_x2;
|
||||
} type_s;
|
||||
struct {
|
||||
u_char control;
|
||||
struct frmrinfo {
|
||||
u_char rej_pdu_0;
|
||||
u_char rej_pdu_1;
|
||||
u_char frmr_control;
|
||||
u_char frmr_control_ext;
|
||||
u_char frmr_cause;
|
||||
} frmrinfo;
|
||||
} type_frmr;
|
||||
struct {
|
||||
u_char control;
|
||||
u_char org_code[3];
|
||||
u_short ether_type;
|
||||
} type_snap;
|
||||
struct {
|
||||
u_char control;
|
||||
u_char control_ext;
|
||||
} type_raw;
|
||||
} llc_un;
|
||||
};
|
||||
#define llc_control llc_un.type_u.control
|
||||
#define llc_control_ext llc_un.type_raw.control_ext
|
||||
#define llc_fid llc_un.type_u.format_id
|
||||
#define llc_class llc_un.type_u.llc_class
|
||||
#define llc_window llc_un.type_u.window_x2
|
||||
#define llc_frmrinfo llc_un.type_frmr.frmrinfo
|
||||
#define llc_frmr_pdu0 llc_un.type_frmr.frmrinfo.rej_pdu0
|
||||
#define llc_frmr_pdu1 llc_un.type_frmr.frmrinfo.rej_pdu1
|
||||
#define llc_frmr_control llc_un.type_frmr.frmrinfo.frmr_control
|
||||
#define llc_frmr_control_ext llc_un.type_frmr.frmrinfo.frmr_control_ext
|
||||
#define llc_frmr_cause llc_un.type_frmr.frmrinfo.frmr_control_ext
|
||||
|
||||
/*
|
||||
* Don't use sizeof(struct llc_un) for LLC header sizes
|
||||
*/
|
||||
#define LLC_ISFRAMELEN 4
|
||||
#define LLC_UFRAMELEN 3
|
||||
#define LLC_FRMRLEN 7
|
||||
|
||||
/*
|
||||
* Unnumbered LLC format commands
|
||||
*/
|
||||
#define LLC_UI 0x3
|
||||
#define LLC_UI_P 0x13
|
||||
#define LLC_DISC 0x43
|
||||
#define LLC_DISC_P 0x53
|
||||
#define LLC_UA 0x63
|
||||
#define LLC_UA_P 0x73
|
||||
#define LLC_TEST 0xe3
|
||||
#define LLC_TEST_P 0xf3
|
||||
#define LLC_FRMR 0x87
|
||||
#define LLC_FRMR_P 0x97
|
||||
#define LLC_DM 0x0f
|
||||
#define LLC_DM_P 0x1f
|
||||
#define LLC_XID 0xaf
|
||||
#define LLC_XID_P 0xbf
|
||||
#define LLC_SABME 0x6f
|
||||
#define LLC_SABME_P 0x7f
|
||||
|
||||
/*
|
||||
* Supervisory LLC commands
|
||||
*/
|
||||
#define LLC_RR 0x01
|
||||
#define LLC_RNR 0x05
|
||||
#define LLC_REJ 0x09
|
||||
|
||||
/*
|
||||
* Info format - dummy only
|
||||
*/
|
||||
#define LLC_INFO 0x00
|
||||
|
||||
/*
|
||||
* ISO PDTR 10178 contains among others
|
||||
*/
|
||||
#define LLC_X25_LSAP 0x7e
|
||||
#define LLC_SNAP_LSAP 0xaa
|
||||
#define LLC_ISO_LSAP 0xfe
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,99 @@
|
||||
/* if_types.h - interface types header file */
|
||||
|
||||
/* Copyright 2001 - 2005 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1989, 1993, 1994
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)if_types.h 8.3 (Berkeley) 4/28/95
|
||||
* $FreeBSD: src/sys/net/if_types.h,v 1.8.2.4 2002/12/23 23:02:21 kbyanc Exp $
|
||||
* $FreeBSD: src/sys/net/if_types.h,v 1.8.2.3 2001/07/03 11:01:41 ume Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01o,09jan12,h_x Move extern "C" after last header file include.
|
||||
01n,20nov06,kch Updated interface types.
|
||||
01m,25oct06,kch Removed unsupported interface types. Also corrected macro
|
||||
mismatched for certain interface types.
|
||||
01l,24may05,kch Comment out IFT_IST define for now.
|
||||
01k,13may05,kch Merged from FreeBSD v 1.8.2.4.
|
||||
01j,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01i,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01h,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01g,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01f,08aug03,nee Merging from label ACCORDION_BASE6_MERGE_BASELINE in
|
||||
accordion codeline to Base6
|
||||
01e,10jun03,vvv include netVersion.h
|
||||
01d,15may03,spm Tornado 2.2 FCS merge (SPR #76443; ver 01d,16may02,vvv:
|
||||
TOR2_2-FCS-COPY label, tor2 branch, /wind/river VOB)
|
||||
01c,09may03,spm T2.2 FCS merge.
|
||||
01b,09sep02,hsh add c++ protection
|
||||
01a,16jul01,ham created from FreeBSD4.3-RELEASE(July-17-01).
|
||||
*/
|
||||
|
||||
#ifndef _NET_IF_TYPES_H_
|
||||
#define _NET_IF_TYPES_H_
|
||||
|
||||
#include <netVersion.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Interface types for benefit of parsing media address headers.
|
||||
* This list is derived from the SNMP list of ifTypes, originally
|
||||
* documented in RFC1573, now maintained as:
|
||||
*
|
||||
* ftp.isi.edu/in-notes/iana/assignments/smi-numbers
|
||||
*/
|
||||
|
||||
#define IFT_OTHER 0x1 /* none of the following */
|
||||
#define IFT_ETHER 0x6 /* Ethernet CSMA/CD */
|
||||
#define IFT_PPP 0x17 /* RFC 1331 */
|
||||
#define IFT_LOOP 0x18 /* loopback */
|
||||
#define IFT_IEEE80211 0x47 /* Radio spread spectrum */
|
||||
|
||||
#define IFT_MPLS_TUNNEL 0x83 /* MPLS tunnel interface */
|
||||
#define IFT_L2VLAN 0x87 /* Layer 2 Virtual LAN using 802.1Q */
|
||||
#define IFT_PPPOE 0xf0 /* PPPoE */
|
||||
#define IFT_TUNNEL 0xf1 /* IP over IP tunnel */
|
||||
#define IFT_SOCKDEV 0xf2 /* Device that has a 1-to-1 mapping to a
|
||||
socket in the IP_AF_SOCKDEV domain */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCif_typesh */
|
||||
@@ -0,0 +1,194 @@
|
||||
/* if_var.h - network interface variable header file */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2001-2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1989, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* From: @(#)if.h 8.1 (Berkeley) 6/10/93
|
||||
* $FreeBSD: src/sys/net/if_var.h,v 1.98.2.5 2005/10/07 14:00:05 glebius Exp $
|
||||
* $FreeBSD: src/sys/net/if_var.h,v 1.62 2003/11/12 03:14:29 rwatson Exp $
|
||||
* $FreeBSD: src/sys/net/if_var.h,v 1.18.2.15 2002/06/28 12:36:54 luigi Exp $
|
||||
*/
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
02p,09jan12,h_x Move extern "C" after last header file include.
|
||||
02o,25oct06,kch Removed unused forward declarations.
|
||||
02n,28sep06,kch Removed struct ifnet since it is not supported by IPNet.
|
||||
02m,10sep06,kch Temporarily restore the ifnet structure.
|
||||
02l,10sep06,kch Restore all IF_XXX queue related macros.
|
||||
02k,09sep06,kch Cleanup for IPNet integration.
|
||||
02j,08feb06,kch Added IFQ_LOCK_ASSERT() macro and define it as noop.
|
||||
02i,06jan06,kch Integrated FreeBSD 6.0 ALTQ implementation.
|
||||
02h,21sep05,kch Added if_xname[] to ifnet structure, introduced if_name()
|
||||
macro to replace if_name() routine for backward compatibility.
|
||||
Also added if_initname() prototype (merged from FreeBSD 5.x
|
||||
if_var.h,v 1.84.2.6) (SPR #112724).
|
||||
02g,29aug05,kch Added if_nvlans counter to ifnet structure (SPR #112068).
|
||||
02f,26aug05,dlk Add section tags.
|
||||
02e,26aug05,kch Removed pTagData pointer from ifnet structure.
|
||||
02d,12aug05,kch Moved ifclone prototypes to if_clone.h.
|
||||
02c,04aug05,vvv clarified comments for if_index and ifIndex (SPR #106657)
|
||||
02b,16jul05,dlk Added intrqFlush() declaration for VIRTUAL_STACK case.
|
||||
02a,25jun05,dlk Added INTRQ_QJOB definition.
|
||||
01z,24jun05,wap Add link state support
|
||||
01y,09may05,vvv added include for if.h
|
||||
01x,19apr05,rp merged from comp_wn_ipv6_mld_interim-dev
|
||||
01w,07feb05,vvv _KERNEL cleanup
|
||||
01v,10sep04,kc Added VLAN_TAG define to protect pTagData in ifnet structure.
|
||||
01u,12jul04,vvv fixed compiler warning
|
||||
01t,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
||||
/main/vdt/base6_itn5_networking-int/1)
|
||||
01s,14may04,kc Added pTagData to struct ifnet for L2 VLAN Tagging support.
|
||||
01r,25feb04,nee Adding if6_resolve to ifnet
|
||||
01q,24feb04,dlk Add closing brace if __cplusplus is defined.
|
||||
01p,03feb04,wap Add extra structure fields for checksum offload support
|
||||
01o,02feb04,dlk Restore interface output queues (repair IF_ENQUEUE()).
|
||||
01n,20nov03,niq osdep.h cleanup
|
||||
01m,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01l,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01k,23oct03,rlm updated #includes for header re-org
|
||||
01j,24sep03,kkz Rebasing with BASE6_ITER2_FRZ7 - added IF_DEQUEUEIF macro
|
||||
01i,08aug03,nee Merging from label ACCORDION_BASE6_MERGE_BASELINE in
|
||||
accordion codeline to Base6
|
||||
01h,01feb03,pas merge from FreeBSD 4.7 - added clone support, polling;
|
||||
changed if_queue_drop() to if_handoff()
|
||||
01g,18sep02,nee removed ifr_type from ifreq structure
|
||||
01f,09sep02,hsh add c++ protection
|
||||
01e,24aug02,nee extended ifnet for admin control;defined admin states for
|
||||
boot/up/down
|
||||
01d,13feb02,ham changed for tornado build.
|
||||
01c,06oct01,ann removing the prototypes for ether_output and
|
||||
ether_output_frame
|
||||
01b,11sep01,ann adding the if_resolve func pointer that is missing
|
||||
01a,16jul01,ham created from FreeBSD4.3.
|
||||
*/
|
||||
|
||||
#ifndef _NET_IF_VAR_H_
|
||||
#define _NET_IF_VAR_H_
|
||||
|
||||
#include <sys/queue.h> /* get TAILQ macros */
|
||||
#include <net/mbuf.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Structure defining a queue for a network interface.
|
||||
*/
|
||||
struct ifqueue {
|
||||
struct mbuf *ifq_head;
|
||||
struct mbuf *ifq_tail;
|
||||
int ifq_len;
|
||||
int ifq_maxlen;
|
||||
int ifq_drops;
|
||||
};
|
||||
|
||||
/*
|
||||
* Output queues (ifp->if_snd) and slow device input queues (*ifp->if_slowq)
|
||||
* are queues of messages stored on ifqueue structures
|
||||
* (defined above). Entries are added to and deleted from these structures
|
||||
* by these macros, which should be called with ipl raised to splimp().
|
||||
*/
|
||||
#define IF_QFULL(ifq) ((ifq)->ifq_len >= (ifq)->ifq_maxlen)
|
||||
#define IF_DROP(ifq) ((ifq)->ifq_drops++)
|
||||
|
||||
#define IF_ENQUEUE(ifq, m) \
|
||||
do { \
|
||||
(m)->m_nextpkt = 0; \
|
||||
if ((ifq)->ifq_tail == 0) \
|
||||
(ifq)->ifq_head = m; \
|
||||
else \
|
||||
(ifq)->ifq_tail->m_nextpkt = m; \
|
||||
(ifq)->ifq_tail = m; \
|
||||
(ifq)->ifq_len++; \
|
||||
} while (0)
|
||||
|
||||
#define IF_PREPEND(ifq, m) { \
|
||||
(m)->m_nextpkt = (ifq)->ifq_head; \
|
||||
if ((ifq)->ifq_tail == 0) \
|
||||
(ifq)->ifq_tail = (m); \
|
||||
(ifq)->ifq_head = (m); \
|
||||
(ifq)->ifq_len++; \
|
||||
}
|
||||
|
||||
#define IF_DEQUEUE(ifq, m) { \
|
||||
(m) = (ifq)->ifq_head; \
|
||||
if (m) { \
|
||||
if (((ifq)->ifq_head = (m)->m_nextpkt) == 0) \
|
||||
(ifq)->ifq_tail = 0; \
|
||||
(m)->m_nextpkt = 0; \
|
||||
(ifq)->ifq_len--; \
|
||||
} \
|
||||
}
|
||||
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
|
||||
/*
|
||||
* #define _IF_QFULL for compatibility with -current
|
||||
*/
|
||||
#define _IF_QFULL(ifq) IF_QFULL(ifq)
|
||||
|
||||
/*
|
||||
* The following macros are defined to eliminate direct references to the
|
||||
* interface output queue
|
||||
*/
|
||||
#define IFQ_IS_EMPTY(ifq) ((ifq)->ifq_len == 0)
|
||||
#define IFQ_INC_LEN(ifq) ((ifq)->ifq_len++)
|
||||
#define IFQ_DEC_LEN(ifq) (--(ifq)->ifq_len)
|
||||
#define IFQ_INC_DROPS(ifq) IF_DROP(ifq)
|
||||
#define IFQ_SET_MAXLEN(ifq, len) ((ifq)->ifq_maxlen = (len))
|
||||
|
||||
/*
|
||||
* 72 was chosen below because it is the size of a TCP/IP
|
||||
* header (40) + the minimum mss (32).
|
||||
*/
|
||||
#define IF_MINMTU 72
|
||||
#define IF_MAXMTU 65535
|
||||
|
||||
#endif /* _WRS_KERNEL */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !_NET_IF_VAR_H_ */
|
||||
@@ -0,0 +1,87 @@
|
||||
/* ifaddrs.h - structure and routines for interface addresses */
|
||||
|
||||
/* Copyright 2001-2005 Wind River Systems, Inc. */
|
||||
|
||||
/* $KAME: ifaddrs.h,v 1.3 2001/01/26 08:14:55 itojun Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1995, 1999
|
||||
* Berkeley Software Design, Inc. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY Berkeley Software Design, Inc. ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL Berkeley Software Design, Inc. BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* BSDI ifaddrs.h,v 2.5 2000/02/23 14:51:59 dab Exp
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01f,20nov06,kch Added ifu_dstaddr to ifaddrs struct for compatibility with
|
||||
IPNET. Also restored getifaddrs and freeifaddrs prototypes.
|
||||
01e,28sep06,kch Removed unsupported prototypes for IPNet integration.
|
||||
01d,24may05,vvv updated for user-side builds
|
||||
01c,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01b,06nov03,rlm Ran batch header update for header re-org.
|
||||
01a,29apr03,syy Added #ifdef for __cplusplus
|
||||
*/
|
||||
|
||||
#ifndef __INCifaddrsh
|
||||
#define __INCifaddrsh
|
||||
|
||||
#include <sys/socket.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct ifaddrs {
|
||||
struct ifaddrs *ifa_next;
|
||||
char *ifa_name;
|
||||
u_int ifa_flags;
|
||||
struct sockaddr *ifa_addr;
|
||||
struct sockaddr *ifa_netmask;
|
||||
union {
|
||||
struct sockaddr *ifu_broadaddr;
|
||||
struct sockaddr *ifu_dstaddr;
|
||||
} ifa_ifu;
|
||||
#ifndef ifa_broadaddr
|
||||
#define ifa_broadaddr ifa_ifu.ifu_broadaddr
|
||||
#endif
|
||||
#ifndef ifa_dstaddr
|
||||
#define ifa_dstaddr ifa_ifu.ifu_dstaddr
|
||||
#endif
|
||||
void *ifa_data;
|
||||
};
|
||||
|
||||
/*
|
||||
* This may have been defined in <net/if.h>. Note that if <net/if.h> is
|
||||
* to be included it must be included before this header file.
|
||||
*/
|
||||
#ifndef ifa_broadaddr
|
||||
#define ifa_broadaddr ifa_dstaddr /* broadcast address interface */
|
||||
#endif
|
||||
|
||||
extern int getifaddrs __P((struct ifaddrs **));
|
||||
extern void freeifaddrs __P((struct ifaddrs *));
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* ! __INCifaddrsh */
|
||||
@@ -0,0 +1,566 @@
|
||||
/* mbuf.h - mbuf header file */
|
||||
|
||||
/* Copyright 2001-2006, 2008 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1988, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)mbuf.h 8.5 (Berkeley) 2/19/95
|
||||
* $FreeBSD: src/sys/sys/mbuf.h,v 1.44.2.26 2004/06/17 00:08:21 fjoe Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
02p,22may12,dhe M_COPY_PKTHDR() now copies also offset2 field.
|
||||
02o,09jan12,h_x Move extern "C" after last header file include.
|
||||
02n,18mar08,dlk Added CSUM_IPHDR_OFFSET(). Modified CSUM_IPHDR_LEN() to
|
||||
use mBlkHdr.offset2 instead of mBlkHdr.offset1.
|
||||
02m,27dec06,kch Removed references to the obsolete coreip virtual stack.
|
||||
02l,12sep06,kch Replaced (struct ifnet *) with (void *) for m_devget()
|
||||
prototype.
|
||||
02k,15sep05,kch Added CSUM_PTAGGED for 802.1P priority-tagged frame support
|
||||
(SPR #112513).
|
||||
02j,07sep05,kch Removed CSUM_NOVLAN (SPR #112068).
|
||||
02i,01sep05,sar Add M_WRITEABLE check to M_LEADINGSPACE and
|
||||
M_TRAILINGSPACE to ensure we don't overwrite
|
||||
part of a buffer that we shouldn't.
|
||||
02h,28jul05,dlk Added CSUM_VLAN and CSUM_NOVLAN.
|
||||
02g,12jul05,vvv merged M_NOTIFICATION from kame-20050404-freebsd411
|
||||
02f,17jun05,dlk Make m_copym(), m_copypacket(), and m_copydata() macros also.
|
||||
02e,16may05,dlk Make m_freem() and m_free() macros for better performance.
|
||||
02d,22apr05,kch Fixed diab compilation error for MCLGET1() macro.
|
||||
02c,07feb05,vvv _KERNEL cleanup
|
||||
02b,24jan05,vvv osdep.h cleanup
|
||||
02a,20jan05,sar Removal of unused m_dup routine.
|
||||
01z,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01y,01jul04,vvv fixed warnings
|
||||
01x,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
||||
/main/vdt/base6_itn5_networking-int/1)
|
||||
01w,05feb04,wap Make M_COPY_PKTHDR() preserve extra fields in mBlkHdr
|
||||
01v,06jan04,vvv removed dtom, modified allocation macros to not store mbuf
|
||||
back-pointer (SPR #88742)
|
||||
01u,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01t,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01s,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01r,27oct03,cdw update include statements post header re-org.
|
||||
01q,18aug03,nee Merging from ACCORDION_BASE6_MERGE_BASELINE. Only
|
||||
virtualixation related changes are being merged in.
|
||||
01p,09jul03,syy Back out the previous fix to SPR#88742
|
||||
01o,06jun03,pas fix M_LEADINGSPACE to account for hidden back-ptr (SPR#88742)
|
||||
01n,14may03,vvv make routines available when _KERNEL is not defined
|
||||
01m,01may03,spm Tornado 2.2 CP1 merge (from ver 01n,21mar02,vvv:
|
||||
TOR2_2-CP1-F label, tor2_2-patch branch, /wind/river VOB)
|
||||
01l,15apr03,syy Fixed Diab compiler warnings
|
||||
01k,01feb03,pas merge from FreeBSD 4.7 - added packet tags
|
||||
01j,30sep02,sar Add M_SECURE_PKT to the list of mflags
|
||||
01i,23aug02,ann extended MGETHDR1 and MGET1 to recognize bestfit and closefit
|
||||
01h,20jun02,ann redefined MGET1/MGETHDR1/MCLGET1
|
||||
01g,07jun02,pas new version of MGET/MGETHDR/MCLGET takes size argument
|
||||
01f,29apr02,deg back to old netBufLib
|
||||
01e,22mar02,deg MFREE auxiliary chain freeing removed (moved to _mBlkFree())
|
||||
01d,06feb02,ham changed for tornado build.
|
||||
01c,05feb02,deg bugfix in MCLGET()
|
||||
01b,11dec01,ppp correcting m_pktdat
|
||||
01a,08sep01,qli fixed mtod
|
||||
01a,09aug01,deg written.
|
||||
*/
|
||||
|
||||
#ifndef __INCNewMbufh
|
||||
#define __INCNewMbufh
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
|
||||
#include <netBufLib.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Note that any file which uses _pNetDpool or _pNetSysPool, either directly
|
||||
* or via the macros (MGET1 etc) MUST include vsNetCore.h for Virtual Stack.
|
||||
*/
|
||||
|
||||
extern NET_POOL_ID _pNetDpool; /* network data pool */
|
||||
extern NET_POOL_ID _pNetSysPool; /* network system pool */
|
||||
|
||||
extern M_CL_CONFIG pktMblkClBlkDesc; /* mBlk, clBlk configuration */
|
||||
extern CL_DESC pktClDescTbl []; /* cluster configuration */
|
||||
extern UINT pktClDescTblNumEnt; /* no. elements in the table */
|
||||
|
||||
extern M_CL_CONFIG sysMblkClBlkDesc; /* mBlk, clBlk configuration */
|
||||
extern CL_DESC sysClDescTbl []; /* cluster configuration */
|
||||
extern UINT sysClDescTblNumEnt; /* no. elements in the table */
|
||||
|
||||
|
||||
/*
|
||||
* Mbufs are of a single size, MSIZE (machine/param.h), which
|
||||
* includes overhead. An mbuf may add a single "mbuf cluster" of size
|
||||
* MCLBYTES (also in machine/param.h), which has no additional overhead
|
||||
* and is used instead of the internal data area; this is done when
|
||||
* at least MINCLSIZE of data must be stored.
|
||||
*/
|
||||
|
||||
#define SIMCLSIZE 128 /* cluster size to simulate mbuf data space */
|
||||
|
||||
#define MCLBYTES 2048 /* mbuf cluster size */
|
||||
|
||||
|
||||
#define MLEN SIMCLSIZE
|
||||
#define MHLEN MLEN
|
||||
#define MINCLSIZE (MHLEN + 1) /* smallest amount to put in cluster */
|
||||
|
||||
/*
|
||||
* Macro for type conversion
|
||||
* mtod(m, t) - convert mbuf pointer to data pointer of correct type
|
||||
*/
|
||||
|
||||
#define mtod(m, t) ((t)((m)->m_data))
|
||||
|
||||
/* Clarinet defs */
|
||||
#define mbuf mBlk
|
||||
#define m_next mBlkHdr.mNext
|
||||
#define m_len mBlkHdr.mLen
|
||||
#define m_data mBlkHdr.mData
|
||||
#define m_type mBlkHdr.mType
|
||||
#define m_flags mBlkHdr.mFlags
|
||||
#define m_nextpkt mBlkHdr.mNextPkt
|
||||
#define m_act m_nextpkt
|
||||
#define m_pkthdr mBlkPktHdr
|
||||
#define m_ext pClBlk
|
||||
|
||||
#define m_hdr mHdr
|
||||
#define mh_next mNext
|
||||
#define mh_nextpkt mNextPkt
|
||||
#define mh_data mData
|
||||
#define mh_len mLen
|
||||
#define mh_type mType
|
||||
#define mh_flags mFlags
|
||||
|
||||
#define m_extBuf m_ext->clNode.pClBuf
|
||||
#define m_extSize m_ext->clSize
|
||||
#define m_extRefCnt m_ext->clRefCnt
|
||||
#define m_extFreeRtn m_ext->pClFreeRtn
|
||||
#define m_extArg1 m_ext->clFreeArg1
|
||||
#define m_extArg2 m_ext->clFreeArg2
|
||||
#define m_extArg3 m_ext->clFreeArg3
|
||||
|
||||
|
||||
/*
|
||||
* It is not possible to port m_ext.ext_buf and m_ext.ext_free
|
||||
* Change your code :
|
||||
* m_ext.ext_buf to m_extBuf
|
||||
* m_ext.ext_free to m_extFreeRtn
|
||||
*/
|
||||
#define m_pktdat m_ext->clNode.pClBuf
|
||||
#define m_dat m_ext->clNode.pClBuf
|
||||
|
||||
#define M_PROTO1 0x0008 /* protocol-specific */
|
||||
#define M_PROTO2 0x0010 /* protocol-specific */
|
||||
#define M_PROTO3 0x0020 /* protocol-specific */
|
||||
#define M_PROTO4 0x0040 /* protocol-specific */
|
||||
|
||||
/* The M_PROTO5 flag has been removed to allow the bit to be
|
||||
* used as the SECURE_PKT bit. The define has been left in
|
||||
* as part of the history of the file and should be removed
|
||||
* in the future.
|
||||
* sar
|
||||
*/
|
||||
#if 0
|
||||
#define M_PROTO5 0x0080 /* protocol-specific */
|
||||
#endif
|
||||
#define M_SECURE_PKT 0x0080 /* For use by Wind River IPSec product */
|
||||
|
||||
#define M_FRAG 0x0400 /* packet is a fragment of a larger packet */
|
||||
#define M_FIRSTFRAG 0x0800 /* packet is first fragment */
|
||||
#define M_LASTFRAG 0x1000 /* packet is last fragment */
|
||||
|
||||
#define M_NOTIFICATION 0x8000 /* notification event */
|
||||
|
||||
/* flags copied when copying m_pkthdr */
|
||||
#define M_COPYFLAGS (M_PKTHDR|M_EOR|M_PROTO1|M_PROTO1|M_PROTO2|M_PROTO3 | \
|
||||
M_PROTO4|M_SECURE_PKT|M_BCAST|M_MCAST|M_FRAG)
|
||||
|
||||
/* flags indicating hw checksum support and sw checksum requirements */
|
||||
#define CSUM_IP 0x0001 /* will csum IP */
|
||||
#define CSUM_TCP 0x0002 /* will csum TCP */
|
||||
#define CSUM_UDP 0x0004 /* will csum UDP */
|
||||
#define CSUM_IP_FRAGS 0x0008 /* will csum IP fragments */
|
||||
#define CSUM_FRAGMENT 0x0010 /* will do IP fragmentation */
|
||||
#define CSUM_TCP_SEG 0x0020 /* will segment TCP/IPv4 */
|
||||
#define CSUM_TCPv6 0x0040 /* will csum TCP/IPv6 */
|
||||
#define CSUM_UDPv6 0x0080 /* will csum UDP/IPv6 */
|
||||
#define CSUM_TCPv6_SEG 0x0100 /* will csum TCP/IPv6 */
|
||||
#define CSUM_VLAN 0x0200 /* insert or extracted VLAN */
|
||||
#define CSUM_PTAGGED 0x0400 /* send priority-tagged frame */
|
||||
|
||||
#define CSUM_IP_CHECKED 0x1000 /* did csum IP */
|
||||
#define CSUM_IP_VALID 0x2000 /* ... the csum is valid */
|
||||
#define CSUM_DATA_VALID 0x4000 /* csum_data field is valid */
|
||||
#define CSUM_PSEUDO_HDR 0x8000 /* csum_data has pseudo hdr */
|
||||
|
||||
#define CSUM_DELAY_DATA (CSUM_TCP | CSUM_UDP)
|
||||
#define CSUM_DELAY_IP (CSUM_IP) /* XXX add ipv6 here too? */
|
||||
#define CSUM_DELAY_DATA6 (CSUM_TCPv6 | CSUM_UDPv6)
|
||||
|
||||
#define CSUM_RESULTS (CSUM_IP_CHECKED | CSUM_IP_VALID | \
|
||||
CSUM_DATA_VALID | CSUM_PSEUDO_HDR)
|
||||
|
||||
/*
|
||||
* CSUM_IPHDR_OFFSET() is the network service offset, i.e. the
|
||||
* offset from the start of the link header to the start of the
|
||||
* network layer (IP) header. It includes LLC/SNAP if present.
|
||||
*/
|
||||
#define CSUM_IPHDR_OFFSET(pMblk) ((pMblk)->mBlkHdr.offset1)
|
||||
#define CSUM_IP_HDRLEN(pMblk) ((pMblk)->mBlkHdr.offset2)
|
||||
#define CSUM_XPORT_HDRLEN(pMblk) \
|
||||
(((pMblk)->mBlkPktHdr.csum_data & 0xff00) >> 8)
|
||||
#define CSUM_XPORT_CSUM_OFF(pMblk) ((pMblk)->mBlkPktHdr.csum_data & 0xff)
|
||||
|
||||
|
||||
/* malloc flags (sys/malloc.h) */
|
||||
#define M_NOWAIT M_DONTWAIT
|
||||
#define M_WAITOK M_WAIT
|
||||
#define M_CLOSEFIT 0x02
|
||||
|
||||
/*
|
||||
* mbuf allocation/deallocation macros:
|
||||
*
|
||||
* MGET(struct mbuf *m, int how, int type)
|
||||
* allocates an mbuf and initializes it to contain internal data.
|
||||
*
|
||||
* MGETHDR(struct mbuf *m, int how, int type)
|
||||
* allocates an mbuf and initializes it to contain a packet header
|
||||
* and internal data.
|
||||
*/
|
||||
|
||||
/* Clarinet: This one gets an mbuf with attached cluster, to replace
|
||||
* the MGET()/MCLGET() paired calls. This should save some time by
|
||||
* avoiding allocating a 128-byte cluster, freeing it, allocating a
|
||||
* larger cluster, and joining it to the clBlk.
|
||||
*/
|
||||
#define MGET1(m, size, how, type) \
|
||||
{ \
|
||||
(m) = netTupleGet (_pNetDpool, size < SIMCLSIZE ? SIMCLSIZE : size, \
|
||||
(how & M_NOWAIT), (type), \
|
||||
((how & M_CLOSEFIT) ? \
|
||||
FALSE : TRUE)); \
|
||||
}
|
||||
|
||||
/* Following change is to eliminate Diab compiler warning 1606 */
|
||||
|
||||
#define MGET(m, how, type) \
|
||||
{ \
|
||||
(m) = netTupleGet (_pNetDpool, SIMCLSIZE, \
|
||||
(how & M_NOWAIT), (type), \
|
||||
((how & M_CLOSEFIT) ? \
|
||||
FALSE : TRUE)); \
|
||||
}
|
||||
|
||||
#define MGETHDR1(m, size, how, type) \
|
||||
{ \
|
||||
int i = size; \
|
||||
\
|
||||
(m) = netTupleGet(_pNetDpool, i < SIMCLSIZE ? SIMCLSIZE : i, \
|
||||
(how & M_NOWAIT), (type), \
|
||||
((how & M_CLOSEFIT) ? FALSE : TRUE)); \
|
||||
if ((m) != NULL) \
|
||||
(m)->m_flags |= M_PKTHDR; \
|
||||
}
|
||||
|
||||
/* Following change is to eliminate Diab compiler warning 1606 */
|
||||
|
||||
#define MGETHDR(m, how, type) \
|
||||
{ \
|
||||
(m) = netTupleGet (_pNetDpool, SIMCLSIZE, \
|
||||
(how & M_NOWAIT), (type), \
|
||||
((how & M_CLOSEFIT) ? FALSE : TRUE)); \
|
||||
if ((m) != NULL) \
|
||||
(m)->m_flags |= M_PKTHDR; \
|
||||
}
|
||||
|
||||
#define MCLGET1(m, size, how) \
|
||||
{ \
|
||||
char * pClBuf; \
|
||||
CL_POOL_ID pClPool; \
|
||||
\
|
||||
if ((m)->m_flags & M_EXT) \
|
||||
{ \
|
||||
netClFree((m)->pClBlk->pNetPool, \
|
||||
(UCHAR *)(m)->pClBlk->clNode.pClBuf); \
|
||||
(m)->m_flags &= ~M_EXT; \
|
||||
} \
|
||||
\
|
||||
if ((pClPool = netClPoolIdGet(_pNetDpool, \
|
||||
(size), \
|
||||
TRUE)) != NULL) \
|
||||
{ \
|
||||
if ((pClBuf = netClusterGet(_pNetDpool, \
|
||||
pClPool)) != NULL) \
|
||||
{ \
|
||||
netClBlkJoin((m)->m_ext, \
|
||||
pClBuf, \
|
||||
(size), \
|
||||
0,0,0,0); \
|
||||
netMblkClJoin((m), (m)->m_ext); \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
#define MCLGET(m, how) MCLGET1(m, MCLBYTES, how)
|
||||
|
||||
/*
|
||||
* MFREE(struct mbuf *m, struct mbuf *n)
|
||||
* Free a single mbuf and associated external storage.
|
||||
* Place the successor, if any, in n.
|
||||
*
|
||||
* we do need to check non-first mbuf for m_aux, since some of existing
|
||||
* code does not call M_PREPEND properly.
|
||||
* (example: call to bpf_mtap from drivers)
|
||||
*/
|
||||
#define MFREE(m, n) (n) = netMblkClFree((m))
|
||||
|
||||
/*
|
||||
* Copy mbuf pkthdr from "from" to "to".
|
||||
* from must have M_PKTHDR set, and to must be empty.
|
||||
* aux pointer will be moved to `to'.
|
||||
*/
|
||||
#define M_COPY_PKTHDR(to, from) \
|
||||
{ \
|
||||
struct mbuf *_mfrom = (from); \
|
||||
struct mbuf *_mto = (to); \
|
||||
_mto->mBlkHdr.reserved = _mfrom->mBlkHdr.reserved;\
|
||||
_mto->mBlkHdr.offset1 = _mfrom->mBlkHdr.offset1; \
|
||||
_mto->mBlkHdr.offset2 = _mfrom->mBlkHdr.offset2; \
|
||||
_mto->m_flags = _mfrom->m_flags; \
|
||||
_mto->m_pkthdr = _mfrom->m_pkthdr; \
|
||||
_mfrom->m_pkthdr.aux = (struct mbuf *)NULL; \
|
||||
}
|
||||
|
||||
/*
|
||||
* Set the m_data pointer of a newly-allocated mbuf (m_get/MGET) to place
|
||||
* an object of the specified size at the end of the mbuf, longword aligned.
|
||||
*/
|
||||
#define M_ALIGN(m, len) ((m)->m_data += \
|
||||
((m)->m_extSize - (len)) &~ (sizeof(long) - 1))
|
||||
|
||||
/*
|
||||
* As above, for mbufs allocated with m_gethdr/MGETHDR
|
||||
* or initialized by M_COPY_PKTHDR.
|
||||
*/
|
||||
#define MH_ALIGN(m, len) (M_ALIGN((m),(len)))
|
||||
|
||||
/*
|
||||
* Check if we can write to an mbuf.
|
||||
*/
|
||||
#define M_WRITABLE(m) ((m)->m_extRefCnt == 1)
|
||||
|
||||
/* For M_LEADINGSPACE and M_TRAILINGSPACE the
|
||||
* M_WRITABLE() is a conservative safety measure. */
|
||||
|
||||
/*
|
||||
* Compute the amount of space available
|
||||
* before the current start of data in an mbuf.
|
||||
*/
|
||||
#define M_LEADINGSPACE(m) \
|
||||
(M_WRITABLE(m) ? ((m)->m_data - (m)->m_extBuf) : 0)
|
||||
/*
|
||||
* Compute the amount of space available
|
||||
* after the end of data in an mbuf.
|
||||
*/
|
||||
#define M_TRAILINGSPACE(m) \
|
||||
(M_WRITABLE(m) ? ((m)->m_extBuf + (m)->m_extSize - \
|
||||
(m)->m_data - (m)->m_len) \
|
||||
: 0)
|
||||
|
||||
/*
|
||||
* Arrange to prepend space of size plen to mbuf m.
|
||||
* If a new mbuf must be allocated, how specifies whether to wait.
|
||||
* If how is M_DONTWAIT and allocation fails, the original mbuf chain
|
||||
* is freed and m is set to NULL.
|
||||
*/
|
||||
|
||||
#ifndef STANDALONE_AGENT
|
||||
#define M_PREPEND(m, plen, how) \
|
||||
{ \
|
||||
if (M_LEADINGSPACE(m) >= (plen)) \
|
||||
{ \
|
||||
(m)->m_data -= (plen); \
|
||||
(m)->m_len += (plen); \
|
||||
} \
|
||||
else \
|
||||
(m) = m_prepend((m), (plen), (how)); \
|
||||
if ((m) && (m)->m_flags & M_PKTHDR) \
|
||||
(m)->m_pkthdr.len += (plen); \
|
||||
}
|
||||
#else /* STANDALONE_AGENT */
|
||||
/*
|
||||
* for standalone agent, the M_PREPEND routine does no try to allocate
|
||||
* a new buffer (there is no available). Anyway, this is not needed since
|
||||
* all the WDB packets can be stored in one buffer.
|
||||
*/
|
||||
|
||||
#define M_PREPEND(m, plen, how) \
|
||||
{ \
|
||||
if (M_LEADINGSPACE(m) >= (plen)) { \
|
||||
(m)->m_data -= (plen); \
|
||||
(m)->m_len += (plen); \
|
||||
} else \
|
||||
(m) = NULL; \
|
||||
if ((m) && (m)->m_flags & M_PKTHDR) \
|
||||
(m)->m_pkthdr.len += (plen); \
|
||||
}
|
||||
#endif /* STANDALONE_AGENT */
|
||||
|
||||
/* change mbuf to new type */
|
||||
#define MCHTYPE(m, t) (_pNetDpool->mBlkStat.types[(m)->m_type]--; \
|
||||
_pNetDpool->mBlkStat.types[(t)]++; \
|
||||
(m)->m_type = (t))
|
||||
|
||||
/* compatibility with 4.3 */
|
||||
|
||||
/*
|
||||
* pkthdr.aux type tags.
|
||||
*/
|
||||
struct mauxtag {
|
||||
int af;
|
||||
int type;
|
||||
void* p;
|
||||
};
|
||||
|
||||
/*
|
||||
* Some packet tags to identify different mbuf annotations.
|
||||
*
|
||||
* Eventually, these annotations will end up in an appropriate chain
|
||||
* (struct m_tag or similar, e.g. as in NetBSD) properly managed by
|
||||
* the mbuf handling routines.
|
||||
*
|
||||
* As a temporary and low impact solution to replace the even uglier
|
||||
* approach used so far in some parts of the network stack (which relies
|
||||
* on global variables), these annotations are stored in MT_TAG
|
||||
* mbufs (or lookalikes) prepended to the actual mbuf chain.
|
||||
*
|
||||
* m_type = MT_TAG
|
||||
* m_flags = m_tag_id
|
||||
* m_next = next buffer in chain.
|
||||
*
|
||||
* BE VERY CAREFUL not to pass these blocks to the mbuf handling routines.
|
||||
*
|
||||
*/
|
||||
|
||||
#define m_tag_id m_flags
|
||||
|
||||
/* Packet tag types -- first ones are from NetBSD */
|
||||
|
||||
#define PACKET_TAG_NONE 0 /* Nadda */
|
||||
#define PACKET_TAG_IPSEC_IN_DONE 1 /* IPsec applied, in */
|
||||
#define PACKET_TAG_IPSEC_OUT_DONE 2 /* IPsec applied, out */
|
||||
#define PACKET_TAG_IPSEC_IN_CRYPTO_DONE 3 /* NIC IPsec crypto done */
|
||||
#define PACKET_TAG_IPSEC_OUT_CRYPTO_NEEDED 4 /* NIC IPsec crypto req'ed */
|
||||
#define PACKET_TAG_IPSEC_IN_COULD_DO_CRYPTO 5 /* NIC notifies IPsec */
|
||||
#define PACKET_TAG_IPSEC_PENDING_TDB 6 /* Reminder to do IPsec */
|
||||
#define PACKET_TAG_BRIDGE 7 /* Bridge processing done */
|
||||
#define PACKET_TAG_GIF 8 /* GIF processing done */
|
||||
#define PACKET_TAG_GRE 9 /* GRE processing done */
|
||||
#define PACKET_TAG_IN_PACKET_CHECKSUM 10 /* NIC checksumming done */
|
||||
#define PACKET_TAG_ENCAP 11 /* Encap. processing */
|
||||
#define PACKET_TAG_IPSEC_SOCKET 12 /* IPSEC socket ref */
|
||||
#define PACKET_TAG_IPSEC_HISTORY 13 /* IPSEC history */
|
||||
#define PACKET_TAG_IPV6_INPUT 14 /* IPV6 input processing */
|
||||
|
||||
/* Packet tags used in the FreeBSD network stack
|
||||
* We don't support dummynet or divert, they are included for consistency */
|
||||
#define PACKET_TAG_DUMMYNET 15 /* dummynet info */
|
||||
#define PACKET_TAG_IPFW 16 /* ipfw classification */
|
||||
#define PACKET_TAG_DIVERT 17 /* divert info */
|
||||
#define PACKET_TAG_IPFORWARD 18 /* ipforward info */
|
||||
|
||||
#define PACKET_TAG_MAX 19
|
||||
|
||||
|
||||
extern int max_linkhdr; /* largest link-level header */
|
||||
extern int max_protohdr; /* largest protocol header */
|
||||
extern int max_hdr; /* largest link+protocol header */
|
||||
|
||||
void m_adj (struct mbuf *, int);
|
||||
void m_cat (struct mbuf *,struct mbuf *);
|
||||
|
||||
void m_copyback (struct mbuf *, int, int, caddr_t);
|
||||
void m_copydata (struct mbuf *,int,int,caddr_t);
|
||||
struct mbuf *m_copypacket (struct mbuf *, int);
|
||||
struct mbuf *m_devget (char *, int, int, void *,
|
||||
void (*copy)(char *, caddr_t, u_int));
|
||||
/* Removed m_dup as it wasn't being used */
|
||||
struct mbuf *m_free (struct mbuf *);
|
||||
void m_freem (struct mbuf *);
|
||||
|
||||
struct mbuf *m_get (int, int);
|
||||
struct mbuf *m_getclr (int, int);
|
||||
struct mbuf *m_gethdr (int, int);
|
||||
struct mbuf *m_getm (struct mbuf *, int, int, int);
|
||||
|
||||
struct mbuf *m_prepend (struct mbuf *,int,int);
|
||||
struct mbuf *m_pulldown (struct mbuf *, int, int, int *);
|
||||
|
||||
struct mbuf *m_pullup (struct mbuf *, int);
|
||||
|
||||
struct mbuf *m_split (struct mbuf *,int,int);
|
||||
|
||||
struct mbuf *m_aux_add2 (struct mbuf *, int, int, void *);
|
||||
struct mbuf *m_aux_find2 (struct mbuf *, int, int, void *);
|
||||
struct mbuf *m_aux_add (struct mbuf *, int, int);
|
||||
struct mbuf *m_aux_find (struct mbuf *, int, int);
|
||||
void m_aux_delete (struct mbuf *, struct mbuf *);
|
||||
|
||||
struct mbuf *m_copym (struct mbuf *, int, int, int);
|
||||
|
||||
/* Make m_freem() and m_free() macros for better performance */
|
||||
#define m_freem(m) (netMblkClChainFree (m))
|
||||
#define m_free(m) (netMblkClFree (m))
|
||||
|
||||
/* Make m_copydata(), m_copypacket(), and m_copym() macros also */
|
||||
#define m_copydata(m, off, len, cp) \
|
||||
((void)(netMblkOffsetToBufCopy((m), (off), (cp), (len), 0)))
|
||||
#define m_copym(m, off0, len, wait) \
|
||||
(netMblkChainDup(_pNetDpool, (m), (off0), (len), (wait)))
|
||||
#define m_copypacket(m, how) \
|
||||
(netMblkChainDup(_pNetDpool, (m), 0, M_COPYALL, (how)))
|
||||
#define m_copy(m, o, l) m_copym((m), (o), (l), M_DONTWAIT)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _WRS_KERNEL */
|
||||
|
||||
#endif /* __INCNewMbufh */
|
||||
@@ -0,0 +1,344 @@
|
||||
/* protosw.h - protocol switch table header file */
|
||||
|
||||
/* Copyright 2001 - 2005 Wind River Systems, Inc. */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1982, 1986, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)protosw.h 8.1 (Berkeley) 6/2/93
|
||||
* $FreeBSD: src/sys/sys/protosw.h,v 1.28.2.2 2001/07/03 11:02:01 ume Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01n,12sep06,kch Removed reference to struct ifnet. Also removed obsolete
|
||||
prototypes.
|
||||
01m,12jul05,vvv merged from kame-20050404-freebsd411
|
||||
01l,07feb05,vvv _KERNEL cleanup
|
||||
01k,24jan05,vvv osdep.h cleanup
|
||||
01j,19jan04,bwa added PRUS_EXP definition for COMP protocol
|
||||
01i,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01h,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01g,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01f,07aug03,nee Merging to Base6 from ACCORDION_BASE6_MERGE_BASELINE label on
|
||||
Accordion codeline
|
||||
01e,15may03,spm Tornado 2.2 FCS merge (SPR #72213; from tcp_var.h
|
||||
ver 01g,05jun02,vvv: TOR2_2-FCS-COPY label, tor2 branch,
|
||||
/wind/river VOB)
|
||||
01d,09sep02,hsh add c++ protection
|
||||
01c,12jul02,hsh fix head file for ppc
|
||||
01b,21sep01,hsh uncomment pru_sense_null function point
|
||||
01a,18sep01,ham made pf* routines extern. diabled pru_sense_null.
|
||||
*/
|
||||
|
||||
#ifndef _SYS_PROTOSW_H_
|
||||
#define _SYS_PROTOSW_H_
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Forward declare these structures referenced from prototypes below. */
|
||||
struct mbuf;
|
||||
struct proc;
|
||||
struct sockaddr;
|
||||
struct socket;
|
||||
struct sockopt;
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
/*
|
||||
* Protocol switch table.
|
||||
*
|
||||
* Each protocol has a handle initializing one of these structures,
|
||||
* which is used for protocol-protocol and system-protocol communication.
|
||||
*
|
||||
* A protocol is called through the pr_init entry before any other.
|
||||
* Thereafter it is called every 200ms through the pr_fasttimo entry and
|
||||
* every 500ms through the pr_slowtimo for timer based actions.
|
||||
* The system will call the pr_drain entry if it is low on space and
|
||||
* this should throw away any non-critical data.
|
||||
*
|
||||
* Protocols pass data between themselves as chains of mbufs using
|
||||
* the pr_input and pr_output hooks. Pr_input passes data up (towards
|
||||
* the users) and pr_output passes it down (towards the interfaces); control
|
||||
* information passes up and down on pr_ctlinput and pr_ctloutput.
|
||||
* The protocol is responsible for the space occupied by any the
|
||||
* arguments to these entries and must dispose it.
|
||||
*
|
||||
* In retrospect, it would be a lot nicer to use an interface
|
||||
* similar to the vnode VOP interface.
|
||||
*/
|
||||
struct protosw {
|
||||
short pr_type; /* socket type used for */
|
||||
struct domain *pr_domain; /* domain protocol a member of */
|
||||
short pr_protocol; /* protocol number */
|
||||
short pr_flags; /* see below */
|
||||
/* protocol-protocol hooks */
|
||||
void (*pr_input) __P((struct mbuf *, int len));
|
||||
/* input to protocol (from below) */
|
||||
int (*pr_output) __P((struct mbuf *m, struct socket *so));
|
||||
/* output to protocol (from above) */
|
||||
void (*pr_ctlinput)__P((int, struct sockaddr *, void *));
|
||||
/* control input (from below) */
|
||||
int (*pr_ctloutput)__P((struct socket *, struct sockopt *));
|
||||
/* control output (from above) */
|
||||
/* user-protocol hook */
|
||||
void *pr_ousrreq;
|
||||
/* utility hooks */
|
||||
void (*pr_init) __P((void)); /* initialization hook */
|
||||
void (*pr_fasttimo) __P((void));
|
||||
/* fast timeout (200ms) */
|
||||
void (*pr_slowtimo) __P((void));
|
||||
/* slow timeout (500ms) */
|
||||
void (*pr_drain) __P((void));
|
||||
/* flush any excess space possible */
|
||||
struct pr_usrreqs *pr_usrreqs; /* supersedes pr_usrreq() */
|
||||
};
|
||||
#endif /* _WRS_KERNEL */
|
||||
|
||||
#define PR_SLOWHZ 2 /* 2 slow timeouts per second */
|
||||
#define PR_FASTHZ 5 /* 5 fast timeouts per second */
|
||||
|
||||
/*
|
||||
* Values for pr_flags.
|
||||
* PR_ADDR requires PR_ATOMIC;
|
||||
* PR_ADDR and PR_CONNREQUIRED are mutually exclusive.
|
||||
* PR_IMPLOPCL means that the protocol allows sendto without prior connect,
|
||||
* and the protocol understands the MSG_EOF flag. The first property is
|
||||
* is only relevant if PR_CONNREQUIRED is set (otherwise sendto is allowed
|
||||
* anyhow).
|
||||
* PR_ADDR_OPT requires PR_ATOMIC (like PR_ADDR)
|
||||
*/
|
||||
#define PR_ATOMIC 0x01 /* exchange atomic messages only */
|
||||
#define PR_ADDR 0x02 /* addresses given with messages */
|
||||
#define PR_CONNREQUIRED 0x04 /* connection required by protocol */
|
||||
#define PR_WANTRCVD 0x08 /* want PRU_RCVD calls */
|
||||
#define PR_RIGHTS 0x10 /* passes capabilities */
|
||||
#define PR_IMPLOPCL 0x20 /* implied open/close */
|
||||
#define PR_LASTHDR 0x40 /* enforce ipsec policy; last header */
|
||||
#define PR_ADDR_OPT 0x80 /* allow addresses during delivery */
|
||||
|
||||
/*
|
||||
* The arguments to usrreq are:
|
||||
* (*protosw[].pr_usrreq)(up, req, m, nam, opt);
|
||||
* where up is a (struct socket *), req is one of these requests,
|
||||
* m is a optional mbuf chain containing a message,
|
||||
* nam is an optional mbuf chain containing an address,
|
||||
* and opt is a pointer to a socketopt structure or nil.
|
||||
* The protocol is responsible for disposal of the mbuf chain m,
|
||||
* the caller is responsible for any space held by nam and opt.
|
||||
* A non-zero return from usrreq gives an
|
||||
* UNIX error number which should be passed to higher level software.
|
||||
*/
|
||||
#define PRU_ATTACH 0 /* attach protocol to up */
|
||||
#define PRU_DETACH 1 /* detach protocol from up */
|
||||
#define PRU_BIND 2 /* bind socket to address */
|
||||
#define PRU_LISTEN 3 /* listen for connection */
|
||||
#define PRU_CONNECT 4 /* establish connection to peer */
|
||||
#define PRU_ACCEPT 5 /* accept connection from peer */
|
||||
#define PRU_DISCONNECT 6 /* disconnect from peer */
|
||||
#define PRU_SHUTDOWN 7 /* won't send any more data */
|
||||
#define PRU_RCVD 8 /* have taken data; more room now */
|
||||
#define PRU_SEND 9 /* send this data */
|
||||
#define PRU_ABORT 10 /* abort (fast DISCONNECT, DETATCH) */
|
||||
#define PRU_CONTROL 11 /* control operations on protocol */
|
||||
#define PRU_SENSE 12 /* return status into m */
|
||||
#define PRU_RCVOOB 13 /* retrieve out of band data */
|
||||
#define PRU_SENDOOB 14 /* send out of band data */
|
||||
#define PRU_SOCKADDR 15 /* fetch socket's address */
|
||||
#define PRU_PEERADDR 16 /* fetch peer's address */
|
||||
#define PRU_CONNECT2 17 /* connect two sockets */
|
||||
/* begin for protocols internal use */
|
||||
#define PRU_FASTTIMO 18 /* 200ms timeout */
|
||||
#define PRU_SLOWTIMO 19 /* 500ms timeout */
|
||||
#define PRU_PROTORCV 20 /* receive from below */
|
||||
#define PRU_PROTOSEND 21 /* send to below */
|
||||
/* end for protocol's internal use */
|
||||
#define PRU_SEND_EOF 22 /* send and close */
|
||||
#define PRU_NREQ 22
|
||||
|
||||
#ifdef PRUREQUESTS
|
||||
char *prurequests[] = {
|
||||
"ATTACH", "DETACH", "BIND", "LISTEN",
|
||||
"CONNECT", "ACCEPT", "DISCONNECT", "SHUTDOWN",
|
||||
"RCVD", "SEND", "ABORT", "CONTROL",
|
||||
"SENSE", "RCVOOB", "SENDOOB", "SOCKADDR",
|
||||
"PEERADDR", "CONNECT2", "FASTTIMO", "SLOWTIMO",
|
||||
"PROTORCV", "PROTOSEND",
|
||||
"SEND_EOF",
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef _WRS_KERNEL /* users shouldn't see this decl */
|
||||
|
||||
struct stat;
|
||||
struct ucred;
|
||||
struct uio;
|
||||
|
||||
/*
|
||||
* If the ordering here looks odd, that's because it's alphabetical.
|
||||
* Having this structure separated out from the main protoswitch is allegedly
|
||||
* a big (12 cycles per call) lose on high-end CPUs. We will eventually
|
||||
* migrate this stuff back into the main structure.
|
||||
*/
|
||||
struct pr_usrreqs {
|
||||
int (*pru_abort) __P((struct socket *so));
|
||||
int (*pru_accept) __P((struct socket *so, struct sockaddr **nam));
|
||||
int (*pru_attach) __P((struct socket *so, int proto,
|
||||
struct proc *p));
|
||||
int (*pru_bind) __P((struct socket *so, struct sockaddr *nam,
|
||||
struct proc *p));
|
||||
int (*pru_connect) __P((struct socket *so, struct sockaddr *nam,
|
||||
struct proc *p));
|
||||
int (*pru_connect2) __P((struct socket *so1, struct socket *so2));
|
||||
int (*pru_control) __P((struct socket *so, u_long cmd, caddr_t data,
|
||||
void *ifp, struct proc *p));
|
||||
int (*pru_detach) __P((struct socket *so));
|
||||
int (*pru_disconnect) __P((struct socket *so));
|
||||
int (*pru_listen) __P((struct socket *so, struct proc *p));
|
||||
int (*pru_peeraddr) __P((struct socket *so,
|
||||
struct sockaddr **nam));
|
||||
int (*pru_rcvd) __P((struct socket *so, int flags));
|
||||
int (*pru_rcvoob) __P((struct socket *so, struct mbuf *m,
|
||||
int flags));
|
||||
int (*pru_send) __P((struct socket *so, int flags, struct mbuf *m,
|
||||
struct sockaddr *addr, struct mbuf *control,
|
||||
struct proc *p));
|
||||
#define PRUS_OOB 0x01
|
||||
#define PRUS_EOF 0x02
|
||||
#define PRUS_MORETOCOME 0x04
|
||||
#define PRUS_EOB 0x08
|
||||
#define PRUS_EXP 0x10
|
||||
|
||||
int (*pru_sense) __P((struct socket *so, struct stat *sb));
|
||||
int (*pru_shutdown) __P((struct socket *so));
|
||||
int (*pru_sockaddr) __P((struct socket *so,
|
||||
struct sockaddr **nam));
|
||||
|
||||
/*
|
||||
* These three added later, so they are out of order. They are used
|
||||
* for shortcutting (fast path input/output) in some protocols.
|
||||
* XXX - that's a lie, they are not implemented yet
|
||||
* Rather than calling sosend() etc. directly, calls are made
|
||||
* through these entry points. For protocols which still use
|
||||
* the generic code, these just point to those routines.
|
||||
*/
|
||||
int (*pru_sosend) __P((struct socket *so, struct sockaddr *addr,
|
||||
struct uio *uio, struct mbuf *top,
|
||||
struct mbuf *control, int flags,
|
||||
struct proc *p));
|
||||
int (*pru_soreceive) __P((struct socket *so,
|
||||
struct sockaddr **paddr,
|
||||
struct uio *uio, struct mbuf **mp0,
|
||||
struct mbuf **controlp, int *flagsp));
|
||||
int (*pru_sopoll) __P((struct socket *so, int events,
|
||||
struct ucred *cred, struct proc *p));
|
||||
};
|
||||
|
||||
#endif /* _WRS_KERNEL */
|
||||
|
||||
/*
|
||||
* The arguments to the ctlinput routine are
|
||||
* (*protosw[].pr_ctlinput)(cmd, sa, arg);
|
||||
* where cmd is one of the commands below, sa is a pointer to a sockaddr,
|
||||
* and arg is a `void *' argument used within a protocol family.
|
||||
*/
|
||||
#define PRC_IFDOWN 0 /* interface transition */
|
||||
#define PRC_ROUTEDEAD 1 /* select new route if possible ??? */
|
||||
#define PRC_IFUP 2 /* interface has come back up */
|
||||
#define PRC_QUENCH2 3 /* DEC congestion bit says slow down */
|
||||
#define PRC_QUENCH 4 /* some one said to slow down */
|
||||
#define PRC_MSGSIZE 5 /* message size forced drop */
|
||||
#define PRC_HOSTDEAD 6 /* host appears to be down */
|
||||
#define PRC_HOSTUNREACH 7 /* deprecated (use PRC_UNREACH_HOST) */
|
||||
#define PRC_UNREACH_NET 8 /* no route to network */
|
||||
#define PRC_UNREACH_HOST 9 /* no route to host */
|
||||
#define PRC_UNREACH_PROTOCOL 10 /* dst says bad protocol */
|
||||
#define PRC_UNREACH_PORT 11 /* bad port # */
|
||||
/* was PRC_UNREACH_NEEDFRAG 12 (use PRC_MSGSIZE) */
|
||||
#define PRC_UNREACH_SRCFAIL 13 /* source route failed */
|
||||
#define PRC_REDIRECT_NET 14 /* net routing redirect */
|
||||
#define PRC_REDIRECT_HOST 15 /* host routing redirect */
|
||||
#define PRC_REDIRECT_TOSNET 16 /* redirect for type of service & net */
|
||||
#define PRC_REDIRECT_TOSHOST 17 /* redirect for tos & host */
|
||||
#define PRC_TIMXCEED_INTRANS 18 /* packet lifetime expired in transit */
|
||||
#define PRC_TIMXCEED_REASS 19 /* lifetime expired on reass q */
|
||||
#define PRC_PARAMPROB 20 /* header incorrect */
|
||||
#define PRC_UNREACH_ADMIN_PROHIB 21 /* packet administrativly prohibited */
|
||||
|
||||
#define PRC_NCMDS 22
|
||||
|
||||
#define PRC_IS_REDIRECT(cmd) \
|
||||
((cmd) >= PRC_REDIRECT_NET && (cmd) <= PRC_REDIRECT_TOSHOST)
|
||||
|
||||
#ifdef PRCREQUESTS
|
||||
char *prcrequests[] = {
|
||||
"IFDOWN", "ROUTEDEAD", "IFUP", "DEC-BIT-QUENCH2",
|
||||
"QUENCH", "MSGSIZE", "HOSTDEAD", "#7",
|
||||
"NET-UNREACH", "HOST-UNREACH", "PROTO-UNREACH", "PORT-UNREACH",
|
||||
"#12", "SRCFAIL-UNREACH", "NET-REDIRECT", "HOST-REDIRECT",
|
||||
"TOSNET-REDIRECT", "TOSHOST-REDIRECT", "TX-INTRANS", "TX-REASS",
|
||||
"PARAMPROB", "ADMIN-UNREACH"
|
||||
};
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The arguments to ctloutput are:
|
||||
* (*protosw[].pr_ctloutput)(req, so, level, optname, optval, p);
|
||||
* req is one of the actions listed below, so is a (struct socket *),
|
||||
* level is an indication of which protocol layer the option is intended.
|
||||
* optname is a protocol dependent socket option request,
|
||||
* optval is a pointer to a mbuf-chain pointer, for value-return results.
|
||||
* The protocol is responsible for disposal of the mbuf chain *optval
|
||||
* if supplied,
|
||||
* the caller is responsible for any space held by *optval, when returned.
|
||||
* A non-zero return from usrreq gives an
|
||||
* UNIX error number which should be passed to higher level software.
|
||||
*/
|
||||
#define PRCO_GETOPT 0
|
||||
#define PRCO_SETOPT 1
|
||||
|
||||
#define PRCO_NCMDS 2
|
||||
|
||||
#ifdef PRCOREQUESTS
|
||||
char *prcorequests[] = {
|
||||
"GETOPT", "SETOPT",
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,237 @@
|
||||
/* route.h - routing table */
|
||||
|
||||
/* Copyright 2001-2005 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1986, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)route.h 8.4 (Berkeley) 1/9/95
|
||||
* $FreeBSD: src/sys/net/route.h,v 1.36.2.5 2002/02/01 11:48:01 ru Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
02d,09jan12,h_x Move extern "C" after last header file include.
|
||||
02c,25oct06,kch Removed route structure as well as unsupported members from
|
||||
rt_metrics.
|
||||
02b,04oct06,kch Updated rt_msghdr structure for IPNet integration.
|
||||
02a,05sep06,kch Cleanup for IPNet integration.
|
||||
01z,19may05,rp added RTM_ADDRINFO
|
||||
01y,01mar05,niq Include in6.h
|
||||
01x,24feb05,spm removed unneeded route format storage (SPR #100995)
|
||||
01w,24feb05,spm performance updates and code cleanup (SPR #100995)
|
||||
01v,08feb05,vvv _KERNEL cleanup
|
||||
01u,17sep04,niq Scale out routing sockets
|
||||
01t,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01s,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
||||
/main/vdt/base6_itn5_networking-int/2)
|
||||
01r,06dec03,niq Add the RTF_PRIMARY flag
|
||||
01q,24nov03,vvv updated for RTP support
|
||||
01p,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01o,10nov03,cdw Rebase from base6 iteration 1 view
|
||||
01n,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01m,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01l,27sep03,vvv moved RTFREE out of #ifdef _KERNEL
|
||||
01k,23sep03,asr Moved the #include <route/ipRouteLib.h> outside of #ifdef _KERNEL
|
||||
01j,06aug03,niq Merge from Accordion into Base6 Iteration 1 branch
|
||||
01i,10jun03,vvv include netVersion.h
|
||||
01h,01feb03,pas merge from FreeBSD 4.7 - added rt_getifa(),
|
||||
rt_ifannouncemsg(), rtrequest1()
|
||||
01g,05sep02,hsh add cplusplus protection
|
||||
01f,16may02,ant field rmx_filler[4] in the struct rt_metrics expand to
|
||||
rmx_filler[5]. New definitions rt_mod and RTF_MGMT
|
||||
01e,11mar02,ham reverted previous checkin 01d
|
||||
01d,27feb02,nee extending the rt_metrics for rip
|
||||
01c,02feb02,ham changed for tornado build.
|
||||
01b,19dec01,nee Adding multipath capability
|
||||
01a,08sep01,qli 1st round of porting
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _NET_ROUTE_H_
|
||||
#define _NET_ROUTE_H_
|
||||
|
||||
#include <sys/socket.h>
|
||||
|
||||
#include <netVersion.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Kernel resident routing tables.
|
||||
*
|
||||
* The routing tables are initialized when interface addresses
|
||||
* are set by making entries for all directly connected interfaces.
|
||||
*/
|
||||
|
||||
/*
|
||||
* We distinguish between routes to hosts and routes to networks,
|
||||
* preferring the former if available. For each route we infer
|
||||
* the interface to use from the gateway address supplied when
|
||||
* the route was entered. Routes that forward packets through
|
||||
* gateways are marked so that the output routines know to address the
|
||||
* gateway rather than the ultimate destination.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Following structure necessary for 4.3 compatibility;
|
||||
* We should eventually move it to a compat file.
|
||||
*/
|
||||
struct ortentry {
|
||||
struct sockaddr ort_dst; /* key */
|
||||
struct sockaddr ort_gateway; /* value */
|
||||
short ort_flags; /* up/down?, host/net */
|
||||
};
|
||||
|
||||
/*
|
||||
* These numbers are used by reliable protocols for determining
|
||||
* retransmission behavior and are included in the routing structure.
|
||||
*/
|
||||
struct rt_metrics {
|
||||
u_long rmx_mtu; /* MTU for this path */
|
||||
u_long rmx_hopcount; /* max hops expected */
|
||||
u_long rmx_expire; /* lifetime for route, e.g. redirect */
|
||||
u_long rmx_rtt; /* estimated round trip time */
|
||||
u_long rmx_rttvar; /* estimated rtt variance */
|
||||
};
|
||||
|
||||
/*
|
||||
* rmx_rtt and rmx_rttvar are stored as microseconds;
|
||||
* RTTTOPRHZ(rtt) converts to a value suitable for use
|
||||
* by a protocol slowtimo counter.
|
||||
*/
|
||||
#define RTM_RTTUNIT 1000000 /* units for rtt, rttvar, as units per sec */
|
||||
#define RTTTOPRHZ(r) ((r) / (RTM_RTTUNIT / PR_SLOWHZ))
|
||||
|
||||
/*
|
||||
* XXX kernel function pointer `rt_output' is visible to applications.
|
||||
*/
|
||||
|
||||
/* Values for rt_flags */
|
||||
#define RTF_UP 0x1 /* route usable */
|
||||
#define RTF_GATEWAY 0x2 /* destination is a gateway */
|
||||
#define RTF_HOST 0x4 /* host entry (net otherwise) */
|
||||
#define RTF_REJECT 0x8 /* host or net unreachable */
|
||||
#define RTF_DYNAMIC 0x10 /* created dynamically (by redirect) */
|
||||
#define RTF_MODIFIED 0x20 /* modified dynamically (by redirect)*/
|
||||
#define RTF_DONE 0x40 /* message confirmed */
|
||||
#define RTF_MASK 0x80 /* Subnet mask present */
|
||||
#define RTF_CLONING 0x100 /* generate new routes on use */
|
||||
#define RTF_XRESOLVE 0x200 /* external daemon resolves name */
|
||||
#define RTF_LLINFO 0x400 /* generated by link layer (e.g. ARP)*/
|
||||
#define RTF_STATIC 0x800 /* manually added */
|
||||
#define RTF_BLACKHOLE 0x1000 /* just discard pkts (during updates)*/
|
||||
#define RTF_LOCAL 0x2000 /* route represents a local address */
|
||||
#define RTF_PROTO2 0x4000 /* protocol specific routing flag */
|
||||
#define RTF_PROTO1 0x8000 /* protocol specific routing flag */
|
||||
#define RTF_PREF 0x10000 /* Add route first, no ECMP */
|
||||
#define RTF_SRCADDR 0x20000 /* The gateway field specifies the default source address */
|
||||
#define RTF_MBINDING 0x40000 /* This route is part of multiple binding */
|
||||
#define RTF_SKIP 0x80000 /* Treat this route as a routing lookup failure */
|
||||
|
||||
/*
|
||||
* Structures for routing messages.
|
||||
*/
|
||||
struct rt_msghdr {
|
||||
u_short rtm_msglen; /* to skip over non-understood messages */
|
||||
u_char rtm_version; /* future binary compatibility */
|
||||
u_char rtm_type; /* message type */
|
||||
u_long rtm_index; /* index for associated ifp */
|
||||
int rtm_flags; /* flags, incl. kern & message, e.g. DONE */
|
||||
int rtm_addrs; /* bitmask identifying sockaddrs in msg */
|
||||
pid_t rtm_pid; /* identify sender */
|
||||
int rtm_seq; /* for sender to identify action */
|
||||
int rtm_errno; /* why failed */
|
||||
int rtm_use; /* from rtentry */
|
||||
u_long rtm_inits; /* which metrics we are initializing */
|
||||
u_long rtm_table; /* Route table index (IPCOM_ROUTE_TABLE_DEFAULT = default) */
|
||||
struct rt_metrics rtm_rmx; /* metrics themselves */
|
||||
};
|
||||
|
||||
/*
|
||||
* Message types. The message numbers should be continous as their
|
||||
* values are used as array indices
|
||||
*/
|
||||
#define RTM_ADD 0x1 /* Add Route */
|
||||
#define RTM_DELETE 0x2 /* Delete Route */
|
||||
#define RTM_CHANGE 0x3 /* Change Metrics or flags */
|
||||
#define RTM_GET 0x4 /* Report Metrics */
|
||||
#define RTM_LOSING 0x5 /* Kernel Suspects Partitioning */
|
||||
#define RTM_REDIRECT 0x6 /* Told to use different route */
|
||||
#define RTM_MISS 0x7 /* Lookup failed on this address */
|
||||
#define RTM_LOCK 0x8 /* fix specified metrics */
|
||||
#define RTM_OLDADD 0x9 /* caused by SIOCADDRT */
|
||||
#define RTM_OLDDEL 0xa /* caused by SIOCDELRT */
|
||||
#define RTM_RESOLVE 0xb /* req to resolve dst to LL addr */
|
||||
#define RTM_NEWADDR 0xc /* address being added to iface */
|
||||
#define RTM_DELADDR 0xd /* address being removed from iface */
|
||||
#define RTM_IFINFO 0xe /* iface going up/down etc. */
|
||||
#define RTM_IFANNOUNCE 0x10 /* iface arrival/departure */
|
||||
|
||||
/* IPNet extension for Virtual Router */
|
||||
#define RTM_NEWVR 0xf1 /* TF1 Add a new virtual router */
|
||||
#define RTM_DELVR 0xf2 /* TF1 Delete a virtual router, the default (0)
|
||||
route table cannot be remmoved */
|
||||
|
||||
/*
|
||||
* Bitmask values for rtm_addrs.
|
||||
*/
|
||||
#define RTA_DST 0x1 /* destination sockaddr present */
|
||||
#define RTA_GATEWAY 0x2 /* gateway sockaddr present */
|
||||
#define RTA_NETMASK 0x4 /* netmask sockaddr present */
|
||||
#define RTA_GENMASK 0x8 /* cloning mask sockaddr present */
|
||||
#define RTA_IFP 0x10 /* interface name sockaddr present */
|
||||
#define RTA_IFA 0x20 /* interface addr sockaddr present */
|
||||
#define RTA_AUTHOR 0x40 /* sockaddr for author of redirect */
|
||||
#define RTA_BRD 0x80 /* for NEWADDR, broadcast or p-p dest addr */
|
||||
|
||||
/*
|
||||
* Index offsets for sockaddr array for alternate internal encoding.
|
||||
*/
|
||||
#define RTAX_DST 0 /* destination sockaddr present */
|
||||
#define RTAX_GATEWAY 1 /* gateway sockaddr present */
|
||||
#define RTAX_NETMASK 2 /* netmask sockaddr present */
|
||||
#define RTAX_GENMASK 3 /* cloning mask sockaddr present */
|
||||
#define RTAX_IFP 4 /* interface name sockaddr present */
|
||||
#define RTAX_IFA 5 /* interface addr sockaddr present */
|
||||
#define RTAX_AUTHOR 6 /* sockaddr for author of redirect */
|
||||
#define RTAX_BRD 7 /* for NEWADDR, broadcast or p-p dest addr */
|
||||
#define RTAX_MAX 8 /* size of array to allocate */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _NET_ROUTE_H_ */
|
||||
@@ -0,0 +1,357 @@
|
||||
/* socketvar.h - internal socket structures and definitions */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2001-2007 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)socketvar.h 8.3 (Berkeley) 2/19/95
|
||||
* $FreeBSD: src/sys/sys/socketvar.h,v 1.46.2.9 2002/08/14 22:23:10 dg Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
02j,10jul07,ebh Remove socketvar refcount for SMP as it is not used
|
||||
02i,27dec06,wap Add socketvar refcount for SMP
|
||||
02h,20dec06,kch Added so_bkendaux member to socket structure to support
|
||||
backend auxiliary data. Also removes the obsolete socket
|
||||
vlan members from socket structure.
|
||||
02g,28sep06,kch Cleanup unsupported prototypes for IPNet integration.
|
||||
02f,09jan06,hya Added soo_stat().
|
||||
02e,15sep05,kch Added so_vlan_options to socket structure. Modified
|
||||
SO_VLAN_ADD() macro to use the so_vlan_options (SPR #112513).
|
||||
02d,23aug05,kch Keep the vlan in m_pkthdr in host byte order.
|
||||
02c,09aug05,kch Added so_vlan to socket structure.
|
||||
02b,27feb05,dlk Make so_linger an unsigned short; part of linger time-out
|
||||
support.
|
||||
02a,09feb05,dlk Embed socket semaphores in struct socket. Remove
|
||||
excess semaphores. Added unixIoctlMemValidate() routine.
|
||||
01z,07feb05,vvv _KERNEL cleanup
|
||||
01y,02feb05,vvv replaced _WRS_KERNEL with _KERNEL to fix build error
|
||||
01x,24jan05,dlk Remove sb_sel member of struct sockbuf; use SB_SEL flag
|
||||
(SPR #105576).
|
||||
01x,14jan05,vvv osdep.h cleanup
|
||||
01w,19sep04,ann removed usage of the SELECT_LIST macro defined in osdep.h.
|
||||
01v,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01u,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
||||
/main/vdt/base6_itn5_networking-int/1)
|
||||
01t,07jan04,ann fixed sblock definition (SPR #92509)
|
||||
01s,02jan04,vvv added pSoConnTimo field in socket structure
|
||||
01r,08dec03,vvv updated based on inspection comments
|
||||
01q,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01p,17nov03,nee Added socket backend table pointer
|
||||
01o,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01n,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01m,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01l,24oct03,cdw update include statements post header re-org.
|
||||
01k,06aug03,nee Accordion Base6 merge from ACCORDION_BASE6_MERGE_BASELINE
|
||||
label
|
||||
01j,09may03,vvv included semLib.h and selectLib.h
|
||||
01i,01feb03,pas merge from FreeBSD 4.7 - added sf_buf functions
|
||||
01h,06sep02,hsh add c++ protection
|
||||
01g,02feb02,ham changed for tornado build.
|
||||
01f,13dec01,ann enabling the xsockets for sysctl
|
||||
01e,29oct01,ann fixing bugs from the test mode
|
||||
01d,12sep01,ann changing the sbfree macro based on new buffer library
|
||||
01c,24aug01,ann changing the path for protosw.h
|
||||
01b,10aug01,ann more porting stuff
|
||||
01a,02aug01,ann performed the WRS-port from FreeBSD 4.3 v 1.46.2.5
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _SYS_SOCKETVAR_H_
|
||||
#define _SYS_SOCKETVAR_H_
|
||||
|
||||
#include <net/protosw.h>
|
||||
#include <sys/queue.h>
|
||||
#include <semLib.h>
|
||||
#include <selectLib.h>
|
||||
#include <sockFunc.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Kernel structure per socket.
|
||||
* Contains send and receive buffer queues,
|
||||
* handle on protocol and pointer to protocol
|
||||
* private data and error information.
|
||||
*/
|
||||
typedef u_quad_t so_gen_t;
|
||||
|
||||
/*
|
||||
* WRS-port
|
||||
* - if 0'd so_zone, and the accept filter members
|
||||
*/
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
struct socket {
|
||||
struct sockFunc *pSockFuncTbl; /* socket backend function table */
|
||||
short so_type; /* generic type, see socket.h */
|
||||
short so_options; /* from socket call, see socket.h */
|
||||
u_short so_linger; /* time to linger while closing */
|
||||
short so_state; /* internal state flags SS_*, below */
|
||||
caddr_t so_pcb; /* protocol control block */
|
||||
struct protosw *so_proto; /* protocol handle */
|
||||
|
||||
/*
|
||||
* Variables for connection queuing.
|
||||
* Socket where accepts occur is so_head in all subsidiary sockets.
|
||||
* If so_head is 0, socket is not related to an accept.
|
||||
* For head socket so_incomp queues partially completed connections,
|
||||
* while so_comp is a queue of connections ready to be accepted.
|
||||
* If a connection is aborted and it has so_head set, then
|
||||
* it has to be pulled out of either so_incomp or so_comp.
|
||||
* We allow connections to queue up based on current queue lengths
|
||||
* and limit on number of queued connections for this socket.
|
||||
*/
|
||||
struct socket *so_head; /* back pointer to accept socket */
|
||||
TAILQ_HEAD(, socket) so_incomp; /* queue of partial unaccepted connections */
|
||||
TAILQ_HEAD(, socket) so_comp; /* queue of complete unaccepted connections */
|
||||
TAILQ_ENTRY(socket) so_list; /* list of unaccepted connections */
|
||||
short so_qlen; /* number of unaccepted connections */
|
||||
short so_incqlen; /* number of unaccepted incomplete
|
||||
connections */
|
||||
short so_qlimit; /* max number queued connections */
|
||||
short so_timeo; /* connection timeout */
|
||||
u_short so_error; /* error affecting connection */
|
||||
u_long so_oobmark; /* chars to oob mark */
|
||||
|
||||
short so_pgrp; /* WRS extension for ASYNC oper */
|
||||
int so_fd; /* WRS extension for storing FD */
|
||||
|
||||
SEL_WAKEUP_LIST so_selWakeupList; /* WRS extension for select */
|
||||
|
||||
/*
|
||||
* Variables for socket buffering.
|
||||
*/
|
||||
struct sockbuf {
|
||||
u_long sb_cc; /* actual chars in buffer */
|
||||
u_long sb_hiwat; /* max actual char count */
|
||||
u_long sb_mbcnt; /* chars of mbufs used */
|
||||
u_long sb_mbmax; /* max chars of mbufs to use */
|
||||
long sb_lowat; /* low water mark */
|
||||
struct mbuf *sb_mb; /* the mbuf chain */
|
||||
|
||||
short sb_flags; /* flags, see below */
|
||||
short sb_timeo; /* timeout for read/write */
|
||||
u_long sb_selCount;
|
||||
|
||||
SEMAPHORE sb_Sem; /* WRS extension for sb semaphore */
|
||||
} so_rcv, so_snd;
|
||||
#define SB_MAX (256*1024) /* default for max chars in sockbuf */
|
||||
#define SB_LOCK 0x01 /* lock on data queue */
|
||||
#define SB_WANT 0x02 /* someone is waiting to lock */
|
||||
#define SB_WAIT 0x04 /* someone is waiting for data/space */
|
||||
#define SB_SEL 0x08 /* someone is selecting */
|
||||
#define SB_ASYNC 0x10 /* ASYNC I/O, need signals */
|
||||
#define SB_UPCALL 0x20 /* someone wants an upcall */
|
||||
#define SB_NOINTR 0x40 /* operations not interruptible */
|
||||
#define SB_AIO 0x80 /* AIO operations queued */
|
||||
#define SB_KNOTE 0x100 /* kernel note attached */
|
||||
|
||||
void (*so_upcall) __P((struct socket *, void *, int));
|
||||
void *so_upcallarg;
|
||||
|
||||
/* NB: generation count must not be first; easiest to make it last. */
|
||||
so_gen_t _so_gencnt; /* generation count */
|
||||
void *so_emuldata; /* private data for emulators */
|
||||
|
||||
int connTimeo; /* connection establishment timeout */
|
||||
|
||||
void *so_bkendaux; /* socket backend auxiliary data */
|
||||
};
|
||||
#endif /* _WRS_KERNEL */
|
||||
|
||||
/*
|
||||
* Socket state bits.
|
||||
*/
|
||||
#define SS_NOFDREF 0x0001 /* no file table ref any more */
|
||||
#define SS_ISCONNECTED 0x0002 /* socket connected to a peer */
|
||||
#define SS_ISCONNECTING 0x0004 /* in process of connecting to peer */
|
||||
#define SS_ISDISCONNECTING 0x0008 /* in process of disconnecting */
|
||||
#define SS_CANTSENDMORE 0x0010 /* can't send more data to peer */
|
||||
#define SS_CANTRCVMORE 0x0020 /* can't receive more data from peer */
|
||||
#define SS_RCVATMARK 0x0040 /* at mark on input */
|
||||
|
||||
#define SS_PRIV 0x0080 /* privileged for broadcast, raw... */
|
||||
|
||||
#define SS_NBIO 0x0100 /* non-blocking ops */
|
||||
#define SS_ASYNC 0x0200 /* async i/o notify */
|
||||
#define SS_ISCONFIRMING 0x0400 /* deciding to accept connection req */
|
||||
|
||||
#define SS_INCOMP 0x0800 /* unaccepted, incomplete connection */
|
||||
#define SS_COMP 0x1000 /* unaccepted, complete connection */
|
||||
#define SS_ISDISCONNECTED 0x2000 /* socket disconnected from peer */
|
||||
|
||||
|
||||
/*
|
||||
* Externalized form of struct socket used by the sysctl(3) interface.
|
||||
*/
|
||||
struct xsocket {
|
||||
size_t xso_len; /* length of this structure */
|
||||
struct socket *xso_so; /* makes a convenient handle sometimes */
|
||||
short so_type;
|
||||
short so_options;
|
||||
u_short so_linger;
|
||||
short so_state;
|
||||
caddr_t so_pcb; /* another convenient handle */
|
||||
int xso_protocol;
|
||||
int xso_family;
|
||||
short so_qlen;
|
||||
short so_incqlen;
|
||||
short so_qlimit;
|
||||
short so_timeo;
|
||||
u_short so_error;
|
||||
u_long so_oobmark;
|
||||
struct xsockbuf {
|
||||
u_long sb_cc;
|
||||
u_long sb_hiwat;
|
||||
u_long sb_mbcnt;
|
||||
u_long sb_mbmax;
|
||||
long sb_lowat;
|
||||
short sb_flags;
|
||||
short sb_timeo;
|
||||
} so_rcv, so_snd;
|
||||
uid_t so_uid; /* XXX */
|
||||
};
|
||||
|
||||
/*
|
||||
* Macros for sockets and socket buffering.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Do we need to notify the other side when I/O is possible?
|
||||
*/
|
||||
#define sb_notify(sb) (((sb)->sb_flags & (SB_WAIT | SB_SEL | SB_ASYNC | \
|
||||
SB_UPCALL | SB_AIO | SB_KNOTE)) != 0)
|
||||
|
||||
/*
|
||||
* How much space is there in a socket buffer (so->so_snd or so->so_rcv)?
|
||||
* This is problematical if the fields are unsigned, as the space might
|
||||
* still be negative (cc > hiwat or mbcnt > mbmax). Should detect
|
||||
* overflow and return 0. Should use "lmin" but it doesn't exist now.
|
||||
*/
|
||||
#define sbspace(sb) \
|
||||
((long) imin((int)((sb)->sb_hiwat - (sb)->sb_cc), \
|
||||
(int)((sb)->sb_mbmax - (sb)->sb_mbcnt)))
|
||||
|
||||
/* do we have to send all at once on a socket? */
|
||||
#define sosendallatonce(so) \
|
||||
((so)->so_proto->pr_flags & PR_ATOMIC)
|
||||
|
||||
/* can we read something from so? */
|
||||
#define soreadable(so) \
|
||||
((so)->so_rcv.sb_cc >= (so)->so_rcv.sb_lowat || \
|
||||
((so)->so_state & SS_CANTRCVMORE) || \
|
||||
(so)->so_comp.tqh_first || (so)->so_error)
|
||||
|
||||
/* can we write something to so? */
|
||||
#define sowriteable(so) \
|
||||
((sbspace(&(so)->so_snd) >= (so)->so_snd.sb_lowat && \
|
||||
(((so)->so_state&SS_ISCONNECTED) || \
|
||||
((so)->so_proto->pr_flags&PR_CONNREQUIRED)==0)) || \
|
||||
((so)->so_state & SS_CANTSENDMORE) || \
|
||||
(so)->so_error)
|
||||
|
||||
/* adjust counters in sb reflecting allocation of m */
|
||||
#define sballoc(sb, m) { \
|
||||
(sb)->sb_cc += (m)->m_len; \
|
||||
(sb)->sb_mbcnt += MSIZE; \
|
||||
if ((m)->m_flags & M_EXT) \
|
||||
(sb)->sb_mbcnt += (m)->m_extSize; \
|
||||
}
|
||||
|
||||
/* adjust counters in sb reflecting freeing of m */
|
||||
#define sbfree(sb, m) { \
|
||||
(sb)->sb_cc -= (m)->m_len; \
|
||||
(sb)->sb_mbcnt -= MSIZE; \
|
||||
if ((m)->m_flags & M_EXT) \
|
||||
(sb)->sb_mbcnt -= (m)->m_extSize; \
|
||||
}
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
|
||||
/*
|
||||
* Macro to add the socket-based VLAN to the m_pkthdr. This is in the
|
||||
* _WRS_KERNEL section because it will never be used by user code.
|
||||
*/
|
||||
#ifdef SOCKET_VLAN
|
||||
/*
|
||||
* Keep the vlan in the m_pkthdr in host byte order until it needs to be
|
||||
* put into the packet (by the MUX-L2 egress code).
|
||||
*/
|
||||
#define SO_VLAN_ADD(m, so) \
|
||||
if ((so)->so_options & SO_VLAN) \
|
||||
{ \
|
||||
(m)->m_pkthdr.vlan = (so)->so_vlan; \
|
||||
(m)->m_pkthdr.csum_flags |= (so)->so_vlan_options; \
|
||||
}
|
||||
#endif /* SOCKET_VLAN */
|
||||
|
||||
/*
|
||||
* Argument structure for sosetopt et seq. This is in the _WRS_KERNEL
|
||||
* section because it will never be visible to user code.
|
||||
*/
|
||||
|
||||
enum sopt_dir { SOPT_GET, SOPT_SET };
|
||||
struct sockopt {
|
||||
enum sopt_dir sopt_dir; /* is this a get or a set? */
|
||||
int sopt_level; /* second arg of [gs]etsockopt */
|
||||
int sopt_name; /* third arg of [gs]etsockopt */
|
||||
void *sopt_val; /* fourth arg of [gs]etsockopt */
|
||||
size_t sopt_valsize; /* (almost) fifth arg of [gs]etsockopt */
|
||||
struct proc *sopt_p; /* calling process or null if kernel */
|
||||
};
|
||||
|
||||
struct sf_buf {
|
||||
SLIST_ENTRY(sf_buf) free_list; /* list of free buffer slots */
|
||||
int refcnt; /* reference count */
|
||||
};
|
||||
|
||||
extern STATUS unixIoctlMemValidate (unsigned int cmd, const void * pData);
|
||||
|
||||
#endif /* _WRS_KERNEL */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !_SYS_SOCKETVAR_H_ */
|
||||
@@ -0,0 +1,107 @@
|
||||
/* systm.h */
|
||||
|
||||
/* Copyright 2001-2005 Wind River Systems, Inc. */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1982, 1988, 1991, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
* (c) UNIX System Laboratories, Inc.
|
||||
* All or some portions of this file are derived from material licensed
|
||||
* to the University of California by American Telephone and Telegraph
|
||||
* Co. or Unix System Laboratories, Inc. and are reproduced herein with
|
||||
* the permission of UNIX System Laboratories, Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)systm.h 8.7 (Berkeley) 3/29/95
|
||||
* $FreeBSD: src/sys/sys/systm.h,v 1.111.2.5 2001/01/16 12:26:21 phk Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01u,09jan12,h_x Move extern "C" after last header file include.
|
||||
01t,11apr05,sar Use gtfTimeout and gtfUntimeout directly instead of via
|
||||
macros and replace global tm with gtfTimerMangaerCB
|
||||
Removed timeout and untimeout.
|
||||
01s,06apr05,vvv restored copyin/copyout to macros to fix warnings
|
||||
(SPR #106982)
|
||||
01r,09feb05,sar Move gtf include files per GTF code inspection of 10/26/2004
|
||||
01q,07feb05,vvv _KERNEL cleanup
|
||||
01p,17mar04,rp updated to build for 5.5
|
||||
01o,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01n,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01m,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01l,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01k,27oct03,cdw update include statements post header re-org.
|
||||
01j,02jul03,vvv added _KERNEL protection for copyin and copyout
|
||||
01i,14may03,vvv included taskLib.h
|
||||
01h,09may03,vvv included string.h
|
||||
01g,24apr03,syy Make copyin() and copyout() static to avoid duplicated
|
||||
symbols
|
||||
01f,18apr03,syy Fixed compiler warnings
|
||||
01e,10sep02,hsh add c++ protection
|
||||
01d,28mar02,ppp changing it for tornado build environment
|
||||
01c,17sep01,ppp adding the macro for lmin
|
||||
01b,13sep01,ann un commenting certain defines that will be needed
|
||||
01a,06jun01,deg ported.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _SYS_SYSTM_H_
|
||||
#define _SYS_SYSTM_H_
|
||||
|
||||
#include <string.h>
|
||||
#include <private/gtf_wrapper.h>
|
||||
|
||||
#include "taskLib.h"
|
||||
#include "semLib.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
extern GTF_TIMER_MANAGER * gtfTimerManagerCB;
|
||||
|
||||
#define ovbcopy bcopy /* overlapped buffer copy */
|
||||
|
||||
#define copyout(from, to, len) (bcopy (from, to, len), OK)
|
||||
#define copyin(from, to, len) (bcopy (from, to, len), OK)
|
||||
|
||||
#define imin(a,b) (((a) < (b)) ? (a) : (b)) /* interger min */
|
||||
#define lmin(a,b) ((a) < (b) ? (a) : (b)) /* long min */
|
||||
|
||||
#endif /* _WRS_KERNEL */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !_SYS_SYSTM_H_ */
|
||||
@@ -0,0 +1,128 @@
|
||||
/* uio.h - i/o vectors for reading and writing */
|
||||
|
||||
/* Copyright 2001-2006, 2009 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1993, 1994
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)uio.h 8.5 (Berkeley) 2/22/94
|
||||
* $FreeBSD: src/sys/sys/uio.h,v 1.11.2.1 2001/09/28 16:58:35 dillon Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01n,09jan12,h_x Move extern "C" after last header file include.
|
||||
01m,03jul09,zly LP64-bit support
|
||||
01l,06apr06,jlk SPR 119965. Changed uio->uio_offset to an off_t64.
|
||||
01k,15feb05,vvv include cdefs.h only in kernel
|
||||
01j,24jan05,vvv osdep.h cleanup
|
||||
01i,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01h,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01g,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01f,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01e,27oct03,cdw update include statements post header re-org.
|
||||
01d,01feb03,pas merge from FreeBSD 4.7 - added uio_yield()
|
||||
01c,06sep02,hsh add c++ protection
|
||||
01b,02feb02,ham changed for tornado build.
|
||||
01a,15aug01,ann ported to clarinet from FreeBSD 4.3 ver 1.11
|
||||
*/
|
||||
|
||||
#ifndef _SYS_UIO_H_
|
||||
#define _SYS_UIO_H_
|
||||
|
||||
#include <vxWorks.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* XXX
|
||||
* iov_base should be a void *.
|
||||
*/
|
||||
struct iovec {
|
||||
char *iov_base; /* Base address. */
|
||||
size_t iov_len; /* Length. */
|
||||
};
|
||||
|
||||
/*
|
||||
* Limits. Note, the maximum size of cluster in the network stack system
|
||||
* buffer pool may impose a more stringent limit than UIO_MAXIOV.
|
||||
*/
|
||||
#define UIO_MAXIOV 1024 /* max 1K of iov's */
|
||||
#define UIO_SMALLIOV 8 /* 8 on stack, else malloc */
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
enum uio_rw { UIO_READ, UIO_WRITE };
|
||||
|
||||
/* Segment flag values. */
|
||||
enum uio_seg {
|
||||
UIO_USERSPACE, /* from user data space */
|
||||
UIO_SYSSPACE, /* from system space */
|
||||
UIO_USERISPACE, /* from user I space */
|
||||
UIO_NOCOPY /* don't copy, already in object */
|
||||
};
|
||||
|
||||
struct uio {
|
||||
struct iovec *uio_iov;
|
||||
int uio_iovcnt;
|
||||
off_t64 uio_offset;
|
||||
size_t uio_resid;
|
||||
enum uio_seg uio_segflg;
|
||||
enum uio_rw uio_rw;
|
||||
struct proc *uio_procp;
|
||||
};
|
||||
|
||||
struct vm_object;
|
||||
|
||||
void uio_yield __P((void));
|
||||
|
||||
#if defined(RUNTIME_64BIT_NAME) /* FIXME */ || \
|
||||
(_WRS_VXWORKS_MAJOR >= 6 && _WRS_VXWORKS_MINOR >= 9)
|
||||
int uiomove __P((caddr_t, size_t, struct uio *));
|
||||
#else
|
||||
int uiomove __P((caddr_t, int, struct uio *));
|
||||
#endif
|
||||
|
||||
int uiomoveco __P((caddr_t, int, struct uio *, struct vm_object *));
|
||||
int uioread __P((int, struct uio *, struct vm_object *, int *));
|
||||
|
||||
#endif /* _WRS_KERNEL */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !_SYS_UIO_H_ */
|
||||
@@ -0,0 +1,97 @@
|
||||
/* unixLib.h - UNIX kernel compatability library header file */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1984-2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01v,09jan12,h_x Move extern "C" after last header file include.
|
||||
01u,06sep06,kch Removed unsupported prototypes for IPNet integration.
|
||||
01t,19jun06,jpb Removed I960 check
|
||||
01s,26aug05,dlk Add section tags.
|
||||
01r,12jul05,kch Removed _netMalloc() and _netFree() prototypes.
|
||||
01q,07jul05,dlk Balance parenthesis in wakeup_one().
|
||||
01p,18may05,rp moved ppsratecheck from icmp6.c to unixLib
|
||||
01o,19apr05,rp merged from comp_wn_ipv6_mld_interim-dev
|
||||
01n,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01m,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
||||
/main/vdt/base6_itn5_networking-int/1)
|
||||
01l,03dec03,asr Fix compile errors after dinkum libc check-in
|
||||
01k,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01j,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01i,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01h,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01g,10jun03,vvv include netVersion.h
|
||||
01f,09may03,vvv included semLib.h and times.h
|
||||
01e,09oct01,hsh add phashinit routine
|
||||
01d,26sep01,qli chaning the prototype for "panic"
|
||||
01c,18sep01,ann adding the prototype of tvToTicks
|
||||
01b,05sep01,ham corrected microtime's prototype.
|
||||
01a,01sep01,ann ported to clarinet from AE1.1 version 01f,
|
||||
added the prototypes for microtime()
|
||||
*/
|
||||
|
||||
#ifndef __INCunixLibh
|
||||
#define __INCunixLibh
|
||||
|
||||
#include <netVersion.h>
|
||||
#ifdef _WRS_KERNEL
|
||||
#include <sys/times.h>
|
||||
#else
|
||||
#include <sys/time.h> /* For RTP, it is sys/time.h */
|
||||
#endif
|
||||
#include <semLib.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define MALLOC(space, cast, size, type, flags) { \
|
||||
(space) = (cast) netClusterGet (_pNetSysPool, \
|
||||
netClPoolIdGet (_pNetSysPool, \
|
||||
size, TRUE)); \
|
||||
}
|
||||
|
||||
#define FREE(addr, type) { \
|
||||
netClFree (_pNetSysPool, (unsigned char *) addr); \
|
||||
}
|
||||
|
||||
#define DATA_TO_MBLK(pBuf) \
|
||||
(*((struct mbuf **)((char *)(pBuf) - sizeof(struct mbuf **))))
|
||||
|
||||
/* Function declarations */
|
||||
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
|
||||
extern void panic(const char *, ...);
|
||||
|
||||
#else /* __STDC__ */
|
||||
|
||||
extern void panic ();
|
||||
|
||||
#endif /* __STDC__ */
|
||||
|
||||
/*
|
||||
* BSD defines wakeup() to wake up all tasks sleeping on
|
||||
* the specified channel. wakeup_one() wakes up a single process
|
||||
* (more or less). VxWorks' tsleep() and ksleep() have been modified to
|
||||
* give up splSemId and take the awaited semaphore atomically, which is
|
||||
* necessary whether semFlush() or semGive() is used.
|
||||
* Note, VxWorks has in the past incorrectly made wakeup() equivalent
|
||||
* to semGive() rather than semFlush().
|
||||
*/
|
||||
|
||||
#define wakeup(semId) ((void)semFlush((semId)))
|
||||
#define wakeup_one(semId) ((void)semGive((semId)))
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCunixLibh */
|
||||
@@ -0,0 +1,76 @@
|
||||
/* ifconfig.h - interface configuation */
|
||||
|
||||
/* Copyright 2002 - 2006 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Peter Wemm.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed for the FreeBSD Project
|
||||
* by Peter Wemm.
|
||||
* 4. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* so there!
|
||||
*
|
||||
* $FreeBSD: src/sbin/ifconfig/ifconfig.h,v 1.5.2.2 2001/07/04 20:49:20 brooks Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01n,09jan12,h_x Move extern "C" after last header file include.
|
||||
01m,04oct06,kch Removed unsupported prefix prototype.
|
||||
01l,07sep05,kch Removed prototypes for vlan pseudo interface.
|
||||
01k,27aug05,kch Added setvlanpriority() prototype.
|
||||
01j,23aug05,dlk Fix compiler warning.
|
||||
01i,04aug05,kch Added ifconfig_vlan.c prototypes.
|
||||
01h,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01g,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01f,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01e,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01d,10jun03,vvv include netVersion.h
|
||||
01c,14may03,vvv added ifconfig()
|
||||
01b,29apr03,syy Added #ifdef's for inclusion and __cplusplus
|
||||
01a,23jan02,deg ported from FreeBSD
|
||||
*/
|
||||
|
||||
#ifndef __INCifconfigh
|
||||
#define __INCifconfigh
|
||||
|
||||
#include <netVersion.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern int ifconfig (char *);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* ! __INCifconfigh */
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
/* netstat.h - network information display header file */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1984-2005 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01o,05sep06,kch Cleanup for IPNet integration.
|
||||
01n,29jun05,kch Added sctp_protopr() and sctp_stats() prototypes.
|
||||
01m,19apr05,rp merged from comp_wn_ipv6_mld_interim-dev
|
||||
01l,25feb05,niq merge mroute changes from comp_wn_ipv6_multicast_interim-dev
|
||||
branch (ver 1)
|
||||
01k,07feb05,vvv _KERNEL cleanup
|
||||
01j,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01i,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01h,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01g,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01f,10jun03,vvv include netVersion.h
|
||||
01e,11apr03,ijm fixed diab compiler warnings
|
||||
01d,03apr03,vvv modified for componentization (SPR #87352)
|
||||
01c,26sep02,ppp changing the return type for routepr from void to int
|
||||
01b,09apr02,ppp changing/ enabling a few prototypes; adding the prototype for
|
||||
netstat
|
||||
01a,02feb02,ppp ported from kame
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 1992, 1993
|
||||
* Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)netstat.h 8.2 (Berkeley) 1/4/94
|
||||
* $FreeBSD: src/usr.bin/netstat/netstat.h,v 1.16.2.4 2001/08/10 09:07:09 ru Exp $
|
||||
*/
|
||||
|
||||
#ifndef __INCnetstath
|
||||
#define __INCnetstath
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
extern int netstat (char * options);
|
||||
#endif /* _WRS_KERNEL*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* __INCnetstath */
|
||||
@@ -0,0 +1,39 @@
|
||||
/* rtadvLib.h - Router Advertisement for IPv6 */
|
||||
|
||||
/* Copyright 1992-2003 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01f,09jan12,h_x Move extern "C" after last header file include.
|
||||
01e,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01d,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01c,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01b,10jun03,vvv include netVersion.h
|
||||
01a,09Apr02,nee written.
|
||||
*/
|
||||
|
||||
#ifndef __INCrouteCmdh
|
||||
#define __INCrouteCmdh
|
||||
|
||||
#include <netVersion.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
|
||||
extern int routec (char *options);
|
||||
|
||||
#else /* __STDC__ */
|
||||
|
||||
extern int routec ();
|
||||
|
||||
#endif /* __STDC__ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCrouteCmdh */
|
||||
@@ -0,0 +1,48 @@
|
||||
/* netFuncBindP.h - prototypes of network common global functions */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01e,03dec10,h_x Add IMPORT FUNCPTR _func_remCurIdGet and
|
||||
IMPORT FUNCPTR _func_remCurIdSet.
|
||||
01d,10oct07,tkf Add _ipdhcpc_callback_hook (as part of a fix to
|
||||
WIND00102686).
|
||||
01c,28feb07,dlk Replace _gethostbyname, _gethostbyaddr function pointers
|
||||
with reentrant versions _ipcom_gethostbyname_r,
|
||||
_ipcom_gethostbyaddr_r.
|
||||
01b,24oct06,kch Removed unsupported fastudp prototypes.
|
||||
01a,28aug06,tkf Adopted the obsoleted netFuncBindP.h.
|
||||
*/
|
||||
|
||||
/*
|
||||
DESCRIPTION
|
||||
|
||||
This header file declares prototypes of network common global functions.
|
||||
|
||||
*/
|
||||
|
||||
#ifndef __INCnetFuncBindPh
|
||||
#define __INCnetFuncBindPh
|
||||
|
||||
/* Global function pointer variables */
|
||||
|
||||
/* Function pointers provided by hostLib */
|
||||
|
||||
IMPORT FUNCPTR _ipcom_gethostbyname_r; /* Use IPDNSC for the name query */
|
||||
IMPORT FUNCPTR _ipcom_gethostbyaddr_r; /* Use IPDNSC for the pointer query */
|
||||
IMPORT FUNCPTR _ipdhcpc_callback_hook; /* Use IPDNSC for the pointer query */
|
||||
|
||||
IMPORT FUNCPTR _func_remCurIdGet;
|
||||
IMPORT FUNCPTR _func_remCurIdSet;
|
||||
|
||||
/* protoypes */
|
||||
|
||||
#endif /* __INCnetFUNCBindPh */
|
||||
@@ -0,0 +1,53 @@
|
||||
/* netShow.h - header file for netShow.c */
|
||||
|
||||
/* Copyright 1984-2004 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01p,09jan12,h_x Move extern "C" after last header file include.
|
||||
01o,08dec08,ggz Added ifShow() wrapper
|
||||
01n,08sep06,kch Cleanup for IPNet integration
|
||||
01m,20sep04,spm changed init routine prototypes to prevent build warnings;
|
||||
removed obsolete __STDC__ support for old compilers
|
||||
01l,19sep04,spm updated virtual stack startup and shutdown for TCP and UDP
|
||||
show routines: restored use of published initialization
|
||||
routines and removed unused destructors
|
||||
01k,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01j,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
||||
/main/vdt/base6_itn5_networking-int/1)
|
||||
01i,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01h,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01g,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01f,08sep03,vvv merged from ACCORDION_BASE6_MERGE_BASELINE
|
||||
01e,10jun03,vvv include netVersion.h
|
||||
01d,08apr03,ann moved netBufShow prototypes to netBufLib.h and
|
||||
moved some definitions from netShow.c to here. SPR# 86899
|
||||
01c,18jan02,ppp adding INET6 protection to a routine
|
||||
01b,09jan02,ppp adding support for ipv6
|
||||
01a,08dec01,ppp porting from A.E. 1.1
|
||||
*/
|
||||
|
||||
#ifndef __INCnetShowh
|
||||
#define __INCnetShowh
|
||||
|
||||
#include <netVersion.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* externs */
|
||||
|
||||
/* function declarations */
|
||||
|
||||
extern void arpShow (void);
|
||||
extern void hostShow (void);
|
||||
extern void hostShowInit (void);
|
||||
extern void ifShow (char *ifName);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCnetShowh */
|
||||
@@ -0,0 +1,42 @@
|
||||
/* netVersion.h - Network stack version information */
|
||||
|
||||
/* Copyright 2003 - 2006 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01h,15aug06,spw updated to version 3.1.2
|
||||
01g,28mar06,dlk updated to version 3.1
|
||||
01f,13jul05,vvv updated version to 3.0
|
||||
01e,24jun05,vvv updated version to 2.2
|
||||
01d,07apr05,vvv updated version
|
||||
01c,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01b,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
||||
/main/IPV6_alameda/base6_itn5_networking-int/1)
|
||||
01a,11jun03,vvv written
|
||||
*/
|
||||
|
||||
#ifndef __INCnetVersionh
|
||||
#define __INCnetVersionh
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* defines */
|
||||
|
||||
#define STACK_NAME_V4 1 /* Classic IPv4 only stack */
|
||||
#define STACK_NAME_V4_V6 2 /* Dual IPv4, IPv6 stack */
|
||||
|
||||
#define STACK_NAME STACK_NAME_V4_V6
|
||||
|
||||
#define STACK_VERSION_MAJOR 3
|
||||
#define STACK_VERSION_MINOR 1
|
||||
#define STACK_VERSION_PATCH 2
|
||||
#define STACK_VERSION_PATCH_MINOR 0
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCnetVersionh */
|
||||
@@ -0,0 +1,244 @@
|
||||
/* netdb.h - server entries and the like for routed/rip */
|
||||
|
||||
/* Copyright 1996-2007 Wind River Systems, Inc. */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1980, 1983, 1988, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)netdb.h 8.1 (Berkeley) 6/2/93
|
||||
* From: Id: netdb.h,v 8.9 1996/11/19 08:39:29 vixie Exp $
|
||||
* $FreeBSD: src/include/netdb.h,v 1.14.2.5 2001/08/29 08:46:51 alfred Exp $
|
||||
* -
|
||||
* Portions Copyright (c) 1993 by Digital Equipment Corporation.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies, and that
|
||||
* the name of Digital Equipment Corporation not be used in advertising or
|
||||
* publicity pertaining to distribution of the document or software without
|
||||
* specific, written prior permission.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
|
||||
* CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
||||
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
||||
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
|
||||
* ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
||||
* SOFTWARE.
|
||||
* -
|
||||
* --Copyright--
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01s,09jan12,h_x Move extern "C" after last header file include.
|
||||
01r,12feb07,dlk Added prototypes for rtpGetaddrinfoInit() and
|
||||
rtpGetnameinfoInit().
|
||||
01q,05oct06,kch Removed h_ttl member from struct hostent for IPNet
|
||||
compatibility.
|
||||
01p,06jul05,vvv fixed build errors
|
||||
01o,29jun05,vvv added getaddrinfo(), getnameinfo(), freeaddrinfo() and
|
||||
gai_strerror() for RFC3493
|
||||
01n,28jun05,vvv restored v4mapped
|
||||
01m,13may05,vvv merged from kame-20050404-freebsd411
|
||||
01l,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01k,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01j,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01i,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01h,06aug03,nee Accordion Base6 merge from ACCORDION_BASE6_MERGE_BASELINE
|
||||
label
|
||||
01g,10jun03,vvv include netVersion.h
|
||||
01f,12dec01,hgo add support of flag AI_V4MAPPED for getaddrinfo()
|
||||
01e,20sep01,hgo extensions for IPv6 support
|
||||
01d,19aug97,jag Added the field h_ttl to the structure hostent.
|
||||
01c,29apr97,jag fixed include define and added C++ linkage. Changed field
|
||||
names of struc netnet to avoid conflict with i960 macros.
|
||||
01b,24feb97,jag changed comment.
|
||||
01a,26nov96,gnn created from BSD4.4 routed
|
||||
*/
|
||||
|
||||
#ifndef __INCnetdbh
|
||||
#define __INCnetdbh
|
||||
|
||||
#include <netVersion.h>
|
||||
#include <sys/socket.h> /* for socklen_t */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Structures returned by network data base library. All addresses are
|
||||
* supplied in host order, and returned in network order (suitable for
|
||||
* use in system calls).
|
||||
*/
|
||||
struct hostent {
|
||||
char *h_name; /* official name of host */
|
||||
char **h_aliases; /* alias list */
|
||||
int h_addrtype; /* host address type */
|
||||
int h_length; /* length of address */
|
||||
char **h_addr_list; /* list of addresses from name server */
|
||||
#define h_addr h_addr_list[0] /* address, for backward compatiblity */
|
||||
};
|
||||
|
||||
/*
|
||||
* Assumption here is that a network number
|
||||
* fits in an unsigned long -- probably a poor one.
|
||||
*/
|
||||
struct netent {
|
||||
char * nName; /* official name of net */
|
||||
char ** nAliases; /* alias list */
|
||||
int nAddrtype; /* net address type */
|
||||
unsigned long nNet; /* network # */
|
||||
};
|
||||
|
||||
struct servent {
|
||||
char *s_name; /* official service name */
|
||||
char **s_aliases; /* alias list */
|
||||
int s_port; /* port # */
|
||||
char *s_proto; /* protocol to use */
|
||||
};
|
||||
|
||||
struct protoent {
|
||||
char *p_name; /* official protocol name */
|
||||
char **p_aliases; /* alias list */
|
||||
int p_proto; /* protocol # */
|
||||
};
|
||||
|
||||
struct addrinfo
|
||||
{
|
||||
int ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */
|
||||
int ai_family; /* PF_xxx */
|
||||
int ai_socktype; /* SOCK_xxx */
|
||||
int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
|
||||
size_t ai_addrlen; /* length of ai_addr */
|
||||
char *ai_canonname; /* canonical name for hostname */
|
||||
struct sockaddr *ai_addr; /* binary address */
|
||||
struct addrinfo *ai_next; /* next structure in linked list */
|
||||
};
|
||||
|
||||
/*
|
||||
* Error return codes from getaddrinfo()
|
||||
*/
|
||||
/* #define EAI_ADDRFAMILY 1 (obsoleted) */
|
||||
#define EAI_AGAIN 2 /* temporary failure in name resolution */
|
||||
#define EAI_BADFLAGS 3 /* invalid value for ai_flags */
|
||||
#define EAI_FAIL 4 /* non-recoverable failure in name resolution */
|
||||
#define EAI_FAMILY 5 /* ai_family not supported */
|
||||
#define EAI_MEMORY 6 /* memory allocation failure */
|
||||
/* #define EAI_NODATA 7 (obsoleted) */
|
||||
#define EAI_NONAME 8 /* hostname nor servname provided, or not known */
|
||||
#define EAI_SERVICE 9 /* servname not supported for ai_socktype */
|
||||
#define EAI_SOCKTYPE 10 /* ai_socktype not supported */
|
||||
#define EAI_SYSTEM 11 /* system error returned in errno */
|
||||
#define EAI_BADHINTS 12 /* Invalid value for hints */
|
||||
#define EAI_PROTOCOL 13 /* Resolved protocol is unknown */
|
||||
#define EAI_OVERFLOW 14 /* Argument buffer overflow */
|
||||
#define EAI_MAX 15
|
||||
|
||||
/*
|
||||
* Flag values for getaddrinfo()
|
||||
*/
|
||||
#define AI_PASSIVE 0x00000001 /* get address to use bind() */
|
||||
#define AI_CANONNAME 0x00000002 /* fill ai_canonname */
|
||||
#define AI_NUMERICHOST 0x00000004 /* prevent name resolution */
|
||||
#define AI_ALL 0x00000100 /* IPv6 and IPv4-mapped (with AI_V4MAPPED) */
|
||||
#define AI_V4MAPPED_CFG 0x00000200 /* accept IPv4-mapped if kernel supports */
|
||||
#define AI_V4MAPPED 0x00000800 /* accept IPv4-mapped IPv6 address */
|
||||
|
||||
/* valid flags for getaddrinfo (not a standard def, apps should not use it) */
|
||||
|
||||
#define AI_MASK \
|
||||
(AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST | AI_NUMERICSERV | \
|
||||
AI_ADDRCONFIG | AI_ALL | AI_V4MAPPED_CFG | AI_V4MAPPED)
|
||||
|
||||
#define AI_ADDRCONFIG 0x00000400 /* only if any address is assigned */
|
||||
#define AI_NUMERICSERV 0x00001000 /* prevent service resolution */
|
||||
|
||||
/* special recommended flags for getipnodebyname */
|
||||
#define AI_DEFAULT AI_V4MAPPED_CFG | AI_ADDRCONFIG
|
||||
|
||||
/*
|
||||
* Constants for getnameinfo()
|
||||
*/
|
||||
#define NI_MAXHOST 1025
|
||||
#define NI_MAXSERV 32
|
||||
|
||||
/*
|
||||
* Flag values for getnameinfo()
|
||||
*/
|
||||
#define NI_NOFQDN 0x00000001
|
||||
#define NI_NUMERICHOST 0x00000002
|
||||
#define NI_NAMEREQD 0x00000004
|
||||
#define NI_NUMERICSERV 0x00000008
|
||||
#define NI_DGRAM 0x00000010
|
||||
#if 0 /* obsolete */
|
||||
#define NI_WITHSCOPEID 0x00000020
|
||||
#endif
|
||||
#define NI_NUMERICSCOPE 0x00000040
|
||||
|
||||
/*
|
||||
* Scope delimit character
|
||||
*/
|
||||
#define SCOPE_DELIMITER '%'
|
||||
|
||||
/*
|
||||
* Error return codes from res_query.c
|
||||
*/
|
||||
|
||||
#define HOST_NOT_FOUND 1 /* Authoritative Answer Host not found */
|
||||
#define TRY_AGAIN 2 /* Non-Authoritive Host not found, or SERVERFAIL */
|
||||
#define NO_RECOVERY 3 /* Non recoverable errors, FORMERR, REFUSED, NOTIMP */
|
||||
#define NO_DATA 4 /* Valid name, no data record of requested type */
|
||||
#define NO_ADDRESS NO_DATA /* no address, look for MX record */
|
||||
|
||||
#ifndef __INCwrapperHostLibh
|
||||
extern int getnameinfo (const struct sockaddr *sa, socklen_t salen, char *host,
|
||||
size_t hostlen, char *serv, size_t servlen, int flags);
|
||||
extern int getaddrinfo (const char *hostname, const char *servname,
|
||||
const struct addrinfo *hints, struct addrinfo **result);
|
||||
extern void freeaddrinfo (struct addrinfo * ai);
|
||||
extern char * gai_strerror (int ecode);
|
||||
#endif
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
extern STATUS rtpGetaddrinfoInit (void);
|
||||
extern STATUS rtpGetnameinfoInit (void);
|
||||
#endif /* _WRS_KERNEL */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCnetdbh */
|
||||
@@ -0,0 +1,152 @@
|
||||
/* netffs.h - structures for netffs.c */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01e,20jun06,jpb Updated for POSIX namespace conformance.
|
||||
Changed C preprocessor macro CPU_FAMILY to _VX_CPU_FAMILY.
|
||||
01d,02mar06,dlk Remove extra tokens "(x)" at end of "#ifndef FFS".
|
||||
01c,03feb06,dlk Remove ffsMsb() declaration, but do not add include
|
||||
for ffsLib.h yet.
|
||||
01b,10jan06 hya removed ARM CPU variant code.
|
||||
01a,09aug05 niq created.
|
||||
*/
|
||||
|
||||
#ifndef __INCnetffsh
|
||||
#define __INCnetffsh
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* We want the fastest possible 'ffsMsb() - 1' for each architecture,
|
||||
* ideally inlined assembly.
|
||||
* Eventually, this stuff should be moved to architecture-specific
|
||||
* headers.
|
||||
*/
|
||||
|
||||
#if !defined (__GNUC__) && !defined (_DIAB_TOOL)
|
||||
#define USE_FFSMSB_PORTABLE
|
||||
#endif
|
||||
|
||||
#if defined (USE_FFSMSB_PORTABLE)
|
||||
|
||||
#define FFS(x) (ffsMsb(x) - 1)
|
||||
|
||||
#else /* !defined (USE_FFSMSB_PORTABLE) */
|
||||
|
||||
#if (_VX_CPU_FAMILY == _VX_I80X86)
|
||||
|
||||
#define FFS(x) _firstBit(x)
|
||||
|
||||
#if defined (__GNUC__)
|
||||
|
||||
/*
|
||||
* Return the index of the most significant bit on in x.
|
||||
* We don't have to handle the x=0 case, this is only called
|
||||
* when x != 0. Returns a value y in the range 31 >= y >= 0.
|
||||
* 31 indicates the most significant bit.
|
||||
*/
|
||||
|
||||
static __inline__ UINT32 _firstBit
|
||||
(
|
||||
UINT32 x
|
||||
)
|
||||
{
|
||||
UINT32 y;
|
||||
|
||||
__asm__ ("bsrl %1, %0"
|
||||
: "=r" (y)
|
||||
: "r" (x)
|
||||
: "cc");
|
||||
|
||||
return y;
|
||||
}
|
||||
|
||||
#else /* _DIAB_TOOL */
|
||||
|
||||
/* SPR #110427 is now fixed, restore inline assembly for I80X806/diab */
|
||||
#pragma pure_function _firstBit
|
||||
|
||||
__asm UINT32 _firstBit
|
||||
(
|
||||
UINT32 x
|
||||
)
|
||||
{
|
||||
% mem x
|
||||
! "ax"
|
||||
bsrl x, %eax
|
||||
}
|
||||
|
||||
#endif /* _DIAB_TOOL */
|
||||
|
||||
#elif (_VX_CPU_FAMILY == _VX_PPC)
|
||||
|
||||
#define FFS(x) (31 - _countLeadingZeroes(x))
|
||||
|
||||
#if defined (__GNUC__)
|
||||
|
||||
/*
|
||||
* Return the number of zero bits in bit positions more significant
|
||||
* than the first set bit.
|
||||
* We don't have to handle the x=0 case, this is only called
|
||||
* when x != 0. Returns a value y in the range 31 >= y >= 0.
|
||||
* 0 indicates the most significant bit.
|
||||
*/
|
||||
|
||||
static __inline__ UINT32 _countLeadingZeroes
|
||||
(
|
||||
UINT32 x
|
||||
)
|
||||
{
|
||||
UINT32 y;
|
||||
|
||||
__asm__ ("cntlzw %0, %1"
|
||||
: "=r" (y)
|
||||
: "r" (x)
|
||||
);
|
||||
|
||||
return y;
|
||||
}
|
||||
#else /* _DIAB_TOOL */
|
||||
|
||||
#pragma pure_function _countLeadingZeroes
|
||||
|
||||
__asm UINT32 _countLeadingZeroes
|
||||
(
|
||||
UINT32 x
|
||||
)
|
||||
{
|
||||
% reg x
|
||||
! "r3"
|
||||
cntlzw r3, x
|
||||
}
|
||||
|
||||
#endif /* _DIAB_TOOL */
|
||||
|
||||
#else /* unknown or unsupported _VX_CPU_FAMILY */
|
||||
|
||||
#ifndef FFS
|
||||
#define FFS(x) (ffsMsb(x) - 1)
|
||||
#endif
|
||||
#endif /* _VX_CPU / _VX_CPU_FAMILY */
|
||||
|
||||
#endif /* !defined (USE_FFSMSB_PORTABLE) */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCnetffsh */
|
||||
@@ -0,0 +1,185 @@
|
||||
/* if_ether.h - network interface Ethernet header file */
|
||||
|
||||
/* Copyright 2001 - 2005 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)if_ether.h 8.3 (Berkeley) 5/2/95
|
||||
* $FreeBSD: src/sys/netinet/if_ether.h,v 1.24.2.1 2002/02/13 21:38:56 fjoe Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
02a,25oct06,kch Removed unsupported sockaddr_inarp and llinfo_arp structures.
|
||||
01z,09sep06,kch Cleanup for IPNet integration.
|
||||
01y,23feb05,vvv restored ether_tag_header definition for
|
||||
backward-compatibility (SPR #102773)
|
||||
01x,18feb05,wap Allow sysctl init routines to be scaled out
|
||||
01w,08feb05,vvv _KERNEL cleanup
|
||||
01v,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01u,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
||||
/main/vdt/base6_itn5_networking-int/2)
|
||||
01t,24feb04,nee Adding the prototype for ipEtherResolvRtn
|
||||
01s,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01r,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01q,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01p,23oct03,rlm updated #includes for header re-org
|
||||
01o,15sep03,vvv updated path for new headers
|
||||
01n,13aug03,niq Fix definition of la_rt (Part of Accordion Base6 merge)
|
||||
01m,15may03,spm Tornado 2.2 FCS merge (SPR #63006; ver 01h,24may02,vvv:
|
||||
TOR2_2-FCS-COPY label, tor2 branch, /wind/river VOB)
|
||||
01l,09may03,vvv changed include order to fix build
|
||||
01k,01may03,spm Tornado 2.2 CP1 merge (from ver 01i,13jan03,rae:
|
||||
TOR2_2-CP1-F label, tor2_2-patch branch, /wind/river VOB)
|
||||
01j,01feb03,pas merge from FreeBSD 4.7 - changed arp_rtrequest(),
|
||||
arp_ifinit() calls
|
||||
01i,09sep02,hsh add c++ protection
|
||||
01h,13feb02,ham changed for tornado build
|
||||
01g,09dec01,ppp adding llinfo_arp structure
|
||||
01f,03oct01,ann commenting the prototype for arpintr
|
||||
01e,17sep01,ppp Commenting out the static declaration of in_arpinput
|
||||
01d,10sep01,ann adding some macros that could be helpful
|
||||
01c,24aug01,ann moving the forward declaration of arpintr here from
|
||||
if_ether.c
|
||||
01b,14aug01,ppp Commenting out two definations.
|
||||
01a,01aug01,ppp Created from FreeBSD 4.3
|
||||
*/
|
||||
|
||||
#ifndef _NETINET_IF_ETHER_H_
|
||||
#define _NETINET_IF_ETHER_H_
|
||||
|
||||
|
||||
#include <cfgDefs.h>
|
||||
#include <netinet/in.h>
|
||||
#include <net/ethernet.h>
|
||||
#include <net/if_arp.h>
|
||||
#include <cfgDefs.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Ether header for tagged frames */
|
||||
|
||||
struct ether_tag_header
|
||||
{
|
||||
u_char ether_dhost [6];
|
||||
u_char ether_shost [6];
|
||||
u_char etherTag [4];
|
||||
u_short ether_type;
|
||||
};
|
||||
|
||||
/*
|
||||
* Clarinet
|
||||
* The following macros are required as they are used in all the
|
||||
* driver header files which include if_ether.h
|
||||
*/
|
||||
|
||||
/*
|
||||
* for compilers that have 4-bytes structure alignment rule,
|
||||
* it is understood that sizeof (ether_header) is 0x10
|
||||
*/
|
||||
#define SIZEOF_ETHERHEADER 0xe
|
||||
|
||||
/* For tagged Ethernet headers */
|
||||
#define SIZEOF_TAG_ETHERHEADER 0x12
|
||||
|
||||
/* minimal size of an ethernet frame including the headers supported
|
||||
* by most ethernet chips.
|
||||
*/
|
||||
#define ETHERSMALL 60
|
||||
|
||||
/* End of Clarinet introduced macros */
|
||||
|
||||
/*
|
||||
* Macro to map an IP multicast address to an Ethernet multicast address.
|
||||
* The high-order 25 bits of the Ethernet address are statically assigned,
|
||||
* and the low-order 23 bits are taken from the low end of the IP address.
|
||||
*/
|
||||
#define ETHER_MAP_IP_MULTICAST(ipaddr, enaddr) \
|
||||
/* struct in_addr *ipaddr; */ \
|
||||
/* u_char enaddr[ETHER_ADDR_LEN]; */ \
|
||||
{ \
|
||||
(enaddr)[0] = 0x01; \
|
||||
(enaddr)[1] = 0x00; \
|
||||
(enaddr)[2] = 0x5e; \
|
||||
(enaddr)[3] = ((u_char *)ipaddr)[1] & 0x7f; \
|
||||
(enaddr)[4] = ((u_char *)ipaddr)[2]; \
|
||||
(enaddr)[5] = ((u_char *)ipaddr)[3]; \
|
||||
}
|
||||
/*
|
||||
* Macro to map an IP6 multicast address to an Ethernet multicast address.
|
||||
* The high-order 16 bits of the Ethernet address are statically assigned,
|
||||
* and the low-order 32 bits are taken from the low end of the IP6 address.
|
||||
*/
|
||||
#define ETHER_MAP_IPV6_MULTICAST(ip6addr, enaddr) \
|
||||
/* struct in6_addr *ip6addr; */ \
|
||||
/* u_char enaddr[ETHER_ADDR_LEN]; */ \
|
||||
{ \
|
||||
(enaddr)[0] = 0x33; \
|
||||
(enaddr)[1] = 0x33; \
|
||||
(enaddr)[2] = ((u_char *)ip6addr)[12]; \
|
||||
(enaddr)[3] = ((u_char *)ip6addr)[13]; \
|
||||
(enaddr)[4] = ((u_char *)ip6addr)[14]; \
|
||||
(enaddr)[5] = ((u_char *)ip6addr)[15]; \
|
||||
}
|
||||
|
||||
#define ETHER_MULTICAST(enaddr) \
|
||||
((enaddr)[0] == 0x1) && ((enaddr)[1] == 0x0) && ((enaddr)[2] == 0x5e)
|
||||
|
||||
/*
|
||||
* Ethernet Address Resolution Protocol.
|
||||
*
|
||||
* See RFC 826 for protocol description. Structure below is adapted
|
||||
* to resolving internet addresses. Field names used correspond to
|
||||
* RFC 826.
|
||||
*/
|
||||
struct ether_arp {
|
||||
struct arphdr ea_hdr; /* fixed-size header */
|
||||
u_char arp_sha[ETHER_ADDR_LEN]; /* sender hardware address */
|
||||
u_char arp_spa[4]; /* sender protocol address */
|
||||
u_char arp_tha[ETHER_ADDR_LEN]; /* target hardware address */
|
||||
u_char arp_tpa[4]; /* target protocol address */
|
||||
};
|
||||
#define arp_hrd ea_hdr.ar_hrd
|
||||
#define arp_pro ea_hdr.ar_pro
|
||||
#define arp_hln ea_hdr.ar_hln
|
||||
#define arp_pln ea_hdr.ar_pln
|
||||
#define arp_op ea_hdr.ar_op
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _NETINET_IF_ETHER_H_ */
|
||||
@@ -0,0 +1,201 @@
|
||||
/* igmp.h - igmp header file */
|
||||
|
||||
/* Copyright 2001-2005 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988 Stephen Deering.
|
||||
* Copyright (c) 1992, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Stephen Deering of Stanford University.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)igmp.h 8.1 (Berkeley) 6/10/93
|
||||
* $FreeBSD: src/sys/netinet/igmp.h,v 1.10 1999/08/28 00:49:15 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01i,09jan12,h_x Move extern "C" after last header file include.
|
||||
01h,29jun05,spm updated for IGMPv3 support
|
||||
01g,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01f,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01e,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01d,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01c,10jun03,vvv include netVersion.h
|
||||
01b,10sep02,hsh add c++ protection
|
||||
01a,27aug01,hsh Created from BSD 4.3
|
||||
*/
|
||||
|
||||
#ifndef _NETINET_IGMP_H_
|
||||
#define _NETINET_IGMP_H_
|
||||
|
||||
#include <netVersion.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Internet Group Management Protocol (IGMP) definitions.
|
||||
*
|
||||
* Written by Steve Deering, Stanford, May 1988.
|
||||
*
|
||||
* MULTICAST Revision: 3.5.1.2
|
||||
*/
|
||||
|
||||
/*
|
||||
* IGMPv1/v2 packet and v3 Query packet format.
|
||||
*/
|
||||
struct igmp {
|
||||
u_char igmp_type; /* version & type of IGMP message */
|
||||
u_char igmp_code; /* subtype for routing msgs */
|
||||
|
||||
#define IGMP_EXP(x) (((x) >> 4) & 0x07)
|
||||
#define IGMP_MANT(x) ((x) & 0x0f)
|
||||
u_int16_t igmp_cksum; /* IP-style checksum */
|
||||
struct in_addr igmp_group; /* group address being specified */
|
||||
/* (zero for general query) */
|
||||
u_int8_t igmp_rtval; /* Reserved, S Flag and QRV */
|
||||
#define IGMP_QRESV(x) (((x) >> 4) & 0x0f)
|
||||
#define IGMP_SFLAG(x) (((x) >> 3) & 0x01)
|
||||
#define IGMP_QRV(x) ((x) & 0x07) /* querier's robustness variable */
|
||||
u_int8_t igmp_qqi; /* querier's query interval (QQI) */
|
||||
u_int16_t igmp_numsrc; /* number of sources (zero for general*/
|
||||
/* and group-specific queries) */
|
||||
struct in_addr src[1]; /* source address list */
|
||||
} __attribute__((__packed__));
|
||||
|
||||
/*
|
||||
* IGMPv3 Membership Report Message header.
|
||||
*/
|
||||
struct igmp_report_hdr {
|
||||
u_int8_t igmp_type; /* version & type of IGMP message */
|
||||
u_int8_t igmp_reserved1; /* reserved (set to zero) */
|
||||
u_int16_t igmp_cksum; /* IP-style checksum */
|
||||
u_int16_t igmp_reserved2; /* reserved (set to zero) */
|
||||
u_int16_t igmp_grpnum; /* number of group record */
|
||||
} __attribute__((__packed__));
|
||||
|
||||
/*
|
||||
* IGMPv3 Group Record header.
|
||||
*/
|
||||
struct igmp_group_record_hdr {
|
||||
u_int8_t record_type; /* record types for membership report */
|
||||
u_int8_t auxlen; /* aux data length (must be zero) */
|
||||
u_int16_t numsrc; /* number of sources */
|
||||
struct in_addr group; /* group address */
|
||||
struct in_addr src[1]; /* source address list */
|
||||
} __attribute__((__packed__));
|
||||
|
||||
#define IGMP_MINLEN 8
|
||||
|
||||
/*
|
||||
* Message types, including version number.
|
||||
*/
|
||||
#define IGMP_MEMBERSHIP_QUERY 0x11 /* membership query */
|
||||
#define IGMP_V1_MEMBERSHIP_REPORT 0x12 /* Ver. 1 membership report */
|
||||
#define IGMP_V2_MEMBERSHIP_REPORT 0x16 /* Ver. 2 membership report */
|
||||
#define IGMP_V2_LEAVE_GROUP 0x17 /* Leave-group message */
|
||||
|
||||
#define IGMP_DVMRP 0x13 /* DVMRP routing message */
|
||||
#define IGMP_PIM 0x14 /* PIM routing message */
|
||||
|
||||
#define IGMP_MTRACE_RESP 0x1e /* traceroute resp.(to sender)*/
|
||||
#define IGMP_MTRACE 0x1f /* mcast traceroute messages */
|
||||
|
||||
#define IGMP_MAX_HOST_REPORT_DELAY 10 /* max delay for response to */
|
||||
/* query (in seconds) according */
|
||||
/* to RFC1112 */
|
||||
|
||||
|
||||
#define IGMP_TIMER_SCALE 10 /* denotes that the igmp code field */
|
||||
/* specifies time in 10th of seconds*/
|
||||
|
||||
/*
|
||||
* The following four defininitions are for backwards compatibility.
|
||||
* They should be removed as soon as all applications are updated to
|
||||
* use the new constant names.
|
||||
*/
|
||||
#define IGMP_HOST_MEMBERSHIP_QUERY IGMP_MEMBERSHIP_QUERY
|
||||
#define IGMP_HOST_MEMBERSHIP_REPORT IGMP_V1_MEMBERSHIP_REPORT
|
||||
#define IGMP_HOST_NEW_MEMBERSHIP_REPORT IGMP_V2_MEMBERSHIP_REPORT
|
||||
#define IGMP_HOST_LEAVE_MESSAGE IGMP_V2_LEAVE_GROUP
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#define IGMP_v3_HOST_MEMBERSHIP_REPORT 0x22 /* v3 membership report */
|
||||
|
||||
#define IGMP_v3_GENERAL_QUERY 1
|
||||
#define IGMP_v3_GROUP_QUERY 2
|
||||
#define IGMP_v3_GROUP_SOURCE_QUERY 3
|
||||
#define IGMP_v3_QUERY_MINLEN 12
|
||||
|
||||
/*
|
||||
* States for the IGMP state table.
|
||||
*/
|
||||
#define IGMP_DELAYING_MEMBER 1
|
||||
#define IGMP_IDLE_MEMBER 2
|
||||
#define IGMP_LAZY_MEMBER 3
|
||||
#define IGMP_SLEEPING_MEMBER 4
|
||||
#define IGMP_AWAKENING_MEMBER 5
|
||||
#define IGMP_QUERY_PENDING_MEMBER 6 /* pending General Query */
|
||||
#define IGMP_G_QUERY_PENDING_MEMBER 7 /* pending Grp-specific Query */
|
||||
#define IGMP_SG_QUERY_PENDING_MEMBER 8 /* pending Grp-Src-specific Q.*/
|
||||
|
||||
/*
|
||||
* Group Record Types in the IGMP Membership Report
|
||||
*/
|
||||
#define MODE_IS_INCLUDE 1
|
||||
#define MODE_IS_EXCLUDE 2
|
||||
#define CHANGE_TO_INCLUDE_MODE 3
|
||||
#define CHANGE_TO_EXCLUDE_MODE 4
|
||||
#define ALLOW_NEW_SOURCES 5
|
||||
#define BLOCK_OLD_SOURCES 6
|
||||
|
||||
/*
|
||||
* States for IGMP router version cache.
|
||||
*/
|
||||
#define IGMP_v1_ROUTER 1
|
||||
#define IGMP_v2_ROUTER 2
|
||||
#define IGMP_v3_ROUTER 3
|
||||
|
||||
/*
|
||||
* IGMP Query version
|
||||
*/
|
||||
#define IGMP_v1_QUERY IGMP_v1_ROUTER
|
||||
#define IGMP_v2_QUERY IGMP_v2_ROUTER
|
||||
#define IGMP_v3_QUERY IGMP_v3_ROUTER
|
||||
|
||||
#endif /* _NETINET_IGMP_H_ */
|
||||
@@ -0,0 +1,551 @@
|
||||
/* in.h - internet header file */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1984-2007 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2002 INRIA. All rights reserved.
|
||||
*
|
||||
* Implementation of Internet Group Management Protocol, Version 3.
|
||||
* Developed by Hitoshi Asaeda, INRIA, February 2002.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of INRIA nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SER Added IP_MULTICAST_IF structure definition.VICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)in.h 8.3 (Berkeley) 1/3/94
|
||||
* $FreeBSD: src/sys/netinet/in.h,v 1.48.2.12 2004/06/16 06:57:49 ru Exp $
|
||||
* $FreeBSD: src/sys/netinet/in.h,v 1.48.2.11 2003/09/09 19:09:22 bms Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
02l,09jan12,h_x Move extern "C" after last header file include.
|
||||
02k,22jun10,h_x Fix WIND00219346
|
||||
02j,07may09,kjn Added definition of struct in_pktinfo.
|
||||
02i,12jul07,kch Restore multicast sockopts number and the required group_req
|
||||
and group_source_req argument structures (WIND00102340).
|
||||
02h,20nov06,kch Removed unsupported group_filter structure and related
|
||||
defines. Added ip_mreqn structure definition.
|
||||
02g,25oct06,kch Removed Kame specific ip_msfilter and ip_mreq_source
|
||||
structures. Added new socket options for IP_RECVTTL,
|
||||
IP_RECVTOS, IP_UDP_XCHKSUM, IP_NAT, IP_FW, IP_NEXTHOP,
|
||||
IP_X_SENDERLINKADDR and IP_X_VRID.
|
||||
02f,12sep06,kch Removed obsolete prototypes and unsupported proto defines
|
||||
for IPNet integration.
|
||||
02e,03feb06,spw Correct IN_ADDR_IS_LINKLOCAL macro
|
||||
02d,25aug05,dlk Add section tags.
|
||||
02c,18may05,kch Merged from FreeBSD v 1.48.2.12.
|
||||
02b,19apr05,rp merged from comp_wn_ipv6_mld_interim-dev
|
||||
02a,18apr05,vvv included in6.h for user-space
|
||||
01z,03mar05,vvv removed reference to _KERNEL
|
||||
01y,25feb05,niq merge from niqbal.tor3.mroute for IP router alert changes
|
||||
01x,17feb05,dlk NTOHL() etc. only usable as statements, not expressions.
|
||||
01w,07feb05,vvv _KERNEL cleanup
|
||||
01v,24jan05,vvv osdep.h cleanup
|
||||
01u,20jan05,sar Removal of divert, dummynet and fw code.
|
||||
01t,14oct04,nee include osdep.h and machdep.h when _KERNEL is defined
|
||||
(SPR #102593)
|
||||
01s,31may04,nee Adding macro IN_ADDR_IS_LINKLOCAL
|
||||
01r,25nov03,ppp added a comment before the inclusion of in6.h
|
||||
01q,21nov03,ppp rtp work
|
||||
01p,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01o,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01n,23oct03,rlm updated #includes for header re-org
|
||||
01m,07aug03,niq Merging from Accordion label ACCORDION_BASE6_MERGE_BASELINE
|
||||
01l,13jun03,syy Added declaration for inet_ntoa_b() (SPR#88384)
|
||||
01k,15may03,vvv included mbuf.h
|
||||
01j,09may03,vvv included vxWorks.h
|
||||
01i,01feb03,pas merge from FreeBSD 4.7 - moved satosin() etc here
|
||||
01h,09sep02,hsh add c++ protection
|
||||
01g,15jul02,ann moved the early declaration of some structures to avoid
|
||||
compilation warnings
|
||||
01f,08feb02,nee making in_socktrim non static
|
||||
01e,02oct01,ppp Removing the INET6 guard fot in6.h
|
||||
01d,18sep01,qli fixed a header inclusion error
|
||||
01c,18sep01,ppp guarding the inclusion of in6.h by INET6 for the link
|
||||
temporarily
|
||||
01b,23aug01,ppp Adding the WindRiver copyright
|
||||
01a,08aug01,ppp Created from FreeBSD 4.3
|
||||
*/
|
||||
|
||||
#ifndef _NETINET_IN_H_
|
||||
#define _NETINET_IN_H_
|
||||
|
||||
#include <vxWorks.h>
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
#include <net/mbuf.h>
|
||||
#endif
|
||||
|
||||
#include <sys/socket.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Constants and structures defined by the internet system,
|
||||
* Per RFC 790, September 1981, and numerous additions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Protocols (RFC 1700)
|
||||
*/
|
||||
#define IPPROTO_IP 0 /* dummy for IP */
|
||||
#define IPPROTO_HOPOPTS 0 /* IP6 hop-by-hop options */
|
||||
#define IPPROTO_ICMP 1 /* control message protocol */
|
||||
#define IPPROTO_IGMP 2 /* group mgmt protocol */
|
||||
#define IPPROTO_IPV4 4 /* IPv4 encapsulation */
|
||||
#define IPPROTO_IPIP IPPROTO_IPV4 /* for compatibility */
|
||||
#define IPPROTO_TCP 6 /* tcp */
|
||||
#define IPPROTO_UDP 17 /* user datagram protocol */
|
||||
#define IPPROTO_IPV6 41 /* IP6 header */
|
||||
#define IPPROTO_RSVP 46 /* resource reservation */
|
||||
#define IPPROTO_GRE 47 /* General Routing Encap. */
|
||||
#define IPPROTO_ESP 50 /* IP6 Encap Sec. Payload */
|
||||
#define IPPROTO_AH 51 /* IP6 Auth Header */
|
||||
#define IPPROTO_MOBILE 55 /* IP Mobility */
|
||||
#define IPPROTO_ICMPV6 58 /* ICMP6 */
|
||||
#define IPPROTO_OSPFIGP 89 /* OSPFIGP */
|
||||
#define IPPROTO_PIM 103 /* Protocol Independent Mcast */
|
||||
#define IPPROTO_L2TP 115 /* L2TP */
|
||||
#define IPPROTO_MH 135 /* IPv6 Mobility Header */
|
||||
#define IPPROTO_UDPLITE 136 /* UDP-Lite (RFC3828) */
|
||||
/* 255: Reserved */
|
||||
/* BSD Private, local use, namespace incursion */
|
||||
#define IPPROTO_RAW 255 /* raw IP packet */
|
||||
#define IPPROTO_MAX 256
|
||||
|
||||
/* last return value of *_input(), meaning "all job for this pkt is done". */
|
||||
#define IPPROTO_DONE 257
|
||||
|
||||
/*
|
||||
* Local port number conventions:
|
||||
*
|
||||
* When a user does a bind(2) or connect(2) with a port number of zero,
|
||||
* a non-conflicting local port address is chosen.
|
||||
* The default range is IPPORT_RESERVED through
|
||||
* IPPORT_USERRESERVED, although that is settable by sysctl.
|
||||
*
|
||||
* A user may set the IPPROTO_IP option IP_PORTRANGE to change this
|
||||
* default assignment range.
|
||||
*
|
||||
* The value IP_PORTRANGE_DEFAULT causes the default behavior.
|
||||
*
|
||||
* The value IP_PORTRANGE_HIGH changes the range of candidate port numbers
|
||||
* into the "high" range. These are reserved for client outbound connections
|
||||
* which do not want to be filtered by any firewalls.
|
||||
*
|
||||
* The value IP_PORTRANGE_LOW changes the range to the "low" are
|
||||
* that is (by convention) restricted to privileged processes. This
|
||||
* convention is based on "vouchsafe" principles only. It is only secure
|
||||
* if you trust the remote host to restrict these ports.
|
||||
*
|
||||
* The default range of ports and the high range can be changed by
|
||||
* sysctl(3). (net.inet.ip.port{hi,low}{first,last}_auto)
|
||||
*
|
||||
* Changing those values has bad security implications if you are
|
||||
* using a a stateless firewall that is allowing packets outside of that
|
||||
* range in order to allow transparent outgoing connections.
|
||||
*
|
||||
* Such a firewall configuration will generally depend on the use of these
|
||||
* default values. If you change them, you may find your Security
|
||||
* Administrator looking for you with a heavy object.
|
||||
*
|
||||
* For a slightly more orthodox text view on this:
|
||||
*
|
||||
* ftp://ftp.isi.edu/in-notes/iana/assignments/port-numbers
|
||||
*
|
||||
* port numbers are divided into three ranges:
|
||||
*
|
||||
* 0 - 1023 Well Known Ports
|
||||
* 1024 - 49151 Registered Ports
|
||||
* 49152 - 65535 Dynamic and/or Private Ports
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* Ports < IPPORT_RESERVED are reserved for
|
||||
* privileged processes (e.g. root). (IP_PORTRANGE_LOW)
|
||||
* Ports > IPPORT_USERRESERVED are reserved
|
||||
* for servers, not necessarily privileged. (IP_PORTRANGE_DEFAULT)
|
||||
*/
|
||||
#define IPPORT_RESERVED 1024
|
||||
#define IPPORT_USERRESERVED 5000
|
||||
|
||||
/*
|
||||
* Default local port range to use by setting IP_PORTRANGE_HIGH
|
||||
*/
|
||||
#define IPPORT_HIFIRSTAUTO 49152
|
||||
#define IPPORT_HILASTAUTO 65535
|
||||
|
||||
/*
|
||||
* Scanning for a free reserved port return a value below IPPORT_RESERVED,
|
||||
* but higher than IPPORT_RESERVEDSTART. Traditionally the start value was
|
||||
* 512, but that conflicts with some well-known-services that firewalls may
|
||||
* have a fit if we use.
|
||||
*/
|
||||
#define IPPORT_RESERVEDSTART 600
|
||||
|
||||
/*
|
||||
* Internet address (a structure for historical reasons)
|
||||
*/
|
||||
|
||||
typedef u_int32_t in_addr_t;
|
||||
|
||||
struct in_addr {
|
||||
in_addr_t s_addr;
|
||||
};
|
||||
|
||||
/*
|
||||
* Definitions of bits in internet address integers.
|
||||
* On subnets, the decomposition of addresses to host and net parts
|
||||
* is done according to subnet mask, not the masks here.
|
||||
*/
|
||||
#define IN_CLASSA(i) (((u_int32_t)(i) & 0x80000000) == 0)
|
||||
#define IN_CLASSA_NET 0xff000000
|
||||
#define IN_CLASSA_NSHIFT 24
|
||||
#define IN_CLASSA_HOST 0x00ffffff
|
||||
#define IN_CLASSA_MAX 128
|
||||
|
||||
#define IN_CLASSB(i) (((u_int32_t)(i) & 0xc0000000) == 0x80000000)
|
||||
#define IN_CLASSB_NET 0xffff0000
|
||||
#define IN_CLASSB_NSHIFT 16
|
||||
#define IN_CLASSB_HOST 0x0000ffff
|
||||
#define IN_CLASSB_MAX 65536
|
||||
|
||||
#define IN_CLASSC(i) (((u_int32_t)(i) & 0xe0000000) == 0xc0000000)
|
||||
#define IN_CLASSC_NET 0xffffff00
|
||||
#define IN_CLASSC_NSHIFT 8
|
||||
#define IN_CLASSC_HOST 0x000000ff
|
||||
|
||||
#define IN_CLASSD(i) (((u_int32_t)(i) & 0xf0000000) == 0xe0000000)
|
||||
#define IN_CLASSD_NET 0xf0000000 /* These ones aren't really */
|
||||
#define IN_CLASSD_NSHIFT 28 /* net and host fields, but */
|
||||
#define IN_CLASSD_HOST 0x0fffffff /* routing needn't know. */
|
||||
#define IN_MULTICAST(i) IN_CLASSD(i)
|
||||
|
||||
#define IN_EXPERIMENTAL(i) (((u_int32_t)(i) & 0xf0000000) == 0xf0000000)
|
||||
#define IN_BADCLASS(i) (((u_int32_t)(i) & 0xf0000000) == 0xf0000000)
|
||||
|
||||
#define IN_LOCAL_GROUP(i) (((u_int32_t)(i) & 0xffffff00) == 0xe0000000)
|
||||
|
||||
#define INADDR_ANY (u_int32_t)0x00000000
|
||||
#define INADDR_LOOPBACK (u_int32_t)0x7f000001
|
||||
#define INADDR_BROADCAST (u_int32_t)0xffffffff /* must be masked */
|
||||
#define INADDR_NONE 0xffffffff /* -1 return */
|
||||
|
||||
#define INADDR_UNSPEC_GROUP (u_int32_t)0xe0000000 /* 224.0.0.0 */
|
||||
#define INADDR_ALLHOSTS_GROUP (u_int32_t)0xe0000001 /* 224.0.0.1 */
|
||||
#define INADDR_ALLRTRS_GROUP (u_int32_t)0xe0000002 /* 224.0.0.2 */
|
||||
#define INADDR_NEW_ALLRTRS_GROUP (u_int32_t)0xe0000016 /* 224.0.0.22 */
|
||||
#define INADDR_MAX_LOCAL_GROUP (u_int32_t)0xe00000ff /* 224.0.0.255 */
|
||||
|
||||
#define IN_LOOPBACKNET 127 /* official! */
|
||||
|
||||
#define INADDR_LINKLOCAL 0xA9FE0000 /* 169.254 */
|
||||
#define IN_ADDR_IS_LINKLOCAL(i) (((u_int32_t)(i) & 0xFFFF0000) == INADDR_LINKLOCAL)
|
||||
|
||||
#if _BYTE_ORDER == _BIG_ENDIAN
|
||||
|
||||
#define ntohl(x) (x)
|
||||
#define ntohs(x) (x)
|
||||
#define htonl(x) (x)
|
||||
#define htons(x) (x)
|
||||
|
||||
#define NTOHL(x) do {} while (FALSE)
|
||||
#define NTOHS(x) do {} while (FALSE)
|
||||
#define HTONL(x) do {} while (FALSE)
|
||||
#define HTONS(x) do {} while (FALSE)
|
||||
|
||||
#else
|
||||
|
||||
#define ntohl(x) ((((x) & 0x000000ff) << 24) | \
|
||||
(((x) & 0x0000ff00) << 8) | \
|
||||
(((x) & 0x00ff0000) >> 8) | \
|
||||
(((x) & 0xff000000) >> 24))
|
||||
|
||||
#define htonl(x) ((((x) & 0x000000ff) << 24) | \
|
||||
(((x) & 0x0000ff00) << 8) | \
|
||||
(((x) & 0x00ff0000) >> 8) | \
|
||||
(((x) & 0xff000000) >> 24))
|
||||
|
||||
#define ntohs(x) ((((x) & 0x00ff) << 8) | \
|
||||
(((x) & 0xff00) >> 8))
|
||||
|
||||
#define htons(x) ((((x) & 0x00ff) << 8) | \
|
||||
(((x) & 0xff00) >> 8))
|
||||
|
||||
#define NTOHL(x) do {(x) = ntohl((u_int32_t)(x)); } while (FALSE)
|
||||
#define NTOHS(x) do {(x) = ntohs((u_short)(x)); } while (FALSE)
|
||||
#define HTONL(x) do {(x) = htonl((u_int32_t)(x)); } while (FALSE)
|
||||
#define HTONS(x) do {(x) = htons((u_short)(x)); } while (FALSE)
|
||||
|
||||
#endif /* _BYTE_ORDER */
|
||||
|
||||
|
||||
/*
|
||||
* Socket address, internet style.
|
||||
*/
|
||||
struct sockaddr_in {
|
||||
u_char sin_len;
|
||||
u_char sin_family;
|
||||
u_short sin_port;
|
||||
struct in_addr sin_addr;
|
||||
char sin_zero[8];
|
||||
};
|
||||
|
||||
#define INET_ADDRSTRLEN 16
|
||||
|
||||
/*
|
||||
* Options for use with [gs]etsockopt at the IP level.
|
||||
* First word of comment is data type; bool is stored in int.
|
||||
*/
|
||||
#define IP_OPTIONS 1 /* char[0..40]; set/get IP options */
|
||||
#define IP_HDRINCL 2 /* int; header is included with data */
|
||||
#define IP_TOS 3 /* int; IP type of service and preced. */
|
||||
#define IP_TTL 4 /* int; IP time to live */
|
||||
#define IP_RECVDSTADDR 7 /* int; receive IP dst addr w/dgram */
|
||||
#define IP_PKTINFO 8 /* int; turn packet information ancillary
|
||||
* data" on/off
|
||||
*/
|
||||
#define IP_MULTICAST_IF 9 /* struct in_addr or struct ip_mreq or
|
||||
* struct ip_mreqn. Which one is used
|
||||
* is determined by size of argument.
|
||||
* Controls which interface multicast
|
||||
* packets sent from this socket should
|
||||
* use
|
||||
*/
|
||||
#define IP_MULTICAST_TTL 10 /* u_char; set/get IP multicast ttl */
|
||||
#define IP_MULTICAST_LOOP 11 /* u_char; set/get IP multicast loopback */
|
||||
#define IP_ADD_MEMBERSHIP 12 /* struct ip_mreq or struct ip_mreqn.
|
||||
* Which one that is used is determiend
|
||||
* by size of argument. drop an IPv4
|
||||
* group membership
|
||||
*/
|
||||
#define IP_JOIN_GROUP IP_ADD_MEMBERSHIP
|
||||
#define IP_DROP_MEMBERSHIP 13 /* struct ip_mreq or struct ip_mreqn.
|
||||
* Which one that is used is determiend
|
||||
* by size of argument. drop an IPv4
|
||||
* group membershi
|
||||
*/
|
||||
#define IP_LEAVE_GROUP IP_DROP_MEMBERSHIP
|
||||
#define IP_RECVIF 20 /* int; receive reception if w/dgram */
|
||||
|
||||
#define IP_ROUTER_ALERT 21 /* u_char; accept router alert packets */
|
||||
#define IP_DONTFRAG 22 /* u_char; set the DF bit on each packet
|
||||
* sent from this socket
|
||||
*/
|
||||
#define IP_NOLOCALFRAG 23 /* int; enable/disable support for
|
||||
* local fragmentation (default off,
|
||||
* which means that local
|
||||
* fragmentation is allowed)
|
||||
*/
|
||||
#define IP_RECVTTL 31 /* int; turn "get the time-to-live
|
||||
* ancillary data" on/off
|
||||
*/
|
||||
#define IP_RECVTOS 32 /* int; turn "get the type-of-service ancillary data" on/off */
|
||||
#define IP_UDP_XCHKSUM 40 /* int; Turn on/off checksum for outgoing
|
||||
* UDP packages (default on)
|
||||
*/
|
||||
/* NOTE: 42-47 is used by MCAST_xxx macros */
|
||||
#define IP_NAT 50 /* Ipnet_nat_ctrl; Network address translation control */
|
||||
#define IP_FW 51 /* Ipfirewall_ctrl; Firewall control */
|
||||
#define IP_NEXTHOP 52 /* struct sockaddr_in; specify the next
|
||||
* hop router as ancillary data
|
||||
*/
|
||||
#define IP_X_SENDERLINKADDR 100 /* int; recvmsg() returns a struct
|
||||
* sockaddr_dl that will contain the link
|
||||
* address of the sender
|
||||
*/
|
||||
#define IP_X_VRID 101 /* u_char; specify the virtual router ID
|
||||
* as ancillary data
|
||||
*/
|
||||
|
||||
/* MCAST_* sockopts number should not be duplicated with IPv6-level sockopts */
|
||||
/*
|
||||
* Any-Source Multicast API; cannot be mixed with Source-Specific
|
||||
* Multicast API
|
||||
*/
|
||||
#define MCAST_JOIN_GROUP 42 /* join an any-source group */
|
||||
#define MCAST_BLOCK_SOURCE 43 /* block a given source */
|
||||
#define MCAST_UNBLOCK_SOURCE 44 /* unblock a given source */
|
||||
#define MCAST_LEAVE_GROUP 45 /* leave an any-source group */
|
||||
|
||||
/*
|
||||
* Source-Specific Multicast API; cannot be mixed with Any-Source
|
||||
* Multicast API
|
||||
*/
|
||||
#define MCAST_JOIN_SOURCE_GROUP 46 /* join a source-specific group */
|
||||
#define MCAST_LEAVE_SOURCE_GROUP 47 /* leave a source-specific grou */
|
||||
|
||||
|
||||
/*
|
||||
* Defaults and limits for options
|
||||
*/
|
||||
#define IP_DEFAULT_MULTICAST_TTL 1 /* normally limit m'casts to 1 hop */
|
||||
#define IP_DEFAULT_MULTICAST_LOOP 1 /* normally hear sends if a member */
|
||||
#define IP_MAX_MEMBERSHIPS 20 /* per socket */
|
||||
#define IP_MAX_SOURCE_FILTER 128 /* max number of MSF per group */
|
||||
#define SO_MAX_SOURCE_FILTER 64 /* max number of MSF per socket */
|
||||
|
||||
/*
|
||||
* Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP.
|
||||
*/
|
||||
struct ip_mreq {
|
||||
struct in_addr imr_multiaddr; /* IP multicast address of group */
|
||||
struct in_addr imr_interface; /* local IP address of interface */
|
||||
};
|
||||
|
||||
#define MCAST_INCLUDE 0 /* Exclude filter mode */
|
||||
#define MCAST_EXCLUDE 1 /* Include filter mode */
|
||||
|
||||
/*
|
||||
* Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHI.
|
||||
*/
|
||||
struct ip_mreqn
|
||||
{
|
||||
struct in_addr imr_multiaddr; /* IPv4 class D multicast addr */
|
||||
struct in_addr imr_interface; /* IPv4 address of local interface */
|
||||
u_int32_t imr_ifindex; /* Interface index of local interface */
|
||||
};
|
||||
|
||||
/*
|
||||
* Argument structure for MCAST_JOIN_GROUP and MCAST_LEAVE_GROUP
|
||||
*/
|
||||
struct group_req {
|
||||
u_int32_t gr_interface; /* interface index */
|
||||
struct sockaddr_storage gr_group; /* group address */
|
||||
};
|
||||
|
||||
/*
|
||||
* Argument structure for MCAST_BLOCK_SOURCE, MCAST_UNBLOCK_SOURCE,
|
||||
* MCAST_JOIN_SOURCE_GROUP and MCAST_LEAVE_SOURCE_GROUP
|
||||
*/
|
||||
struct group_source_req {
|
||||
u_int32_t gsr_interface; /* interface index */
|
||||
struct sockaddr_storage gsr_group; /* group address */
|
||||
struct sockaddr_storage gsr_source; /* source address */
|
||||
};
|
||||
|
||||
/*
|
||||
* Ancillary data for IP_PKTINFO. It can be use toghether with
|
||||
* sendmsg() to specify egress interface and/or source address. It
|
||||
* will be returned by recvmsg() if reception of packet information
|
||||
* has been enabled via the IP_PKTINFO socket option.
|
||||
*/
|
||||
struct in_pktinfo {
|
||||
u_int32_t ipi_ifindex; /* egress/ingress interface index */
|
||||
struct in_addr ipi_addr; /* local address of packet */
|
||||
};
|
||||
|
||||
/*
|
||||
* Argument for IP_PORTRANGE:
|
||||
* - which range to search when port is unspecified at bind() or connect()
|
||||
*/
|
||||
#define IP_PORTRANGE_DEFAULT 0 /* default range */
|
||||
#define IP_PORTRANGE_HIGH 1 /* "high" - request firewall bypass */
|
||||
#define IP_PORTRANGE_LOW 2 /* "low" - vouchsafe security */
|
||||
|
||||
/* Packet reassembly stuff */
|
||||
#define IPREASS_NHASH_LOG2 6
|
||||
#define IPREASS_NHASH (1 << IPREASS_NHASH_LOG2)
|
||||
#define IPREASS_HMASK (IPREASS_NHASH - 1)
|
||||
#define IPREASS_HASH(x,y) \
|
||||
(((((x) & 0xF) | ((((x) >> 8) & 0xF) << 4)) ^ (y)) & IPREASS_HMASK)
|
||||
|
||||
#define RTQ_TIMEOUT 60*10 /* run no less than once every ten minutes */
|
||||
|
||||
/*
|
||||
* Definitions for inet sysctl operations.
|
||||
*
|
||||
* Third level is protocol number.
|
||||
* Fourth level is desired variable within that protocol.
|
||||
*/
|
||||
#define IPPROTO_MAXID (IPPROTO_AH + 1) /* don't list to IPPROTO_MAX */
|
||||
|
||||
/* INET6 stuff, temporary workaround */
|
||||
#define __KAME_NETINET_IN_H_INCLUDED_
|
||||
#include <netinet6/in6.h>
|
||||
#undef __KAME_NETINET_IN_H_INCLUDED_
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
|
||||
void inet_ntoa_b __P((struct in_addr, char *));
|
||||
char *inet_ntoa __P((struct in_addr)); /* in libkern */
|
||||
|
||||
#if 0
|
||||
#define satosin(sa) ((struct sockaddr_in *)(sa))
|
||||
#define sintosa(sin) ((struct sockaddr *)(sin))
|
||||
#define ifatoia(ifa) ((struct in_ifaddr *)(ifa))
|
||||
#endif
|
||||
|
||||
#endif /* _WRS_KERNEL */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,91 @@
|
||||
/* in_systm.h - miscellaneous internetwork definitions for kernel */
|
||||
|
||||
/* Copyright 2001-2005 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)in_systm.h 8.1 (Berkeley) 6/10/93
|
||||
* $FreeBSD: src/sys/netinet/in_systm.h,v 1.9 1999/12/29 04:41:00 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01i,09jan12,h_x Move extern "C" after last header file include.
|
||||
01h,07feb05,vvv _KERNEL cleanup
|
||||
01g,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01f,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01e,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01d,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01c,10jun03,vvv include netVersion.h
|
||||
01b,09sep02,hsh add c++ protection
|
||||
01a,23aug01,ann ported to clarinet from freeBSD 4.3 version 1.9
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _NETINET_IN_SYSTM_H_
|
||||
#define _NETINET_IN_SYSTM_H_
|
||||
|
||||
#include <netVersion.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Miscellaneous internetwork
|
||||
* definitions for kernel.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Network types.
|
||||
*
|
||||
* Internally the system keeps counters in the headers with the bytes
|
||||
* swapped so that VAX instructions will work on them. It reverses
|
||||
* the bytes before transmission at each protocol level. The n_ types
|
||||
* represent the types with the bytes in ``high-ender'' order.
|
||||
*/
|
||||
typedef u_int16_t n_short; /* short as received from the net */
|
||||
typedef u_int32_t n_long; /* long as received from the net */
|
||||
|
||||
typedef u_int32_t n_time; /* ms since 00:00 GMT, byte rev */
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
n_time iptime __P((void));
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,152 @@
|
||||
/* in_var.h - in_var header file */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2001-2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 1985, 1986, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)in_var.h 8.2 (Berkeley) 1/9/95
|
||||
* $FreeBSD: src/sys/netinet/in_var.h,v 1.33.2.3 2001/12/14 20:09:34 jlemon Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2002 INRIA. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by INRIA and its
|
||||
* contributors.
|
||||
* 4. Neither the name of INRIA nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
/*
|
||||
* Implementation of Internet Group Management Protocol, Version 3.
|
||||
*
|
||||
* Developed by Hitoshi Asaeda, INRIA, February 2002.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
02d,30nov06,kch Added netinet6/in6_var.h include.
|
||||
02c,09sep06,kch Cleanup for IPNet integration
|
||||
02b,02mar06,dlk Remove references to ipflow* functions (SPR #104107).
|
||||
02a,25aug05,dlk Add section tags.
|
||||
01z,13jul05,dlk Added ipintrqJob declaration.
|
||||
01y,29jun05,spm updated for IGMPv3 support
|
||||
01x,19apr05,rp merged from comp_wn_ipv6_mld_interim-dev
|
||||
01w,02mar05,niq Make router alert support scalable
|
||||
01v,25feb05,niq merge from niqbal.tor3.mroute for IP router alert changes
|
||||
01u,07feb05,vvv _KERNEL cleanup
|
||||
01t,31jan05,niq virtual stack changes for sysctl
|
||||
01s,24jan05,vvv osdep.h cleanup
|
||||
01r,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01q,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
||||
/main/vdt/base6_itn5_networking-int/2)
|
||||
01p,25nov03,ppp added a comment around the inclusion of in6_var.h
|
||||
01o,21nov03,ppp rtp work
|
||||
01n,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01m,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01l,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01k,23oct03,rlm updated #includes for header re-org
|
||||
01j,07aug03,niq Merging from Accordion label ACCORDION_BASE6_MERGE_BASELINE
|
||||
01i,23jul03,vvv added _KERNEL protection to fix warnings (SPR #89813)
|
||||
01h,09may03,vvv included if.h
|
||||
01g,01feb03,pas merge from FreeBSD 4.7 - added hash table for IP addresses
|
||||
01f,09sep02,hsh add c++ protection
|
||||
01e,28mar02,ppp modified it for backward compatibilty with A.E. 1.1
|
||||
01d,03dec01,niq Sysctl changes for Clarinet
|
||||
01c,02oct01,ppp removing the guaed for in6_var.h
|
||||
01b,18sep01,ppp temporarily guarding in6_var.h by INET6 for the link process
|
||||
01a,27aug01,hsh Created from FreeBSD 4.3
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _NETINET_IN_VAR_H_
|
||||
#define _NETINET_IN_VAR_H_
|
||||
|
||||
#include <sys/queue.h>
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
#include <sys/fnv_hash.h>
|
||||
#endif
|
||||
|
||||
#include <net/if.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct in_aliasreq {
|
||||
char ifra_name[IFNAMSIZ]; /* if name, e.g. "en0" */
|
||||
struct sockaddr_in ifra_addr;
|
||||
struct sockaddr_in ifra_broadaddr;
|
||||
#define ifra_dstaddr ifra_broadaddr
|
||||
struct sockaddr_in ifra_mask;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef INET6
|
||||
#include <netinet6/in6_var.h>
|
||||
#endif /* INET6 */
|
||||
|
||||
#endif /* _NETINET_IN_VAR_H_ */
|
||||
@@ -0,0 +1,244 @@
|
||||
/* ip.h - ip head file */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2001-2005 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)ip.h 8.2 (Berkeley) 6/1/94
|
||||
* $FreeBSD: src/sys/netinet/ip.h,v 1.25 2003/10/29 15:07:03 ume Exp $
|
||||
* $FreeBSD: src/sys/netinet/ip.h,v 1.17 1999/12/22 19:13:20 shin Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01l,09jan12,h_x Move extern "C" after last header file include.
|
||||
01k,19apr05,rp merged from comp_wn_ipv6_mld_interim-dev
|
||||
01j,15feb05,vvv include in_systm.h only in kernel
|
||||
01i,07feb05,vvv _KERNEL cleanup
|
||||
01h,14jan05,vvv osdep.h cleanup
|
||||
01g,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01f,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01e,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01d,07aug03,niq Merging from Accordion label ACCORDION_BASE6_MERGE_BASELINE
|
||||
01c,09may03,vvv included in.h and in_systm.h
|
||||
01b,09sep02,hsh add c++ protection
|
||||
01a,23aug01,ann ported to clarinet from freeBSD 4.3 version 1.17
|
||||
*/
|
||||
|
||||
#ifndef _NETINET_IP_H_
|
||||
#define _NETINET_IP_H_
|
||||
|
||||
#include <netinet/in.h>
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
#include <netinet/in_systm.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Definitions for internet protocol version 4.
|
||||
* Per RFC 791, September 1981.
|
||||
*/
|
||||
#define IPVERSION 4
|
||||
|
||||
/*
|
||||
* Structure of an internet header, naked of options.
|
||||
*/
|
||||
struct ip {
|
||||
#ifdef _IP_VHL
|
||||
u_char ip_vhl; /* version << 4 | header length >> 2 */
|
||||
#else
|
||||
#if _BYTE_ORDER == _LITTLE_ENDIAN
|
||||
u_int ip_hl:4, /* header length */
|
||||
ip_v:4; /* version */
|
||||
#endif
|
||||
#if _BYTE_ORDER == _BIG_ENDIAN
|
||||
u_int ip_v:4, /* version */
|
||||
ip_hl:4; /* header length */
|
||||
#endif
|
||||
#endif /* not _IP_VHL */
|
||||
u_char ip_tos; /* type of service */
|
||||
u_short ip_len; /* total length */
|
||||
u_short ip_id; /* identification */
|
||||
u_short ip_off; /* fragment offset field */
|
||||
#define IP_RF 0x8000 /* reserved fragment flag */
|
||||
#define IP_DF 0x4000 /* dont fragment flag */
|
||||
#define IP_MF 0x2000 /* more fragments flag */
|
||||
#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */
|
||||
u_char ip_ttl; /* time to live */
|
||||
u_char ip_p; /* protocol */
|
||||
u_short ip_sum; /* checksum */
|
||||
struct in_addr ip_src,ip_dst; /* source and dest address */
|
||||
};
|
||||
|
||||
#ifdef _IP_VHL
|
||||
#define IP_MAKE_VHL(v, hl) ((v) << 4 | (hl))
|
||||
#define IP_VHL_HL(vhl) ((vhl) & 0x0f)
|
||||
#define IP_VHL_V(vhl) ((vhl) >> 4)
|
||||
#define IP_VHL_BORING 0x45
|
||||
#endif
|
||||
|
||||
#define IP_MAXPACKET 65535 /* maximum packet size */
|
||||
|
||||
/*
|
||||
* Definitions for IP type of service (ip_tos)
|
||||
*/
|
||||
#define IPTOS_LOWDELAY 0x10
|
||||
#define IPTOS_THROUGHPUT 0x08
|
||||
#define IPTOS_RELIABILITY 0x04
|
||||
#define IPTOS_MINCOST 0x02
|
||||
#if 1
|
||||
/* ECN RFC3168 obsoletes RFC2481, and these will be deprecated soon. */
|
||||
/* ECN bits proposed by Sally Floyd */
|
||||
#define IPTOS_CE 0x01 /* congestion experienced */
|
||||
#define IPTOS_ECT 0x02 /* ECN-capable transport */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Definitions for IP precedence (also in ip_tos) (hopefully unused)
|
||||
*/
|
||||
#define IPTOS_PREC_NETCONTROL 0xe0
|
||||
#define IPTOS_PREC_INTERNETCONTROL 0xc0
|
||||
#define IPTOS_PREC_CRITIC_ECP 0xa0
|
||||
#define IPTOS_PREC_FLASHOVERRIDE 0x80
|
||||
#define IPTOS_PREC_FLASH 0x60
|
||||
#define IPTOS_PREC_IMMEDIATE 0x40
|
||||
#define IPTOS_PREC_PRIORITY 0x20
|
||||
#define IPTOS_PREC_ROUTINE 0x00
|
||||
|
||||
/*
|
||||
* ECN (Explicit Congestion Notification) codepoints in RFC3168
|
||||
* mapped to the lower 2 bits of the TOS field.
|
||||
*/
|
||||
#define IPTOS_ECN_NOTECT 0x00 /* not-ECT */
|
||||
#define IPTOS_ECN_ECT1 0x01 /* ECN-capable transport (1) */
|
||||
#define IPTOS_ECN_ECT0 0x02 /* ECN-capable transport (0) */
|
||||
#define IPTOS_ECN_CE 0x03 /* congestion experienced */
|
||||
#define IPTOS_ECN_MASK 0x03 /* ECN field mask */
|
||||
|
||||
/*
|
||||
* Definitions for options.
|
||||
*/
|
||||
#define IPOPT_COPIED(o) ((o)&0x80)
|
||||
#define IPOPT_CLASS(o) ((o)&0x60)
|
||||
#define IPOPT_NUMBER(o) ((o)&0x1f)
|
||||
|
||||
#define IPOPT_CONTROL 0x00
|
||||
#define IPOPT_RESERVED1 0x20
|
||||
#define IPOPT_DEBMEAS 0x40
|
||||
#define IPOPT_RESERVED2 0x60
|
||||
|
||||
#define IPOPT_EOL 0 /* end of option list */
|
||||
#define IPOPT_NOP 1 /* no operation */
|
||||
|
||||
#define IPOPT_RR 7 /* record packet route */
|
||||
#define IPOPT_TS 68 /* timestamp */
|
||||
#define IPOPT_SECURITY 130 /* provide s,c,h,tcc */
|
||||
#define IPOPT_LSRR 131 /* loose source route */
|
||||
#define IPOPT_ESO 133 /* extended security */
|
||||
#define IPOPT_CIPSO 134 /* commerical security */
|
||||
#define IPOPT_SATID 136 /* satnet id */
|
||||
#define IPOPT_SSRR 137 /* strict source route */
|
||||
#define IPOPT_RA 148 /* router alert */
|
||||
|
||||
/*
|
||||
* Offsets to fields in options other than EOL and NOP.
|
||||
*/
|
||||
#define IPOPT_OPTVAL 0 /* option ID */
|
||||
#define IPOPT_OLEN 1 /* option length */
|
||||
#define IPOPT_OFFSET 2 /* offset within option */
|
||||
#define IPOPT_MINOFF 4 /* min value of above */
|
||||
|
||||
/*
|
||||
* Time stamp option structure.
|
||||
*/
|
||||
struct ip_timestamp {
|
||||
u_char ipt_code; /* IPOPT_TS */
|
||||
u_char ipt_len; /* size of structure (variable) */
|
||||
u_char ipt_ptr; /* index of current entry */
|
||||
#if _BYTE_ORDER == _LITTLE_ENDIAN
|
||||
u_int ipt_flg:4, /* flags, see below */
|
||||
ipt_oflw:4; /* overflow counter */
|
||||
#endif
|
||||
#if _BYTE_ORDER == _BIG_ENDIAN
|
||||
u_int ipt_oflw:4, /* overflow counter */
|
||||
ipt_flg:4; /* flags, see below */
|
||||
#endif
|
||||
union ipt_timestamp {
|
||||
u_long ipt_time[1];
|
||||
struct ipt_ta {
|
||||
struct in_addr ipt_addr;
|
||||
u_long ipt_time;
|
||||
} ipt_ta[1];
|
||||
} ipt_timestamp;
|
||||
};
|
||||
|
||||
/* flag bits for ipt_flg */
|
||||
#define IPOPT_TS_TSONLY 0 /* timestamps only */
|
||||
#define IPOPT_TS_TSANDADDR 1 /* timestamps and addresses */
|
||||
#define IPOPT_TS_PRESPEC 3 /* specified modules only */
|
||||
|
||||
/* bits for security (not byte swapped) */
|
||||
#define IPOPT_SECUR_UNCLASS 0x0000
|
||||
#define IPOPT_SECUR_CONFID 0xf135
|
||||
#define IPOPT_SECUR_EFTO 0x789a
|
||||
#define IPOPT_SECUR_MMMM 0xbc4d
|
||||
#define IPOPT_SECUR_RESTR 0xaf13
|
||||
#define IPOPT_SECUR_SECRET 0xd788
|
||||
#define IPOPT_SECUR_TOPSECRET 0x6bc5
|
||||
|
||||
/*
|
||||
* Internet implementation parameters.
|
||||
*/
|
||||
#define MAXTTL 255 /* maximum time to live (seconds) */
|
||||
#define IPDEFTTL 64 /* default ttl, from RFC 1340 */
|
||||
#define IPFRAGTTL 60 /* time to live for frags, slowhz */
|
||||
#define IPTTLDEC 1 /* subtracted when forwarding */
|
||||
|
||||
#define IP_MSS 576 /* default maximum segment size */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,28 @@
|
||||
/* ip6.h - IPv6 protocol definitions */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2005 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01a,29jun05,vvv written
|
||||
*/
|
||||
|
||||
#ifndef __INCip6h
|
||||
#define __INCip6h
|
||||
|
||||
/*
|
||||
* This file has been added to satisfy the requirement in RFC3542
|
||||
* that ip6.h should be in the netinet directory. The copy in netinet6
|
||||
* is retained for backward compatibility.
|
||||
*/
|
||||
|
||||
#include <netinet6/ip6.h>
|
||||
|
||||
#endif /* not __INCip6h */
|
||||
@@ -0,0 +1,235 @@
|
||||
/* ip_icmp.h - interface control message protocol header file */
|
||||
|
||||
/* Copyright 2001-2006 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)ip_icmp.h 8.1 (Berkeley) 6/10/93
|
||||
* $FreeBSD: src/sys/netinet/ip_icmp.h,v 1.16 1999/12/29 04:41:01 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01m,09jan12,h_x Move extern "C" after last header file include.
|
||||
01l,21sep06,tlu Cleanup for IPNET integration
|
||||
01k,10sep06,kch Cleanup for IPNet integration.
|
||||
01j,04jul05,dlk Added result member to icmp_info structure (SPR #110450).
|
||||
01i,07feb05,vvv _KERNEL cleanup
|
||||
01h,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01g,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01f,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01e,07aug03,niq Merging from Accordion label ACCORDION_BASE6_MERGE_BASELINE.
|
||||
01d,09may03,vvv included in_systm.h and ip.h
|
||||
01c,10sep02,hsh add c++ protection
|
||||
01b,20jun02,ppp adding the structure for icmp_info
|
||||
01a,22aug01,ppp Created from BSD 4.3
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _NETINET_IP_ICMP_H_
|
||||
#define _NETINET_IP_ICMP_H_
|
||||
|
||||
#include <netinet/ip.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Interface Control Message Protocol Definitions.
|
||||
* Per RFC 792, September 1981.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Internal of an ICMP Router Advertisement
|
||||
*/
|
||||
struct icmp_ra_addr {
|
||||
u_int32_t ira_addr;
|
||||
u_int32_t ira_preference;
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure of an icmp header.
|
||||
*/
|
||||
struct icmp {
|
||||
u_char icmp_type; /* type of message, see below */
|
||||
u_char icmp_code; /* type sub code */
|
||||
u_short icmp_cksum; /* ones complement cksum of struct */
|
||||
union {
|
||||
u_char ih_pptr; /* ICMP_PARAMPROB */
|
||||
struct in_addr ih_gwaddr; /* ICMP_REDIRECT */
|
||||
struct ih_idseq {
|
||||
u_int16_t icd_id;
|
||||
u_int16_t icd_seq;
|
||||
} ih_idseq;
|
||||
int ih_void;
|
||||
|
||||
/* ICMP_UNREACH_NEEDFRAG -- Path MTU Discovery (RFC1191) */
|
||||
struct ih_pmtu {
|
||||
u_int16_t ipm_void;
|
||||
u_int16_t ipm_nextmtu;
|
||||
} ih_pmtu;
|
||||
|
||||
struct ih_rtradv {
|
||||
u_char irt_num_addrs;
|
||||
u_char irt_wpa;
|
||||
u_int16_t irt_lifetime;
|
||||
} ih_rtradv;
|
||||
} icmp_hun;
|
||||
#define icmp_pptr icmp_hun.ih_pptr
|
||||
#define icmp_gwaddr icmp_hun.ih_gwaddr
|
||||
#define icmp_id icmp_hun.ih_idseq.icd_id
|
||||
#define icmp_seq icmp_hun.ih_idseq.icd_seq
|
||||
#define icmp_void icmp_hun.ih_void
|
||||
#define icmp_pmvoid icmp_hun.ih_pmtu.ipm_void
|
||||
#define icmp_nextmtu icmp_hun.ih_pmtu.ipm_nextmtu
|
||||
#define icmp_num_addrs icmp_hun.ih_rtradv.irt_num_addrs
|
||||
#define icmp_wpa icmp_hun.ih_rtradv.irt_wpa
|
||||
#define icmp_lifetime icmp_hun.ih_rtradv.irt_lifetime
|
||||
union {
|
||||
struct id_ts {
|
||||
u_int32_t its_otime;
|
||||
u_int32_t its_rtime;
|
||||
u_int32_t its_ttime;
|
||||
} id_ts;
|
||||
struct id_ip {
|
||||
struct ip idi_ip;
|
||||
/* options and then 64 bits of data */
|
||||
} id_ip;
|
||||
struct icmp_ra_addr id_radv;
|
||||
u_int32_t id_mask;
|
||||
char id_data[1];
|
||||
} icmp_dun;
|
||||
#define icmp_otime icmp_dun.id_ts.its_otime
|
||||
#define icmp_rtime icmp_dun.id_ts.its_rtime
|
||||
#define icmp_ttime icmp_dun.id_ts.its_ttime
|
||||
#define icmp_ip icmp_dun.id_ip.idi_ip
|
||||
#define icmp_radv icmp_dun.id_radv
|
||||
#define icmp_mask icmp_dun.id_mask
|
||||
#define icmp_data icmp_dun.id_data
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Added this structure for passing additional information to ctl functions
|
||||
* that may want to use it
|
||||
*/
|
||||
|
||||
struct icmp_info {
|
||||
struct sockaddr_in sock;
|
||||
u_short errorPktLen;
|
||||
u_short result;
|
||||
#define ICMP4_RESULT_ACCEPT 0
|
||||
#define ICMP4_RESULT_REJECT 1
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Lower bounds on packet lengths for various types.
|
||||
* For the error advice packets must first insure that the
|
||||
* packet is large enough to contain the returned ip header.
|
||||
* Only then can we do the check to see if 64 bits of packet
|
||||
* data have been returned, since we need to check the returned
|
||||
* ip header length.
|
||||
*/
|
||||
#define ICMP_MINLEN 8 /* abs minimum */
|
||||
#define ICMP_TSLEN (8 + 3 * sizeof (n_time)) /* timestamp */
|
||||
#define ICMP_MASKLEN 12 /* address mask */
|
||||
#define ICMP_ADVLENMIN (8 + sizeof (struct ip) + 8) /* min */
|
||||
#ifndef _IP_VHL
|
||||
#define ICMP_ADVLEN(p) (8 + ((p)->icmp_ip.ip_hl << 2) + 8)
|
||||
/* N.B.: must separately check that ip_hl >= 5 */
|
||||
#else
|
||||
#define ICMP_ADVLEN(p) (8 + (IP_VHL_HL((p)->icmp_ip.ip_vhl) << 2) + 8)
|
||||
/* N.B.: must separately check that header length >= 5 */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Definition of type and code field values.
|
||||
*/
|
||||
#define ICMP_ECHOREPLY 0 /* echo reply */
|
||||
#define ICMP_UNREACH 3 /* dest unreachable, codes: */
|
||||
#define ICMP_UNREACH_NET 0 /* bad net */
|
||||
#define ICMP_UNREACH_HOST 1 /* bad host */
|
||||
#define ICMP_UNREACH_PROTOCOL 2 /* bad protocol */
|
||||
#define ICMP_UNREACH_PORT 3 /* bad port */
|
||||
#define ICMP_UNREACH_NEEDFRAG 4 /* IP_DF caused drop */
|
||||
#define ICMP_UNREACH_SRCFAIL 5 /* src route failed */
|
||||
#define ICMP_UNREACH_NET_UNKNOWN 6 /* unknown net */
|
||||
#define ICMP_UNREACH_HOST_UNKNOWN 7 /* unknown host */
|
||||
#define ICMP_UNREACH_ISOLATED 8 /* src host isolated */
|
||||
#define ICMP_UNREACH_NET_PROHIB 9 /* prohibited access */
|
||||
#define ICMP_UNREACH_HOST_PROHIB 10 /* ditto */
|
||||
#define ICMP_UNREACH_TOSNET 11 /* bad tos for net */
|
||||
#define ICMP_UNREACH_TOSHOST 12 /* bad tos for host */
|
||||
#define ICMP_UNREACH_FILTER_PROHIB 13 /* admin prohib */
|
||||
#define ICMP_UNREACH_HOST_PRECEDENCE 14 /* host prec vio. */
|
||||
#define ICMP_UNREACH_PRECEDENCE_CUTOFF 15 /* prec cutoff */
|
||||
#define ICMP_SOURCEQUENCH 4 /* packet lost, slow down */
|
||||
#define ICMP_REDIRECT 5 /* shorter route, codes: */
|
||||
#define ICMP_REDIRECT_NET 0 /* for network */
|
||||
#define ICMP_REDIRECT_HOST 1 /* for host */
|
||||
#define ICMP_REDIRECT_TOSNET 2 /* for tos and net */
|
||||
#define ICMP_REDIRECT_TOSHOST 3 /* for tos and host */
|
||||
#define ICMP_ECHO 8 /* echo service */
|
||||
#define ICMP_ROUTERADVERT 9 /* router advertisement */
|
||||
#define ICMP_ROUTERSOLICIT 10 /* router solicitation */
|
||||
#define ICMP_TIMXCEED 11 /* time exceeded, code: */
|
||||
#define ICMP_TIMXCEED_INTRANS 0 /* ttl==0 in transit */
|
||||
#define ICMP_TIMXCEED_REASS 1 /* ttl==0 in reass */
|
||||
#define ICMP_PARAMPROB 12 /* ip header bad */
|
||||
#define ICMP_PARAMPROB_ERRATPTR 0 /* error at param ptr */
|
||||
#define ICMP_PARAMPROB_OPTABSENT 1 /* req. opt. absent */
|
||||
#define ICMP_PARAMPROB_LENGTH 2 /* bad length */
|
||||
#define ICMP_TSTAMP 13 /* timestamp request */
|
||||
#define ICMP_TSTAMPREPLY 14 /* timestamp reply */
|
||||
#define ICMP_IREQ 15 /* information request */
|
||||
#define ICMP_IREQREPLY 16 /* information reply */
|
||||
#define ICMP_MASKREQ 17 /* address mask request */
|
||||
#define ICMP_MASKREPLY 18 /* address mask reply */
|
||||
|
||||
#define ICMP_MAXTYPE 18
|
||||
|
||||
#define ICMP_INFOTYPE(type) \
|
||||
((type) == ICMP_ECHOREPLY || (type) == ICMP_ECHO || \
|
||||
(type) == ICMP_ROUTERADVERT || (type) == ICMP_ROUTERSOLICIT || \
|
||||
(type) == ICMP_TSTAMP || (type) == ICMP_TSTAMPREPLY || \
|
||||
(type) == ICMP_IREQ || (type) == ICMP_IREQREPLY || \
|
||||
(type) == ICMP_MASKREQ || (type) == ICMP_MASKREPLY)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,178 @@
|
||||
/* ip_mroute.h - multicast forwarding header file */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1984-2007 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 1989 Stephen Deering.
|
||||
* Copyright (c) 1992, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Stephen Deering of Stanford University.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)ip_mroute.h 8.1 (Berkeley) 6/10/93
|
||||
* $FreeBSD: src/sys/netinet/ip_mroute.h,v 1.17 1999/12/29 04:41:01 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01j,09jan12,h_x Move extern "C" after last header file include.
|
||||
01i,12jul07,kch Re-integrated to support IP multicast source forwarding
|
||||
for IPNET (WIND00102340).
|
||||
01h,16jul05,dlk Added tbf_timeo member to struct tbf for timer cancellation
|
||||
when shutting down mrouter in virtual stack destructor.
|
||||
01g,25feb05,niq add support for router alert
|
||||
01f,31jan05,niq merge mroute changes from comp_wn_ipv6_multicast_interim-dev
|
||||
branch (ver 1)
|
||||
01e,20sep04,rae fix compiler warnings
|
||||
01d,24jun03,rae add #include netVersion.h
|
||||
01c,10oct01,rae merge from truestack ver 01k (v2 upgrade)
|
||||
01b,08apr97,vin removed declarations for ip_mforward and ip_mrouter_done.
|
||||
implemented ip_mforward as a hook for scalability.
|
||||
01a,03mar96,vin created from BSD4.4lite2.
|
||||
*/
|
||||
|
||||
#ifndef _NETINET_IP_MROUTE_H_
|
||||
#define _NETINET_IP_MROUTE_H_
|
||||
|
||||
#include <netinet/in.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Definitions for IP multicast forwarding.
|
||||
*
|
||||
* Written by David Waitzman, BBN Labs, August 1988.
|
||||
* Modified by Steve Deering, Stanford, February 1989.
|
||||
* Modified by Ajit Thyagarajan, PARC, August 1993.
|
||||
* Modified by Ajit Thyagarajan, PARC, August 1994.
|
||||
* Modified by Ahmed Helmy, SGI, June 1996.
|
||||
* Modified by Pavlin Radoslavov, ICSI, October 2002.
|
||||
*
|
||||
* MROUTING Revision: 3.3.1.3
|
||||
* and PIM-SMv2 and PIM-DM support, advanced API support,
|
||||
* bandwidth metering and signaling.
|
||||
*/
|
||||
|
||||
|
||||
/***** IP_IPPROTO_IP level multicast socket options: *****/
|
||||
#define MRT_BASE 0x40000000
|
||||
|
||||
/*
|
||||
* Multicast Routing set/getsockopt commands.
|
||||
*/
|
||||
#define MRT_INIT (MRT_BASE + 0) /* initialize mrouted */
|
||||
#define MRT_DONE (MRT_BASE + 1) /* shut down mrouted */
|
||||
#define MRT_ADD_VIF (MRT_BASE + 2) /* create virtual interface */
|
||||
#define MRT_DEL_VIF (MRT_BASE + 3) /* delete virtual interface */
|
||||
#define MRT_ADD_MFC (MRT_BASE + 4) /* insert forwarding cache entry */
|
||||
#define MRT_DEL_MFC (MRT_BASE + 5) /* delete forwarding cache entry */
|
||||
#define MRT_VERSION (MRT_BASE + 6) /* get kernel version number */
|
||||
#define MRT_ASSERT (MRT_BASE + 7) /* enable assert processing */
|
||||
#define MRT_PIM MRT_ASSERT /* enable PIM processing */
|
||||
|
||||
#define MAXVIFS 32 /* Maximum number of virtual interfaces */
|
||||
typedef u_short vifi_t; /* Virtual interface index type */
|
||||
|
||||
|
||||
/*
|
||||
* Structure used for IPv4 multicast routing
|
||||
*/
|
||||
|
||||
/*
|
||||
* Argument structure for MRT_ADD_VIF.
|
||||
* (MRT_DEL_VIF takes a single vifi_t argument.)
|
||||
*/
|
||||
struct vifctl {
|
||||
vifi_t vifc_vifi; /* the index of the vif to be added */
|
||||
u_char vifc_flags; /* VIFF_ flags defined below */
|
||||
u_char vifc_threshold; /* min ttl required to forward on vif */
|
||||
u_int32_t vifc_rate_limit; /* max rate */
|
||||
struct in_addr vifc_lcl_addr; /* local interface address */
|
||||
struct in_addr vifc_rmt_addr; /* remote address (tunnels only) */
|
||||
};
|
||||
|
||||
#define VIFF_TUNNEL 0x1 /* vif represents a tunnel end-point */
|
||||
#define VIFF_REGISTER 0x4 /* used for PIM Register encap/decap */
|
||||
|
||||
/*
|
||||
* Argument structure for MRT_ADD_MFC and MRT_DEL_MFC
|
||||
*/
|
||||
struct mfcctl {
|
||||
struct in_addr mfcc_origin; /* ip origin of mcasts */
|
||||
struct in_addr mfcc_mcastgrp; /* multicast group associated*/
|
||||
vifi_t mfcc_parent; /* incoming vif */
|
||||
u_char mfcc_ttls[MAXVIFS]; /* forwarding ttls on vifs */
|
||||
};
|
||||
|
||||
/* Structure used by SIOCGETSGCNT ioctl
|
||||
* Holds statistsic for the route matching 'src' and 'grp'
|
||||
*/
|
||||
struct sioc_sg_req
|
||||
{
|
||||
struct in_addr src; /* The source address */
|
||||
struct in_addr grp; /* The destination group address */
|
||||
u_int32_t pktcnt; /* Packets sent along this route */
|
||||
u_int32_t bytecnt; /* Bytes sent along this route */
|
||||
u_int32_t wrong_if; /* Number of packet received on the wrong
|
||||
* VIF matching this route
|
||||
*/
|
||||
};
|
||||
|
||||
/* Structure used by SIOCGETVIFCNT ioctl.
|
||||
* Hold statistics for the virtual interface
|
||||
*/
|
||||
struct sioc_vif_req
|
||||
{
|
||||
vifi_t vifi; /* Virtual interface index */
|
||||
u_int32_t icount; /* Number of packets received on this interface */
|
||||
u_int32_t ocount; /* Number of packets sent on this interface */
|
||||
u_int32_t ibytes; /* Number of bytes received on this interface */
|
||||
u_int32_t obytes; /* Number of bytes sent on this interface */
|
||||
};
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _NETINET_IP_MROUTE_H_ */
|
||||
@@ -0,0 +1,35 @@
|
||||
/* sctp.h - IPNET SCTP header file */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2009 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01a,18Feb09,jgy Created,base on draft-ietf-tsvwg-sctpsocket-16.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 1 DESCRIPTION
|
||||
****************************************************************************
|
||||
*
|
||||
* This is the header file for SCTP SOCKET.
|
||||
*/
|
||||
|
||||
#ifndef SCTP_H
|
||||
#define SCTP_H
|
||||
|
||||
#include <sys/sctp_socket.h>
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
/* sockunion.h -File Transfer Protocol library header */
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01g,09jan12,h_x Move extern "C" after last header file include.
|
||||
01f,24apr07,tkf Add IPv6-Only build support.
|
||||
01e,07jan05,syy Port to RTP
|
||||
01d,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01c,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01b,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01a,15sep02,ant written
|
||||
|
||||
*/
|
||||
|
||||
#ifndef __INCsockunionh
|
||||
#define __INCsockunionh
|
||||
|
||||
/* includes */
|
||||
|
||||
#include <netinet/in.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* typedefs */
|
||||
|
||||
union sockunion {
|
||||
struct sockinet {
|
||||
u_char si_len;
|
||||
u_char si_family;
|
||||
u_short si_port;
|
||||
} su_si;
|
||||
#ifdef INET
|
||||
struct sockaddr_in su_sin;
|
||||
#endif
|
||||
#ifdef INET6
|
||||
struct sockaddr_in6 su_sin6;
|
||||
#endif
|
||||
};
|
||||
#define su_len su_si.si_len
|
||||
#define su_family su_si.si_family
|
||||
#define su_port su_si.si_port
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCsockunionh */
|
||||
@@ -0,0 +1,171 @@
|
||||
/* tcp.h - TCP protocol definitions */
|
||||
|
||||
/* Copyright 2001-2005 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)tcp.h 8.1 (Berkeley) 6/10/93
|
||||
* $FreeBSD: src/sys/netinet/tcp.h,v 1.13.2.3 2001/03/01 22:08:42 jlemon Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01k,09jan12,h_x Move extern "C" after last header file include.
|
||||
01j,04oct06,kch Updated TCP user-settable options.
|
||||
01i,14jan05,vvv osdep.h cleanup
|
||||
01h,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01g,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01f,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01e,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01d,10jun03,vvv include netVersion.h
|
||||
01c,10sep02,hsh add c++ protection
|
||||
01b,08feb02,pas EAR code cleanup
|
||||
01a,13aug01,pas Created from FreeBSD4.3-RELEASE(July-17-01).
|
||||
*/
|
||||
|
||||
#ifndef _NETINET_TCP_H_
|
||||
#define _NETINET_TCP_H_
|
||||
|
||||
#include <netVersion.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef u_int32_t tcp_seq;
|
||||
typedef u_int32_t tcp_cc; /* connection count per rfc1644 */
|
||||
|
||||
#define tcp6_seq tcp_seq /* for KAME src sync over BSD*'s */
|
||||
#define tcp6hdr tcphdr /* for KAME src sync over BSD*'s */
|
||||
|
||||
/*
|
||||
* TCP header.
|
||||
* Per RFC 793, September, 1981.
|
||||
*/
|
||||
struct tcphdr {
|
||||
u_short th_sport; /* source port */
|
||||
u_short th_dport; /* destination port */
|
||||
tcp_seq th_seq; /* sequence number */
|
||||
tcp_seq th_ack; /* acknowledgement number */
|
||||
#if _BYTE_ORDER == _LITTLE_ENDIAN
|
||||
u_int th_x2:4, /* (unused) */
|
||||
th_off:4; /* data offset */
|
||||
#endif
|
||||
#if _BYTE_ORDER == _BIG_ENDIAN
|
||||
u_int th_off:4, /* data offset */
|
||||
th_x2:4; /* (unused) */
|
||||
#endif
|
||||
u_char th_flags;
|
||||
#define TH_FIN 0x01
|
||||
#define TH_SYN 0x02
|
||||
#define TH_RST 0x04
|
||||
#define TH_PUSH 0x08
|
||||
#define TH_ACK 0x10
|
||||
#define TH_URG 0x20
|
||||
#define TH_ECE 0x40
|
||||
#define TH_CWR 0x80
|
||||
#define TH_FLAGS (TH_FIN|TH_SYN|TH_RST|TH_ACK|TH_URG|TH_ECE|TH_CWR)
|
||||
|
||||
u_short th_win; /* window */
|
||||
u_short th_sum; /* checksum */
|
||||
u_short th_urp; /* urgent pointer */
|
||||
};
|
||||
|
||||
#define TCPOPT_EOL 0
|
||||
#define TCPOPT_NOP 1
|
||||
#define TCPOPT_MAXSEG 2
|
||||
#define TCPOLEN_MAXSEG 4
|
||||
#define TCPOPT_WINDOW 3
|
||||
#define TCPOLEN_WINDOW 3
|
||||
#define TCPOPT_SACK_PERMITTED 4 /* Experimental */
|
||||
#define TCPOLEN_SACK_PERMITTED 2
|
||||
#define TCPOPT_SACK 5 /* Experimental */
|
||||
#define TCPOPT_TIMESTAMP 8
|
||||
#define TCPOLEN_TIMESTAMP 10
|
||||
#define TCPOLEN_TSTAMP_APPA (TCPOLEN_TIMESTAMP+2) /* appendix A */
|
||||
#define TCPOPT_TSTAMP_HDR \
|
||||
(TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP)
|
||||
|
||||
#define TCPOPT_CC 11 /* CC options: RFC-1644 */
|
||||
#define TCPOPT_CCNEW 12
|
||||
#define TCPOPT_CCECHO 13
|
||||
#define TCPOLEN_CC 6
|
||||
#define TCPOLEN_CC_APPA (TCPOLEN_CC+2)
|
||||
#define TCPOPT_CC_HDR(ccopt) \
|
||||
(TCPOPT_NOP<<24|TCPOPT_NOP<<16|(ccopt)<<8|TCPOLEN_CC)
|
||||
|
||||
/*
|
||||
* Default maximum segment size for TCP.
|
||||
* With an IP MSS of 576, this is 536,
|
||||
* but 512 is probably more convenient.
|
||||
* This should be defined as MIN(512, IP_MSS - sizeof (struct tcpiphdr)).
|
||||
*/
|
||||
#define TCP_MSS 512
|
||||
|
||||
/*
|
||||
* Default maximum segment size for TCP6.
|
||||
* With an IP6 MSS of 1280, this is 1220,
|
||||
* but 1024 is probably more convenient. (xxx kazu in doubt)
|
||||
* This should be defined as MIN(1024, IP6_MSS - sizeof (struct tcpip6hdr))
|
||||
*/
|
||||
#define TCP6_MSS 1024
|
||||
|
||||
#define TCP_MAXWIN 65535 /* largest value for (unscaled) window */
|
||||
#define TTCP_CLIENT_SND_WND 4096 /* dflt send window for T/TCP client */
|
||||
|
||||
#define TCP_MAX_WINSHIFT 14 /* maximum window shift */
|
||||
|
||||
#define TCP_MAXBURST 4 /* maximum segments in a burst */
|
||||
|
||||
#define TCP_MAXHLEN (0xf<<2) /* max length of header in bytes */
|
||||
#define TCP_MAXOLEN (TCP_MAXHLEN - sizeof(struct tcphdr))
|
||||
/* max space left for options */
|
||||
|
||||
/*
|
||||
* User-settable options (used with setsockopt).
|
||||
*/
|
||||
#define TCP_NODELAY 1 /* don't delay send to coalesce packets */
|
||||
#define TCP_MAXSEG 2 /* set maximum segment size */
|
||||
#define TCP_NOPUSH 3 /* don't push last block of write */
|
||||
#define TCP_KEEPIDLE 4 /* Send first keepalive probe when the connections
|
||||
been isdl this time (in seconds) */
|
||||
#define TCP_KEEPINTVL 5 /* Interval (in seconds) between keepalives */
|
||||
#define TCP_KEEPCNT 6 /* Maximum number of keepalives before dropping
|
||||
the connection */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,88 @@
|
||||
/* udp.h - udp header file */
|
||||
|
||||
/* Copyright 2001-2003 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)udp.h 8.1 (Berkeley) 6/10/93
|
||||
* $FreeBSD: src/sys/netinet/udp.h,v 1.7 1999/08/28 00:49:34 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01h,09jan12,h_x Move extern "C" after last header file include.
|
||||
01g,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01f,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01e,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01d,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01c,10jun03,vvv include netVersion.h
|
||||
01b,10sep02,hsh add c++ protection
|
||||
01a,24aug01,hsh Created from BSD 4.3
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _NETINET_UDP_H_
|
||||
#define _NETINET_UDP_H_
|
||||
|
||||
#include <netVersion.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Udp protocol header.
|
||||
* Per RFC 768, September, 1981.
|
||||
*/
|
||||
struct udphdr {
|
||||
u_short uh_sport; /* source port */
|
||||
u_short uh_dport; /* destination port */
|
||||
u_short uh_ulen; /* udp length */
|
||||
u_short uh_sum; /* udp checksum */
|
||||
};
|
||||
|
||||
/* UDPLite socket options, level IPPROTO_UDPLITE */
|
||||
#define UDPLITE_SEND_CSCOV 10 /* Number of octets that must be
|
||||
covered by the checksum.
|
||||
0 = all octets
|
||||
8 = only header
|
||||
>8 = header plus part of
|
||||
payload */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,527 @@
|
||||
/* in6.c - in6 header file */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2001-2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/* $KAME: in6.h,v 1.159 2005/03/19 07:28:59 suz Exp $ */
|
||||
/* $KAME: in6.h,v 1.155 2004/06/02 05:53:14 itojun Exp $ */
|
||||
/* $FreeBSD: src/sys/netinet6/in6.h,v 1.7.2.7 2002/08/01 19:38:50 ume Exp $ */
|
||||
/* $KAME: in6.h,v 1.89 2001/05/27 13:28:35 itojun Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the project nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)in.h 8.3 (Berkeley) 1/3/94
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
02d,01dec11,rjq Add IPV6_X_VRID
|
||||
02c,11sep08,kjn Add IPV6_PREFER_SRC_xxx flags
|
||||
02b,02jul08,kjn Add back in6addr_any and in6addr_loopback
|
||||
02a,30nov06,kch Changed ipi6_ifindex in in6_pktinfo structure from unsigned
|
||||
int to u_int32_t.
|
||||
01z,20nov06,kch Corrected comments for IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP.
|
||||
Also updated in6_addr structure declarations and macros.
|
||||
01y,27oct06,kch Restore some non-standard macros that are removed previously.
|
||||
01x,25oct06,kch Removed Kame specific non-standard macros. Added new
|
||||
IPV6_RECVSAINFO, IPV6_ADDR_PREFERENCES, IPV6_FW and
|
||||
IPV6_RECVIF socket options.
|
||||
01w,04oct06,kch Updated the values assigned to the IPV6 options. Also removed
|
||||
the unsupported IPV6CTL defines.
|
||||
01v,10sep06,kch Cleanup for IPNet integration
|
||||
01u,06aug05,dlk Added in6_pseudo() declaration.
|
||||
01t,04jun05,dlk Make inet6_opt* functions from RFCs 2292 and 3542 visible in
|
||||
user space.
|
||||
01s,31may05,tlu Added IN6_IS_ADDR_GLOBAL
|
||||
01r,09may05,kch Merged from Kame v 1.159.
|
||||
01q,19apr05,rp merged from comp_wn_ipv6_mld_interim-dev
|
||||
01p,23feb05,dlk Make functions from rthdr.c visible in user space.
|
||||
01o,07feb05,vvv _KERNEL cleanup
|
||||
01n,24jan05,vvv osdep.h cleanup
|
||||
01m,20jan05,sar Removal of divert, dummynet and fw code.
|
||||
01l,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01k,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
||||
/main/vdt/base6_itn5_networking-int/1)
|
||||
01j,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01i,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01h,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01g,27oct03,rlm update include statements post header re-org.
|
||||
01f,11aug03,nee Merging from label ACCORDION_BASE6_MERGE_BASELINE in
|
||||
accordion codeline to Base6
|
||||
01e,09may03,vvv fixed check for in.h
|
||||
01d,30apr03,syy Added #ifdef for __cplusplus
|
||||
01c,01feb03,pas merge from FreeBSD 4.7 - added faithprefix_p
|
||||
01b,30sep02,sar IFDEF out the KAME IPsec mflags
|
||||
01a,03feb02,ham changes for tornado.
|
||||
*/
|
||||
|
||||
#ifndef _NETINET_IN_H_
|
||||
#error "do not include netinet6/in6.h directly, include netinet/in.h. see RFC2553"
|
||||
#endif
|
||||
|
||||
#ifndef _NETINET6_IN6_H_
|
||||
#define _NETINET6_IN6_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Identification of the network protocol stack
|
||||
* for *BSD-current/release: http://www.kame.net/dev/cvsweb.cgi/kame/COVERAGE
|
||||
* has the table of implementation/integration differences.
|
||||
*/
|
||||
#define __KAME__
|
||||
#define __KAME_VERSION "SNAP 20050404"
|
||||
|
||||
/*
|
||||
* Local port number conventions:
|
||||
*
|
||||
* Ports < IPPORT_RESERVED are reserved for privileged processes (e.g. root),
|
||||
* unless a kernel is compiled with IPNOPRIVPORTS defined.
|
||||
*
|
||||
* When a user does a bind(2) or connect(2) with a port number of zero,
|
||||
* a non-conflicting local port address is chosen.
|
||||
*
|
||||
* The default range is IPPORT_ANONMIN to IPPORT_ANONMAX, although
|
||||
* that is settable by sysctl(3); net.inet.ip.anonportmin and
|
||||
* net.inet.ip.anonportmax respectively.
|
||||
*
|
||||
* A user may set the IPPROTO_IP option IP_PORTRANGE to change this
|
||||
* default assignment range.
|
||||
*
|
||||
* The value IP_PORTRANGE_DEFAULT causes the default behavior.
|
||||
*
|
||||
* The value IP_PORTRANGE_HIGH is the same as IP_PORTRANGE_DEFAULT,
|
||||
* and exists only for FreeBSD compatibility purposes.
|
||||
*
|
||||
* The value IP_PORTRANGE_LOW changes the range to the "low" are
|
||||
* that is (by convention) restricted to privileged processes.
|
||||
* This convention is based on "vouchsafe" principles only.
|
||||
* It is only secure if you trust the remote host to restrict these ports.
|
||||
* The range is IPPORT_RESERVEDMIN to IPPORT_RESERVEDMAX.
|
||||
*/
|
||||
|
||||
#define IPV6PORT_RESERVED 1024
|
||||
#define IPV6PORT_ANONMIN 49152
|
||||
#define IPV6PORT_ANONMAX 65535
|
||||
#define IPV6PORT_RESERVEDMIN 600
|
||||
#define IPV6PORT_RESERVEDMAX (IPV6PORT_RESERVED-1)
|
||||
|
||||
/*
|
||||
* IPv6 address
|
||||
*/
|
||||
struct in6_addr {
|
||||
union {
|
||||
u_int8_t addr8[16];
|
||||
u_int16_t addr16[8];
|
||||
u_int32_t addr32[4];
|
||||
} in6; /* 128-bit IP6 address */
|
||||
};
|
||||
|
||||
#ifndef s6_addr
|
||||
#define s6_addr in6.addr8
|
||||
#endif
|
||||
#ifdef _WRS_KERNEL /* XXX nonstandard */
|
||||
#ifndef s6_addr8
|
||||
#define s6_addr8 in6.addr8
|
||||
#endif
|
||||
#ifndef s6_addr16
|
||||
#define s6_addr16 in6.addr16
|
||||
#endif
|
||||
#ifndef s6_addr32
|
||||
#define s6_addr32 in6.addr32
|
||||
#endif
|
||||
#endif /* _WRS_KERNEL */
|
||||
|
||||
#define INET6_ADDRSTRLEN 46
|
||||
|
||||
/*
|
||||
* Socket address for IPv6
|
||||
*/
|
||||
#ifndef _XOPEN_SOURCE
|
||||
#define SIN6_LEN
|
||||
#endif
|
||||
struct sockaddr_in6 {
|
||||
u_int8_t sin6_len; /* length of this struct(sa_family_t)*/
|
||||
u_int8_t sin6_family; /* AF_INET6 (sa_family_t) */
|
||||
u_int16_t sin6_port; /* Transport layer port # (in_port_t)*/
|
||||
u_int32_t sin6_flowinfo; /* IP6 flow information */
|
||||
struct in6_addr sin6_addr; /* IP6 address */
|
||||
u_int32_t sin6_scope_id; /* scope zone index */
|
||||
};
|
||||
|
||||
/*
|
||||
* Local definition for masks
|
||||
*/
|
||||
#ifdef _WRS_KERNEL /* XXX nonstandard */
|
||||
#define IN6MASK0 {{{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }}}
|
||||
#define IN6MASK32 {{{ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, \
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}}
|
||||
#define IN6MASK64 {{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}}
|
||||
#define IN6MASK96 {{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \
|
||||
0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }}}
|
||||
#define IN6MASK128 {{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }}}
|
||||
|
||||
/*
|
||||
* Macros started with IPV6_ADDR is KAME local
|
||||
*/
|
||||
|
||||
#if _BYTE_ORDER == _BIG_ENDIAN
|
||||
#define IPV6_ADDR_INT32_ONE 1
|
||||
#define IPV6_ADDR_INT32_TWO 2
|
||||
#define IPV6_ADDR_INT32_MNL 0xff010000
|
||||
#define IPV6_ADDR_INT32_MLL 0xff020000
|
||||
#define IPV6_ADDR_INT32_SMP 0x0000ffff
|
||||
#define IPV6_ADDR_INT16_ULL 0xfe80
|
||||
#define IPV6_ADDR_INT16_USL 0xfec0
|
||||
#define IPV6_ADDR_INT16_MLL 0xff02
|
||||
#elif _BYTE_ORDER == _LITTLE_ENDIAN
|
||||
#define IPV6_ADDR_INT32_ONE 0x01000000
|
||||
#define IPV6_ADDR_INT32_TWO 0x02000000
|
||||
#define IPV6_ADDR_INT32_MNL 0x000001ff
|
||||
#define IPV6_ADDR_INT32_MLL 0x000002ff
|
||||
#define IPV6_ADDR_INT32_SMP 0xffff0000
|
||||
#define IPV6_ADDR_INT16_ULL 0x80fe
|
||||
#define IPV6_ADDR_INT16_USL 0xc0fe
|
||||
#define IPV6_ADDR_INT16_MLL 0x02ff
|
||||
#endif
|
||||
#endif /* _WRS_KERNEL */
|
||||
|
||||
/*
|
||||
* Definition of some useful macros to handle IP6 addresses
|
||||
*/
|
||||
#define IN6ADDR_ANY_INIT \
|
||||
{{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}}
|
||||
#define IN6ADDR_LOOPBACK_INIT \
|
||||
{{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}}
|
||||
#define IN6ADDR_NODELOCAL_ALLNODES_INIT \
|
||||
{{{ 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}}
|
||||
#define IN6ADDR_INTFACELOCAL_ALLNODES_INIT \
|
||||
{{{ 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}}
|
||||
#define IN6ADDR_LINKLOCAL_ALLNODES_INIT \
|
||||
{{{ 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}}
|
||||
#define IN6ADDR_LINKLOCAL_ALLROUTERS_INIT \
|
||||
{{{ 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }}}
|
||||
#ifdef MLDV2
|
||||
#define IN6ADDR_LINKLOCAL_ALLV2ROUTERS_INIT \
|
||||
{{{ 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16 }}}
|
||||
#endif
|
||||
|
||||
extern const struct in6_addr in6addr_any;
|
||||
extern const struct in6_addr in6addr_loopback;
|
||||
|
||||
/* Equality */
|
||||
|
||||
#define IN6_ARE_ADDR_EQUAL(a, b) \
|
||||
(bcmp ((char *) &(a)->s6_addr[0], (char *) &(b)->s6_addr[0], \
|
||||
sizeof(struct in6_addr)) == 0)
|
||||
|
||||
#ifdef _WRS_KERNEL /* non standard */
|
||||
#if 0
|
||||
/* see if two addresses are equal in a scope-conscious manner. */
|
||||
#define SA6_ARE_ADDR_EQUAL(a, b) \
|
||||
(((a)->sin6_scope_id == 0 || (b)->sin6_scope_id == 0 || \
|
||||
((a)->sin6_scope_id == (b)->sin6_scope_id)) && \
|
||||
(bcmp ((char *) &(a)->sin6_addr, (char *) &(b)->sin6_addr, \
|
||||
sizeof (struct in6_addr)) == 0))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Unspecified
|
||||
*/
|
||||
#define IN6_IS_ADDR_UNSPECIFIED(a) \
|
||||
((*(const u_int32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \
|
||||
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \
|
||||
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[8]) == 0) && \
|
||||
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[12]) == 0))
|
||||
|
||||
/*
|
||||
* Loopback
|
||||
*/
|
||||
#define IN6_IS_ADDR_LOOPBACK(a) \
|
||||
((*(const u_int32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \
|
||||
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \
|
||||
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[8]) == 0) && \
|
||||
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[12]) == ntohl(1)))
|
||||
|
||||
/*
|
||||
* IPv4 compatible
|
||||
*/
|
||||
#define IN6_IS_ADDR_V4COMPAT(a) \
|
||||
((*(const u_int32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \
|
||||
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \
|
||||
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[8]) == 0) && \
|
||||
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[12]) != 0) && \
|
||||
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[12]) != ntohl(1)))
|
||||
|
||||
/*
|
||||
* Mapped
|
||||
*/
|
||||
#define IN6_IS_ADDR_V4MAPPED(a) \
|
||||
((*(const u_int32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \
|
||||
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \
|
||||
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff)))
|
||||
|
||||
/*
|
||||
* KAME Scope Values
|
||||
*/
|
||||
|
||||
#ifdef _WRS_KERNEL /* XXX nonstandard */
|
||||
#define IPV6_ADDR_SCOPE_NODELOCAL 0x01
|
||||
#define IPV6_ADDR_SCOPE_INTFACELOCAL 0x01
|
||||
#define IPV6_ADDR_SCOPE_LINKLOCAL 0x02
|
||||
#define IPV6_ADDR_SCOPE_SITELOCAL 0x05
|
||||
#define IPV6_ADDR_SCOPE_ORGLOCAL 0x08 /* just used in this file */
|
||||
#define IPV6_ADDR_SCOPE_GLOBAL 0x0e
|
||||
#else
|
||||
#define __IPV6_ADDR_SCOPE_NODELOCAL 0x01
|
||||
#define __IPV6_ADDR_SCOPE_INTFACELOCAL 0x01
|
||||
#define __IPV6_ADDR_SCOPE_LINKLOCAL 0x02
|
||||
#define __IPV6_ADDR_SCOPE_SITELOCAL 0x05
|
||||
#define __IPV6_ADDR_SCOPE_ORGLOCAL 0x08 /* just used in this file */
|
||||
#define __IPV6_ADDR_SCOPE_GLOBAL 0x0e
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Unicast Scope
|
||||
* Note that we must check topmost 10 bits only, not 16 bits (see RFC2373).
|
||||
*/
|
||||
#define IN6_IS_ADDR_LINKLOCAL(a) \
|
||||
(((a)->s6_addr[0] == 0xfe) && (((a)->s6_addr[1] & 0xc0) == 0x80))
|
||||
#define IN6_IS_ADDR_SITELOCAL(a) \
|
||||
(((a)->s6_addr[0] == 0xfe) && (((a)->s6_addr[1] & 0xc0) == 0xc0))
|
||||
|
||||
/*
|
||||
* Multicast
|
||||
*/
|
||||
#define IN6_IS_ADDR_MULTICAST(a) ((a)->s6_addr[0] == 0xff)
|
||||
|
||||
/*
|
||||
* Global Scope
|
||||
*/
|
||||
#define IN6_IS_ADDR_GLOBAL(adr) \
|
||||
((!IN6_IS_ADDR_MULTICAST(adr)) && \
|
||||
(!IN6_IS_ADDR_LINKLOCAL(adr)) && \
|
||||
(!IN6_IS_ADDR_SITELOCAL(adr)))
|
||||
|
||||
#ifdef _WRS_KERNEL /* XXX nonstandard */
|
||||
#define IPV6_ADDR_MC_SCOPE(a) ((a)->s6_addr[1] & 0x0f)
|
||||
#else
|
||||
#define __IPV6_ADDR_MC_SCOPE(a) ((a)->s6_addr[1] & 0x0f)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Multicast Scope
|
||||
*/
|
||||
#ifdef _WRS_KERNEL /* refers nonstandard items */
|
||||
#define IN6_IS_ADDR_MC_NODELOCAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
(IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_NODELOCAL))
|
||||
#define IN6_IS_ADDR_MC_INTFACELOCAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
(IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_INTFACELOCAL))
|
||||
#define IN6_IS_ADDR_MC_LINKLOCAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
(IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_LINKLOCAL))
|
||||
#define IN6_IS_ADDR_MC_SITELOCAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
(IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_SITELOCAL))
|
||||
#define IN6_IS_ADDR_MC_ORGLOCAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
(IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_ORGLOCAL))
|
||||
#define IN6_IS_ADDR_MC_GLOBAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
(IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_GLOBAL))
|
||||
#else
|
||||
#define IN6_IS_ADDR_MC_NODELOCAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
(__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_NODELOCAL))
|
||||
#define IN6_IS_ADDR_MC_LINKLOCAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
(__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_LINKLOCAL))
|
||||
#define IN6_IS_ADDR_MC_SITELOCAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
(__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_SITELOCAL))
|
||||
#define IN6_IS_ADDR_MC_ORGLOCAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
(__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_ORGLOCAL))
|
||||
#define IN6_IS_ADDR_MC_GLOBAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
(__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_GLOBAL))
|
||||
#endif
|
||||
|
||||
#ifdef _WRS_KERNEL /* nonstandard */
|
||||
/*
|
||||
* KAME Scope
|
||||
*/
|
||||
#define IN6_IS_SCOPE_LINKLOCAL(a) \
|
||||
((IN6_IS_ADDR_LINKLOCAL(a)) || \
|
||||
(IN6_IS_ADDR_MC_LINKLOCAL(a)))
|
||||
|
||||
#define IFA6_IS_DEPRECATED(a) \
|
||||
((a)->ia6_lifetime.ia6t_pltime != ND6_INFINITE_LIFETIME && \
|
||||
(u_int32_t)((time_second - (a)->ia6_updatetime)) > \
|
||||
(a)->ia6_lifetime.ia6t_pltime)
|
||||
#define IFA6_IS_INVALID(a) \
|
||||
((a)->ia6_lifetime.ia6t_vltime != ND6_INFINITE_LIFETIME && \
|
||||
(u_int32_t)((time_second - (a)->ia6_updatetime)) > \
|
||||
(a)->ia6_lifetime.ia6t_vltime)
|
||||
#endif /* _WRS_KERNEL */
|
||||
|
||||
/* IP6 route structure
|
||||
*/
|
||||
#ifndef _XOPEN_SOURCE
|
||||
#include <net/route.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Options for use with [gs]etsockopt at the IPV6 level.
|
||||
* First word of comment is data type; bool is stored in int.
|
||||
*/
|
||||
#define IPV6_V6ONLY 1 /* bool; make AF_INET6 sockets v6 only */
|
||||
#define IPV6_SOCKOPT_RESERVED1 3 /* reserved for future use */
|
||||
#define IPV6_UNICAST_HOPS 4 /* int; IP6 hops */
|
||||
#define IPV6_CHECKSUM 7 /* int; checksum offset for raw socket */
|
||||
#define IPV6_MULTICAST_IF 9 /* u_int; set/get IP6 multicast i/f */
|
||||
#define IPV6_MULTICAST_HOPS 10 /* int; set/get IP6 multicast hops */
|
||||
#define IPV6_MULTICAST_LOOP 11 /* u_int; set/get IP6 multicast loopback */
|
||||
#define IPV6_JOIN_GROUP 12 /* ipv6_mreq; join a group membership */
|
||||
#define IPV6_LEAVE_GROUP 13 /* ipv6_mreq; leave a group membership */
|
||||
|
||||
#define IPV6_PKTINFO 20 /* in6_pktinfo; send if, src addr */
|
||||
#define IPV6_TCLASS 22 /* int; send traffic class value */
|
||||
#define IPV6_NEXTHOP 23 /* sockaddr; next hop addr */
|
||||
#define IPV6_RTHDR 24 /* ip6_rthdr; send routing header */
|
||||
#define IPV6_HOPOPTS 25 /* ip6_hbh; send hop-by-hop option */
|
||||
#define IPV6_DSTOPTS 26 /* ip6_dest; send dst option befor rthdr */
|
||||
|
||||
/* new socket options introduced in RFC2292bis */
|
||||
#define IPV6_RTHDRDSTOPTS 27 /* ip6_dest; send dst option before rthdr */
|
||||
#define IPV6_RECVPKTINFO 30 /* bool; recv if, dst addr */
|
||||
#define IPV6_RECVHOPLIMIT 31 /* bool; recv hop limit */
|
||||
#define IPV6_RECVTCLASS 32 /* bool; recv traffic class values */
|
||||
#define IPV6_RECVRTHDR 34 /* bool; recv routing header */
|
||||
#define IPV6_RECVHOPOPTS 35 /* bool; recv hop-by-hop option */
|
||||
#define IPV6_RECVDSTOPTS 36 /* bool; recv dst option after rthdr */
|
||||
#define IPV6_RECVSAINFO 37 /* int; get the SA information */
|
||||
#define IPV6_ADDR_PREFERENCES 38 /* int; set/get sticky address preference flags (IPV6_PREFER_SRC_xxx) */
|
||||
|
||||
#define IPV6_FW 51 /* Ipfirewall_ctrl; Firewall control */
|
||||
#define IPV6_RECVIF 100 /* int; turn "get link layer address (as a struct sockaddr_dl) */
|
||||
#define IPV6_X_SENDERLINKADDR 101 /* int; ipcom_recvmsg() returns a struct
|
||||
sockaddr_dl that will contain the link
|
||||
address of the sender */
|
||||
#define IPV6_X_VRID 103 /* Ip_u8; specify the virtual router ID as ancillary data */
|
||||
|
||||
#define IPV6_HOPLIMIT 21 /* int; send hop limit */
|
||||
|
||||
/* IPPROTO_ICMPV6 level socket options. */
|
||||
#define ICMP6_FILTER 1 /* icmp6_filter; icmp6 filter */
|
||||
|
||||
/* Flags for IPV6_ADDR_PREFERENCES option */
|
||||
#define IPV6_PREFER_SRC_HOME (1u << 0) /* Prefer Home Address as source (not implemented) */
|
||||
#define IPV6_PREFER_SRC_COA (1u << 1) /* Prefer Care-Of_address as source (not implemented) */
|
||||
#define IPV6_PREFER_SRC_TMP (1u << 2) /* Prefer Temporary address as source */
|
||||
#define IPV6_PREFER_SRC_PUBLIC (1u << 3) /* Prefer Public address as source */
|
||||
#define IPV6_PREFER_SRC_CGA (1u << 4) /* Prefer CGA address as source */
|
||||
#define IPV6_PREFER_SRC_NONCGA (1u << 5) /* Prefer a non-CGA address as source (not implemented) */
|
||||
#define IPV6_PREFER_SRC_LARGESCOPE (1u << 6) /* Prefer larger scope source */
|
||||
#define IPV6_PREFER_SRC_SMALLSCOPE (1u << 7) /* Prefer smaller scope source */
|
||||
|
||||
/*
|
||||
* Argument structure for IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP.
|
||||
*/
|
||||
struct ipv6_mreq {
|
||||
struct in6_addr ipv6mr_multiaddr; /* IPv6 multicast addr */
|
||||
unsigned int ipv6mr_interface; /* interface index, or 0 */
|
||||
};
|
||||
|
||||
/*
|
||||
* IPV6_PKTINFO: Packet information(RFC2292 sec 5)
|
||||
*/
|
||||
struct in6_pktinfo {
|
||||
struct in6_addr ipi6_addr; /* src/dst IPv6 address */
|
||||
u_int32_t ipi6_ifindex; /* send/recv interface index */
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !_NETINET6_IN6_H_ */
|
||||
@@ -0,0 +1,168 @@
|
||||
/* in6_var.h - IPv6 interface definitions */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2001-2005 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/* $KAME: in6_var.h,v 1.107 2005/03/14 08:53:36 suz Exp $ */
|
||||
/* $KAME: in6_var.h,v 1.103 2004/08/17 10:18:58 jinmei Exp $ */
|
||||
/* $FreeBSD: src/sys/netinet6/in6_var.h,v 1.3.2.3 2002/04/28 05:40:27 suz Exp $ */
|
||||
/* $KAME: in6_var.h,v 1.56 2001/03/29 05:34:31 itojun Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the project nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 1985, 1986, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)in_var.h 8.1 (Berkeley) 6/10/93
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01r,09jan12,h_x Move extern "C" after last header file include.
|
||||
01q,30nov06,kch Cleanup for IPNet integration.
|
||||
01p,25jun05,dlk Add ip6intrqJob declaration.
|
||||
01o,20jun05,kch Do not guard IN6_IFF_HOME and IN6_IFF_DEREGISTERING defines
|
||||
with MIP6 build flag.
|
||||
01n,24may05,vvv updated for Kame merge
|
||||
01m,13may05,nee Add a IPv6 address flag IN6_IFF_SUBNETANYCAST.
|
||||
01o,10may05,kch Merged from Kame v 1.107.
|
||||
01n,28apr05,kch Moved addrsel_policyent structure definition here from
|
||||
in6_src.c.
|
||||
01m,20apr05,kch Merged from comp_wn_ipv6_mld_interim-dev branch.
|
||||
01l,16mar05,nee Add SIOCSIFINFO_IN6
|
||||
01k,07feb05,vvv _KERNEL cleanup
|
||||
01j,25jan05,vvv fixed bitfield definitions (SPR #92171)
|
||||
01i,21nov03,vvv protected in6_prflags and in6_rrenumreq structures with INET6
|
||||
01h,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01g,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01f,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01e,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01d,12aug03,nee Merging from label ACCORDION_BASE6_MERGE_BASELINE in
|
||||
accordion codeline to Base6
|
||||
01c,10jun03,vvv include netVersion.h
|
||||
01b,30apr03,syy Added #ifdef for __cplusplus
|
||||
01a,24jun02,ism created new structure to hold the IPv6 MIB information
|
||||
*/
|
||||
|
||||
#ifndef _NETINET6_IN6_VAR_H_
|
||||
#define _NETINET6_IN6_VAR_H_
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
#include <net/if_var.h> /* needed for struct ifaddr */
|
||||
#else
|
||||
#include <net/if.h> /* needed for IFNAMSIZ */
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* pltime/vltime are just for future reference (required to implements 2
|
||||
* hour rule for hosts). they should never be modified by nd6_timeout or
|
||||
* anywhere else.
|
||||
* userland -> kernel: accept pltime/vltime
|
||||
* kernel -> userland: throw up everything
|
||||
* in kernel: modify preferred/expire only
|
||||
*/
|
||||
struct in6_addrlifetime {
|
||||
time_t ia6t_expire; /* valid lifetime expiration time */
|
||||
time_t ia6t_preferred; /* preferred lifetime expiration time */
|
||||
u_int32_t ia6t_vltime; /* valid lifetime */
|
||||
u_int32_t ia6t_pltime; /* prefix lifetime */
|
||||
};
|
||||
|
||||
struct in6_ifreq {
|
||||
char ifr_name[IFNAMSIZ]; /* if name, e.g. "eth0" */
|
||||
union {
|
||||
struct sockaddr_in6 ifru_addr; /* address */
|
||||
struct sockaddr_in6 ifru_dstaddr; /* other end of p-to-p link */
|
||||
unsigned ifru_prefixlen; /* address prefix length */
|
||||
} ifr_ifru;
|
||||
};
|
||||
|
||||
struct in6_aliasreq {
|
||||
char ifra_name[IFNAMSIZ];
|
||||
struct sockaddr_in6 ifra_addr; /* The address to set */
|
||||
struct sockaddr_in6 ifra_dstaddr; /* Peer address for PPP interfaces */
|
||||
struct sockaddr_in6 ifra_prefixmask; /* Mask to get the nework ID */
|
||||
int ifra_flags; /* IN6_IFF_xxx flags */
|
||||
struct in6_addrlifetime ifra_lifetime;
|
||||
};
|
||||
|
||||
|
||||
#define IN6_IFF_TEMPORARY 0x01 /* temporary (anonymous) address. */
|
||||
#define IN6_IFF_TENTATIVE 0x02 /* tentative address */
|
||||
#define IN6_IFF_HOMEADDRESS 0x04 /* MIP6 home address */
|
||||
#define IN6_IFF_DEPRECATED 0x08 /* deprecated address */
|
||||
#define IN6_IFF_AUTOMATIC 0x10 /* create automatically by IPNET */
|
||||
#define IN6_IFF_AUTONOMOUS 0x20 /* create based on prefix adv */
|
||||
#define IN6_IFF_ANYCAST 0x40 /* anycast address */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _NETINET6_IN6_VAR_H_ */
|
||||
@@ -0,0 +1,339 @@
|
||||
/* ip6.h - IPv6 protocol definitions */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2001-2005 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/* $FreeBSD: src/sys/netinet/ip6.h,v 1.2.2.2 2001/07/03 11:01:46 ume Exp $ */
|
||||
/* $KAME: ip6.h,v 1.18 2001/03/29 05:34:30 itojun Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the project nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)ip.h 8.1 (Berkeley) 6/10/93
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01m,09jan12,h_x Move extern "C" after last header file include.
|
||||
01l,25oct06,kch Removed unused coreip specific IP6_EXTHDR macros.
|
||||
01k,21jun05,dlk Improve IP6_EXTHDR_CHECK() macro.
|
||||
01j,03may05,rp removed __attribute__((__packed__))
|
||||
01i,19apr05,rp merged from comp_wn_ipv6_mld_interim-dev
|
||||
01h,07feb05,vvv _KERNEL cleanup
|
||||
01g,14jan05,vvv osdep.h cleanup
|
||||
01f,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01e,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01d,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01c,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01b,11aug03,nee Merging from label ACCORDION_BASE6_MERGE_BASELINE in
|
||||
accordion codeline to Base6
|
||||
01b,17feb02,pas EAR code cleanup
|
||||
01a,01sep01,qli created
|
||||
*/
|
||||
|
||||
#ifndef _NETINET_IP6_H_
|
||||
#define _NETINET_IP6_H_
|
||||
|
||||
#include <netVersion.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Definition for internet protocol version 6.
|
||||
* RFC 2460
|
||||
*/
|
||||
|
||||
struct ip6_hdr {
|
||||
union {
|
||||
struct ip6_hdrctl {
|
||||
u_int32_t ip6_un1_flow; /* 20 bits of flow-ID */
|
||||
u_int16_t ip6_un1_plen; /* payload length */
|
||||
u_int8_t ip6_un1_nxt; /* next header */
|
||||
u_int8_t ip6_un1_hlim; /* hop limit */
|
||||
} ip6_un1;
|
||||
u_int8_t ip6_un2_vfc; /* 4 bits version, top 4 bits class */
|
||||
} ip6_ctlun;
|
||||
struct in6_addr ip6_src; /* source address */
|
||||
struct in6_addr ip6_dst; /* destination address */
|
||||
};
|
||||
|
||||
#define ip6_vfc ip6_ctlun.ip6_un2_vfc
|
||||
#define ip6_flow ip6_ctlun.ip6_un1.ip6_un1_flow
|
||||
#define ip6_plen ip6_ctlun.ip6_un1.ip6_un1_plen
|
||||
#define ip6_nxt ip6_ctlun.ip6_un1.ip6_un1_nxt
|
||||
#define ip6_hlim ip6_ctlun.ip6_un1.ip6_un1_hlim
|
||||
#define ip6_hops ip6_ctlun.ip6_un1.ip6_un1_hlim
|
||||
|
||||
#define IPV6_VERSION 0x60
|
||||
#define IPV6_VERSION_MASK 0xf0
|
||||
|
||||
#if _BYTE_ORDER == _BIG_ENDIAN
|
||||
#define IPV6_FLOWINFO_MASK 0x0fffffff /* flow info (28 bits) */
|
||||
#define IPV6_FLOWLABEL_MASK 0x000fffff /* flow label (20 bits) */
|
||||
#else
|
||||
#if _BYTE_ORDER == _LITTLE_ENDIAN
|
||||
#define IPV6_FLOWINFO_MASK 0xffffff0f /* flow info (28 bits) */
|
||||
#define IPV6_FLOWLABEL_MASK 0xffff0f00 /* flow label (20 bits) */
|
||||
#endif /* LITTLE_ENDIAN */
|
||||
#endif
|
||||
#if 1
|
||||
/* ECN bits proposed by Sally Floyd */
|
||||
#define IP6TOS_CE 0x01 /* congestion experienced */
|
||||
#define IP6TOS_ECT 0x02 /* ECN-capable transport */
|
||||
#endif
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
/*
|
||||
* for IPv6 pseudo header checksum
|
||||
* XXX nonstandard
|
||||
*/
|
||||
struct ip6_hdr_pseudo {
|
||||
struct in6_addr ip6ph_src;
|
||||
struct in6_addr ip6ph_dst;
|
||||
u_int32_t ip6ph_len;
|
||||
u_int8_t ip6ph_zero[3];
|
||||
u_int8_t ip6ph_nxt;
|
||||
};
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Extension Headers
|
||||
*/
|
||||
|
||||
struct ip6_ext {
|
||||
u_int8_t ip6e_nxt;
|
||||
u_int8_t ip6e_len;
|
||||
};
|
||||
|
||||
/* Hop-by-Hop options header */
|
||||
/* XXX should we pad it to force alignment on an 8-byte boundary? */
|
||||
struct ip6_hbh {
|
||||
u_int8_t ip6h_nxt; /* next header */
|
||||
u_int8_t ip6h_len; /* length in units of 8 octets */
|
||||
/* followed by options */
|
||||
};
|
||||
|
||||
/* Destination options header */
|
||||
/* XXX should we pad it to force alignment on an 8-byte boundary? */
|
||||
struct ip6_dest {
|
||||
u_int8_t ip6d_nxt; /* next header */
|
||||
u_int8_t ip6d_len; /* length in units of 8 octets */
|
||||
/* followed by options */
|
||||
};
|
||||
|
||||
/* Option types and related macros */
|
||||
#define IP6OPT_PAD1 0x00 /* 00 0 00000 */
|
||||
#define IP6OPT_PADN 0x01 /* 00 0 00001 */
|
||||
#define IP6OPT_JUMBO 0xC2 /* 11 0 00010 = 194 */
|
||||
#define IP6OPT_NSAP_ADDR 0xC3 /* 11 0 00011 */
|
||||
#define IP6OPT_TUNNEL_LIMIT 0x04 /* 00 0 00100 */
|
||||
#ifndef _WRS_KERNEL
|
||||
#define IP6OPT_RTALERT 0x05 /* 00 0 00101 (KAME definition) */
|
||||
#endif
|
||||
#define IP6OPT_ROUTER_ALERT 0x05 /* 00 0 00101 (RFC3542, recommended) */
|
||||
|
||||
#define IP6OPT_RTALERT_LEN 4
|
||||
#define IP6OPT_RTALERT_MLD 0 /* Datagram contains an MLD message */
|
||||
#define IP6OPT_RTALERT_RSVP 1 /* Datagram contains an RSVP message */
|
||||
#define IP6OPT_RTALERT_ACTNET 2 /* contains an Active Networks msg */
|
||||
#define IP6OPT_MINLEN 2
|
||||
|
||||
#define IP6OPT_HOME_ADDRESS 0xc9 /* 11 0 01001 */
|
||||
#define IP6OPT_EID 0x8a /* 10 0 01010 */
|
||||
|
||||
#define IP6OPT_TYPE(o) ((o) & 0xC0)
|
||||
#define IP6OPT_TYPE_SKIP 0x00
|
||||
#define IP6OPT_TYPE_DISCARD 0x40
|
||||
#define IP6OPT_TYPE_FORCEICMP 0x80
|
||||
#define IP6OPT_TYPE_ICMP 0xC0
|
||||
|
||||
#define IP6OPT_MUTABLE 0x20
|
||||
|
||||
/* IPv6 options: common part */
|
||||
struct ip6_opt {
|
||||
u_int8_t ip6o_type;
|
||||
u_int8_t ip6o_len;
|
||||
};
|
||||
|
||||
/* Jumbo Payload Option */
|
||||
struct ip6_opt_jumbo {
|
||||
u_int8_t ip6oj_type;
|
||||
u_int8_t ip6oj_len;
|
||||
u_int8_t ip6oj_jumbo_len[4];
|
||||
};
|
||||
#define IP6OPT_JUMBO_LEN 6
|
||||
|
||||
/* NSAP Address Option */
|
||||
struct ip6_opt_nsap {
|
||||
u_int8_t ip6on_type;
|
||||
u_int8_t ip6on_len;
|
||||
u_int8_t ip6on_src_nsap_len;
|
||||
u_int8_t ip6on_dst_nsap_len;
|
||||
/* followed by source NSAP */
|
||||
/* followed by destination NSAP */
|
||||
};
|
||||
|
||||
/* Tunnel Limit Option */
|
||||
struct ip6_opt_tunnel {
|
||||
u_int8_t ip6ot_type;
|
||||
u_int8_t ip6ot_len;
|
||||
u_int8_t ip6ot_encap_limit;
|
||||
};
|
||||
|
||||
/* Router Alert Option */
|
||||
struct ip6_opt_router {
|
||||
u_int8_t ip6or_type;
|
||||
u_int8_t ip6or_len;
|
||||
u_int8_t ip6or_value[2];
|
||||
};
|
||||
/* Router alert values (in network byte order) */
|
||||
#if _BYTE_ORDER == _BIG_ENDIAN
|
||||
#define IP6_ALERT_MLD 0x0000
|
||||
#define IP6_ALERT_RSVP 0x0001
|
||||
#define IP6_ALERT_AN 0x0002
|
||||
#else
|
||||
#if _BYTE_ORDER == _LITTLE_ENDIAN
|
||||
#define IP6_ALERT_MLD 0x0000
|
||||
#define IP6_ALERT_RSVP 0x0100
|
||||
#define IP6_ALERT_AN 0x0200
|
||||
#endif /* LITTLE_ENDIAN */
|
||||
#endif
|
||||
|
||||
/* Home Address Option */
|
||||
struct ip6_opt_home_address {
|
||||
u_int8_t ip6oh_type;
|
||||
u_int8_t ip6oh_len;
|
||||
u_int8_t ip6oh_addr[16];/* Home Address */
|
||||
/* followed by sub-options */
|
||||
};
|
||||
|
||||
/* Routing header */
|
||||
struct ip6_rthdr {
|
||||
u_int8_t ip6r_nxt; /* next header */
|
||||
u_int8_t ip6r_len; /* length in units of 8 octets */
|
||||
u_int8_t ip6r_type; /* routing type */
|
||||
u_int8_t ip6r_segleft; /* segments left */
|
||||
/* followed by routing type specific data */
|
||||
};
|
||||
|
||||
/* Type 0 Routing header */
|
||||
struct ip6_rthdr0 {
|
||||
u_int8_t ip6r0_nxt; /* next header */
|
||||
u_int8_t ip6r0_len; /* length in units of 8 octets */
|
||||
u_int8_t ip6r0_type; /* always zero */
|
||||
u_int8_t ip6r0_segleft; /* segments left */
|
||||
u_int32_t ip6r0_reserved; /* reserved field */
|
||||
/* followed by up to 127 struct in6_addr */
|
||||
};
|
||||
|
||||
/* Type 2 Routing header for Mobile IPv6 */
|
||||
struct ip6_rthdr2 {
|
||||
u_int8_t ip6r2_nxt; /* next header */
|
||||
u_int8_t ip6r2_len; /* always 2 */
|
||||
u_int8_t ip6r2_type; /* always 2 */
|
||||
u_int8_t ip6r2_segleft; /* 0 or 1 */
|
||||
u_int32_t ip6r2_reserved; /* reserved field */
|
||||
struct in6_addr ip6r2_home; /* home address */
|
||||
};
|
||||
|
||||
/* Fragment header */
|
||||
struct ip6_frag {
|
||||
u_int8_t ip6f_nxt; /* next header */
|
||||
u_int8_t ip6f_reserved; /* reserved field */
|
||||
u_int16_t ip6f_offlg; /* offset, reserved, and flag */
|
||||
u_int32_t ip6f_ident; /* identification */
|
||||
};
|
||||
|
||||
#if _BYTE_ORDER == _BIG_ENDIAN
|
||||
#define IP6F_OFF_MASK 0xfff8 /* mask out offset from _offlg */
|
||||
#define IP6F_RESERVED_MASK 0x0006 /* reserved bits in ip6f_offlg */
|
||||
#define IP6F_MORE_FRAG 0x0001 /* more-fragments flag */
|
||||
#else /* BYTE_ORDER == LITTLE_ENDIAN */
|
||||
#define IP6F_OFF_MASK 0xf8ff /* mask out offset from _offlg */
|
||||
#define IP6F_RESERVED_MASK 0x0600 /* reserved bits in ip6f_offlg */
|
||||
#define IP6F_MORE_FRAG 0x0100 /* more-fragments flag */
|
||||
#endif /* BYTE_ORDER == LITTLE_ENDIAN */
|
||||
|
||||
/*
|
||||
* Internet implementation parameters.
|
||||
*/
|
||||
#define IPV6_MAXHLIM 255 /* maximum hoplimit */
|
||||
#define IPV6_DEFHLIM 64 /* default hlim */
|
||||
#define IPV6_FRAGTTL 120 /* ttl for fragment packets, in slowtimo tick */
|
||||
#define IPV6_HLIMDEC 1 /* subtracted when forwarding */
|
||||
|
||||
#define IPV6_MMTU 1280 /* minimal MTU and reassembly. 1024 + 256 */
|
||||
#define IPV6_MAXPACKET 65535 /* ip6 max packet size without Jumbo payload*/
|
||||
#define IPV6_MAXOPTHDR 2048 /* max option header size, 256 64-bit words */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* not _NETINET_IP6_H_ */
|
||||
@@ -0,0 +1,174 @@
|
||||
/* ip6_mroute.h - IPv6 mroute header file */
|
||||
|
||||
/* $KAME: ip6_mroute.h,v 1.29 2004/05/21 08:17:58 itojun Exp $ */
|
||||
/* $FreeBSD: src/sys/netinet6/ip6_mroute.h,v 1.2.2.3 2002/04/28 05:40:27 suz Exp $ */
|
||||
/* $KAME: ip6_mroute.h,v 1.19 2001/06/14 06:12:55 suz Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2001-2007 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (C) 1998 WIDE Project.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the project nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/* BSDI ip_mroute.h,v 2.5 1996/10/11 16:01:48 pjd Exp */
|
||||
|
||||
/*
|
||||
* Definitions for IP multicast forwarding.
|
||||
*
|
||||
* Written by David Waitzman, BBN Labs, August 1988.
|
||||
* Modified by Steve Deering, Stanford, February 1989.
|
||||
* Modified by Ajit Thyagarajan, PARC, August 1993.
|
||||
* Modified by Ajit Thyagarajan, PARC, August 1994.
|
||||
* Modified by Ahmed Helmy, USC, September 1996.
|
||||
*
|
||||
* MROUTING Revision: 1.2
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01i,09jan12,h_x Move extern "C" after last header file include.
|
||||
01h,12jul07,kch Re-integrated to support multicast forwarding for IPNET
|
||||
(WIND00102340).
|
||||
01g,20may05,kch Redefined cfg_privInitSysctl as function pointer. Moved
|
||||
ip6MrouteSysctlInit() prototype to sysctlLib.h.
|
||||
01f,26apr05,kch Allow ip6 mrouter to be scaled out.
|
||||
01e,19apr05,rp merged from comp_wn_ipv6_mld_interim-dev
|
||||
01d,28jan05,kc Redefined IF_COPY and IF_ZERO macros.
|
||||
01c,28dec04,kc Added ipm6_config_params structure. Also added
|
||||
ip6MrouteSysctlInit() prototype.
|
||||
01b,23dec04,kc Added pim6_input() and ip6MrouterInstInit() prototypes.
|
||||
01a,08dec04,kc Integrated Kame changes.
|
||||
*/
|
||||
|
||||
#ifndef _NETINET6_IP6_MROUTE_H_
|
||||
#define _NETINET6_IP6_MROUTE_H_
|
||||
|
||||
#include <netinet6/in6.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Multicast Routing set/getsockopt commands.
|
||||
*/
|
||||
#define MRT6_BASE 0x60000000
|
||||
|
||||
#define MRT6_INIT (MRT6_BASE + 0) /* initialize mrouted */
|
||||
#define MRT6_DONE (MRT6_BASE + 1) /* shut down mrouted */
|
||||
#define MRT6_ADD_MIF (MRT6_BASE + 2) /* add multicast interface */
|
||||
#define MRT6_DEL_MIF (MRT6_BASE + 3) /* delete multicast interface */
|
||||
#define MRT6_ADD_MFC (MRT6_BASE + 4) /* add forwarding cache entry */
|
||||
#define MRT6_DEL_MFC (MRT6_BASE + 5) /* delete forwarding cache entry */
|
||||
#define MRT6_PIM (MRT6_BASE + 6) /* enable pim code */
|
||||
|
||||
/*
|
||||
* Types and macros for handling bitmaps with one bit per multicast interface.
|
||||
*/
|
||||
typedef u_short mifi_t; /* type of a mif index */
|
||||
#define MAXMIFS 64 /* Maximum number of multicast interfaces */
|
||||
|
||||
#ifndef IF_SETSIZE
|
||||
#define IF_SETSIZE 256
|
||||
#endif
|
||||
|
||||
typedef u_int32_t if_mask;
|
||||
#define NIFBITS (sizeof(if_mask) * 8) /* bits per mask */
|
||||
|
||||
typedef struct if_set {
|
||||
if_mask ifs_bits[(((IF_SETSIZE)+((NIFBITS)-1))/(NIFBITS))];
|
||||
} if_set;
|
||||
|
||||
/* Macros to operate on the mf6cc_ifset bit array */
|
||||
#define IF_SET(n, p) \
|
||||
((p)->ifs_bits[(n)/NIFBITS] |= (1 << ((n) % NIFBITS)))
|
||||
#define IF_CLR(n, p) \
|
||||
((p)->ifs_bits[(n)/NIFBITS] &= ~(1 << ((n) % NIFBITS)))
|
||||
#define IF_ISSET(n, p) \
|
||||
((p)->ifs_bits[(n)/NIFBITS] & (1 << ((n) % NIFBITS)))
|
||||
#define IF_COPY(f, t) bcopy(f, t, sizeof(struct if_set))
|
||||
#define IF_ZERO(p) bzero(p, sizeof(struct if_set))
|
||||
|
||||
/*
|
||||
* Argument structure for MRT6_ADD_MIF and MRT6_DEL_MIF.
|
||||
*/
|
||||
struct mif6ctl {
|
||||
mifi_t mif6c_mifi; /* the index of the mif to be added */
|
||||
u_char mif6c_flags; /* MIFF_ flags defined below */
|
||||
u_short mif6c_pifi; /* the index of the physical IF */
|
||||
};
|
||||
|
||||
#define MIFF_REGISTER 0x1 /* mif represents a register end-point */
|
||||
|
||||
/*
|
||||
* Argument structure for MRT6_ADD_MFC and MRT6_DEL_MFC
|
||||
*/
|
||||
struct mf6cctl {
|
||||
struct sockaddr_in6 mf6cc_origin; /* IPv6 origin of mcasts */
|
||||
struct sockaddr_in6 mf6cc_mcastgrp; /* multicast group associated */
|
||||
mifi_t mf6cc_parent; /* incoming ifindex */
|
||||
struct if_set mf6cc_ifset; /* set of forwarding ifs */
|
||||
};
|
||||
|
||||
/*
|
||||
* Argument structure for SIOCGETSGCNT_IN6
|
||||
* Used by a multicast routing daemon to get src-grp packet counts
|
||||
*/
|
||||
struct sioc_sg_req6 {
|
||||
struct sockaddr_in6 src; /* Source address */
|
||||
struct sockaddr_in6 grp; /* Multicast group address */
|
||||
u_int64_t pktcnt; /* No of packets routed */
|
||||
u_int64_t bytecnt; /* No of bytes routed */
|
||||
u_int64_t wrong_if; /* No of packets arrived on wrong interface */
|
||||
};
|
||||
|
||||
/*
|
||||
* Argument structure for SIOCGETMIFCNT_IN6
|
||||
* Used by a multicast routing daemon to get multicast interface packet
|
||||
* counts.
|
||||
*/
|
||||
struct sioc_mif_req6 {
|
||||
mifi_t mifi; /* mif number */
|
||||
u_int64_t icount; /* Input packet count */
|
||||
u_int64_t ocount; /* Output packet count */
|
||||
u_int64_t ibytes; /* Input byte count */
|
||||
u_int64_t obytes; /* Output byte count */
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !_NETINET6_IP6_MROUTE_H_ */
|
||||
@@ -0,0 +1,39 @@
|
||||
/* pathUtilLib.h - path utility library header file */
|
||||
|
||||
/* Copyright 2004 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01c,09jan12,h_x Move extern "C" after last header file include.
|
||||
01b,07jan05,syy Fixed compile error for RTP
|
||||
01a,14dec04,syy written.
|
||||
*/
|
||||
|
||||
#ifndef __INCpathUtilLibh
|
||||
#define __INCpathUtilLibh
|
||||
|
||||
/* includes */
|
||||
#include <vxWorks.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* function declarations */
|
||||
|
||||
extern STATUS pathUtilBuild (const char ** nameArray, char ** nameArrayEnd,
|
||||
char *destString);
|
||||
extern STATUS pathUtilCat (const char *dirName, const char *fileName,
|
||||
char *result);
|
||||
extern void pathUtilCondense (char *pathName);
|
||||
extern void pathUtilParse (const char *longName, char ** nameArray,
|
||||
char *nameBuf);
|
||||
extern void pathUtilArrayReduce (char **nameArray);
|
||||
extern BOOL pathUtilIsSubDir (const char *s1, const char *s2);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCpathUtilLibh */
|
||||
@@ -0,0 +1,42 @@
|
||||
/* ping6Lib.h - Packet InterNet Grouper (PING) library header */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2001-2003,2005-2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01i,27jul06,kch Removed unsupported ping6LibInit() and ping6Parse()
|
||||
prototypes.
|
||||
01h,23feb05,dlk Added ping6Parse() function prototype.
|
||||
01g,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01f,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01e,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01d,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01c,10jun03,vvv include netVersion.h
|
||||
01b,01mar02,ant added ping6LibInit
|
||||
01a,14sep01,ant written
|
||||
|
||||
*/
|
||||
|
||||
#ifndef __INCping6Libh
|
||||
#define __INCping6Libh
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* function declarations */
|
||||
|
||||
extern STATUS ping6 (char *, int);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCping6Libh */
|
||||
@@ -0,0 +1,118 @@
|
||||
/* pingLib.h - Packet InterNet Grouper (PING) library header */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994-2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01o,09jan12,h_x Move extern "C" after last header file include.
|
||||
01n,26oct06,tkf Restore removed structures (needed by pingLib.c for user side
|
||||
build).
|
||||
01m,20sep06,tlu Restore some header file, constant and type definitions
|
||||
01l,03aug06,kch Cleanup for IPNet stack. Changed PING_TMO from 5 to 1 sec.
|
||||
01k,07feb05,vvv _KERNEL cleanup
|
||||
01j,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01j,T14ov03,asr Changes for porting ping to RTP
|
||||
01i,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01h,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01g,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01f,15may03,spm Tornado 2.2 FCS merge (SPR #73570; ver 01d,12mar02,rae:
|
||||
TOR2_2-FCS-COPY label, tor2 branch, /wind/river VOB)
|
||||
01e,09may03,vvv included ip_icmp.h
|
||||
01d,25jul02,ant definitions ICMP_PROTO and ICMP_TYPENUM removed
|
||||
01c,03may02,ant u_char bufTx [PING_MAXPACKET] in the struct PING_STAT changed
|
||||
to u_char *bufTx. It is allocated dynamically now. Receive
|
||||
buffer u_char bufRx[PING_MAXPACKET] changed in the same way.
|
||||
New member int timing defined in the struct PING_STAT.
|
||||
PING_MAXPACKET increased to 65536.
|
||||
01b,14jan00,ham changed PING_STAT for PD support.
|
||||
01a,25oct94,dzb written.
|
||||
*/
|
||||
|
||||
#ifndef __INCpingLibh
|
||||
#define __INCpingLibh
|
||||
|
||||
/* includes */
|
||||
#include <vxWorks.h>
|
||||
#include <netinet/ip_icmp.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* defines */
|
||||
|
||||
#define PING_MAXPACKET 65536 /* max packet size */
|
||||
#define PING_INTERVAL 1 /* default packet interval in seconds */
|
||||
#define PING_TMO 1 /* default packet timeout in seconds */
|
||||
|
||||
#ifndef MAXHOSTNAMELEN
|
||||
#define MAXHOSTNAMELEN 64
|
||||
#endif
|
||||
|
||||
#ifndef INET_ADDR_LEN
|
||||
#define INET_ADDR_LEN 18
|
||||
#endif
|
||||
|
||||
/* status codes */
|
||||
|
||||
#define S_pingLib_NOT_INITIALIZED (M_pingLib | 1)
|
||||
#define S_pingLib_TIMEOUT (M_pingLib | 2)
|
||||
|
||||
|
||||
/* flags */
|
||||
|
||||
#define PING_OPT_SILENT 0x1 /* work silently */
|
||||
#define PING_OPT_DONTROUTE 0x2 /* dont route option */
|
||||
#define PING_OPT_DEBUG 0x4 /* print debugging messages */
|
||||
#define PING_OPT_NOHOST 0x8 /* suppress host lookup [ANT] */
|
||||
|
||||
/* typedefs */
|
||||
|
||||
typedef struct pingStat /* PING_STAT */
|
||||
{
|
||||
struct pingStat * statNext; /* next struct in list */
|
||||
int pingFd; /* socket file descriptor */
|
||||
char toHostName [MAXHOSTNAMELEN + 2];/* name to ping */
|
||||
char toInetName [INET_ADDR_LEN];/* IP addr to ping */
|
||||
u_char *bufTx; /* transmit buffer */
|
||||
u_char *bufRx; /* receive buffer */
|
||||
struct icmp * pBufIcmp; /* ptr to icmp */
|
||||
ulong_t * pBufTime; /* ptr to time */
|
||||
int dataLen; /* size of data portion */
|
||||
int numPacket; /* total # of packets to send */
|
||||
int numTx; /* number of packets sent */
|
||||
int numRx; /* number of packets received */
|
||||
int idRx; /* id of Rx task */
|
||||
int clkTick; /* sys clock ticks per second */
|
||||
int tMin; /* min RT time (ms) */
|
||||
int tMax; /* max RT time (ms) */
|
||||
int tSum; /* sum of all times */
|
||||
int flags; /* option flags */
|
||||
int timing; /* flag to do timing */
|
||||
} PING_STAT;
|
||||
|
||||
|
||||
/* forward declarations */
|
||||
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
|
||||
extern STATUS ping (char *host, int numPackets, ulong_t options);
|
||||
|
||||
#else /* __STDC__ */
|
||||
|
||||
extern STATUS ping ();
|
||||
|
||||
#endif /* __STDC__ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCpingLibh */
|
||||
@@ -0,0 +1,38 @@
|
||||
/* ftpLibP.h - private header for ftpLib */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1992, 2002-2003, 2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01h,09jan12,h_x Move extern "C" after last header file include.
|
||||
01g,16feb06,mwv Remove ftpLs(), but keep this file for
|
||||
backward compatibility
|
||||
01f,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01e,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01d,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01c,14feb02,ant added routines ftpUserPassSet, ftpUserPassPrint
|
||||
01b,22sep92,rrr added support for c++
|
||||
01a,20sep92,kdl written.
|
||||
*/
|
||||
|
||||
#ifndef __INCftpLibPh
|
||||
#define __INCftpLibPh
|
||||
|
||||
#include <ftpLib.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCftpLibPh */
|
||||
@@ -0,0 +1,79 @@
|
||||
/* hostLibInt.h - private header for hostLib files */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2001-2005 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01h,09may05,vvv updated ip6_str2scopeid() prototype
|
||||
01g,05dec03,vvv moved HOST_LIST_* definitions from hostLib.c
|
||||
01f,24nov03,vvv updated for RTP support
|
||||
01e,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01d,08sep03,vvv merged from ACCORDION_BASE6_MERGE_BASELINE
|
||||
01c,21mar03,ann moved the definition of _hostconf and MAXHOSTCONF from
|
||||
name6.c
|
||||
01b,21jan02,ann adding the prototypes for gethostbyname, gethostbyaddr,
|
||||
hostentAlloc and hostentFree
|
||||
01a,19sep01,hgo creation
|
||||
*/
|
||||
|
||||
#ifndef __INChostLibInth
|
||||
#define __INChostLibInth
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Structure definitions */
|
||||
|
||||
struct _hostconf {
|
||||
FUNCPTR hostGetByAddr;
|
||||
FUNCPTR dnsGetByAddr;
|
||||
};
|
||||
|
||||
#define HOST_LIST_SIZE 1
|
||||
#define HOST_LIST_BUF 2
|
||||
|
||||
/* function declarations */
|
||||
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
|
||||
/* external functions that are shared within hostLib */
|
||||
|
||||
extern struct addrinfo *hostTblSearchByName2 (char *name, const struct addrinfo *hints);
|
||||
extern struct hostent *hostTblSearchByAddr2 (const void *addr, int af);
|
||||
extern struct hostent *getipnodebyaddr (const void *src, size_t len, int af, int *errp);
|
||||
#ifdef INET6
|
||||
extern int ip6_str2scopeid (char *scope, struct sockaddr_in6 *sin6, u_int32_t *);
|
||||
#endif
|
||||
extern struct hostent * _hpcopy (struct hostent * hp);
|
||||
|
||||
extern struct netent *getnetbyname (const char *name);
|
||||
|
||||
#else /* __STDC__ */
|
||||
|
||||
extern struct addrinfo *hostTblSearchByName2 ();
|
||||
extern struct hostent *hostTblSearchByAddr2 ();
|
||||
extern struct hostent *getipnodebyaddr ();
|
||||
#ifdef INET6
|
||||
extern int ip6_str2scopeid ();
|
||||
#endif
|
||||
extern struct hostent *_hpcopy ();
|
||||
|
||||
extern struct netent *getnetbyname ();
|
||||
|
||||
#endif /* __STDC__ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INChostLibInth */
|
||||
@@ -0,0 +1,133 @@
|
||||
/* qosIngressLibP.h - private definitions for qos support on ingress */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2005 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01b,08sep05,niq Code review changes + enhanced statistics gathering
|
||||
01a,09aug05 niq created.
|
||||
*/
|
||||
|
||||
#ifndef __INCqosIngressLibPh
|
||||
#define __INCqosIngressLibPh
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define QOS_MAX_PRI 31 /* Maximum QOS priority */
|
||||
|
||||
/*
|
||||
* Structure defining a queue for queuing packets for qos processing
|
||||
* Each queue contains packets having the same priority.
|
||||
* We have a array of 32 qos queues that allow 32 different priority
|
||||
* queues.
|
||||
*/
|
||||
struct qosqueue
|
||||
{
|
||||
struct mbuf * qosq_head;
|
||||
struct mbuf * qosq_tail;
|
||||
#ifdef QOS_STATS
|
||||
int qosq_len; /* Num packets in queue */
|
||||
int qosq_maxlen; /* Max qlen at any time */
|
||||
int qosq_total; /* Cumulative total of packets queued*/
|
||||
int qosq_maxlim; /* Not used. Queue max limit */
|
||||
int qosq_drops; /* Not used. Packets dropped */
|
||||
#endif /* QOS_STATS */
|
||||
};
|
||||
|
||||
struct qosqFlushJob
|
||||
{
|
||||
QJOB flushJob; /* Job for flushing packets on the qosq */
|
||||
void * pEnd; /* Device whose pakcets have to be flushed*/
|
||||
BOOL done;
|
||||
|
||||
};
|
||||
|
||||
typedef struct _qosqVars
|
||||
{
|
||||
QJOB processJob;/* Job for processing packets on the qosq */
|
||||
UINT32 qosqActivePri;
|
||||
JOB_QUEUE_ID pJobQueue; /* Job queue to use */
|
||||
int qosDefaultPri; /* Default pri for queuing packets */
|
||||
struct qosqueue qosqArr [QOS_MAX_PRI + 1];
|
||||
#ifdef QOS_STATS
|
||||
UINT32 numPackets;
|
||||
UINT32 discards;
|
||||
UINT32 delivered;
|
||||
#endif /* QOS_STATS */
|
||||
} QOSQ_VARS;
|
||||
|
||||
#ifdef QOS_STATS
|
||||
#define INC_QLEN(qosq) \
|
||||
do { \
|
||||
(qosq)->qosq_len++; \
|
||||
(qosq)->qosq_total++; \
|
||||
if ((qosq)->qosq_maxlen < (qosq)->qosq_len) \
|
||||
(qosq)->qosq_maxlen = (qosq)->qosq_len; \
|
||||
} while (0)
|
||||
|
||||
#define DEC_QLEN(qosq) (qosq)->qosq_len--
|
||||
#else
|
||||
#define INC_QLEN(qosq)
|
||||
#define DEC_QLEN(qosq)
|
||||
#endif /* QOS_STATS */
|
||||
|
||||
|
||||
/* These macros should be used to manipulate the qos queue */
|
||||
/*
|
||||
* We currently manipulate the queues inline for better performance. Hence
|
||||
* these macros are ununsed for now.
|
||||
*/
|
||||
|
||||
/* The following two macros are unused currently */
|
||||
|
||||
#define QOS_QFULL(qosq) ((qosq)->qosq_len >= (qosq)->qosq_maxlen)
|
||||
#define QOS_DROP(qosq) ((qosq)->qosq_drops++)
|
||||
|
||||
#define QOS_ENQUEUE(qosq, m) \
|
||||
do { \
|
||||
(m)->m_nextpkt = 0; \
|
||||
if ((qosq)->qosq_tail == 0) \
|
||||
(qosq)->qosq_head = m; \
|
||||
else \
|
||||
(qosq)->qosq_tail->m_nextpkt = m; \
|
||||
(qosq)->qosq_tail = m; \
|
||||
INC_QLEN(qosq); \
|
||||
} while (0)
|
||||
|
||||
/* The following macro is unused currently */
|
||||
#define QOS_PREPEND(qosq, m) \
|
||||
do { \
|
||||
(m)->m_nextpkt = (qosq)->qosq_head; \
|
||||
if ((qosq)->qosq_tail == 0) \
|
||||
(qosq)->qosq_tail = (m); \
|
||||
(qosq)->qosq_head = (m); \
|
||||
INC_QLEN(qosq); \
|
||||
} while (0)
|
||||
|
||||
#define QOS_DEQUEUE(qosq, m) \
|
||||
do { \
|
||||
(m) = (qosq)->qosq_head; \
|
||||
if (m) { \
|
||||
if (((qosq)->qosq_head = (m)->m_nextpkt) == 0) \
|
||||
(qosq)->qosq_tail = 0; \
|
||||
(m)->m_nextpkt = 0; \
|
||||
DEC_QLEN(qosq); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCqosIngressLibPh*/
|
||||
|
||||
@@ -0,0 +1,370 @@
|
||||
/* wvNetDEventP.h - header file for WindView WindNet IPv6/IPv4 event ids */
|
||||
|
||||
/* Copyright 2003,2004,2008,2010 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify, or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01t,13jul12,h_x Fix warnings.
|
||||
01s,30dec10,vhe Changed pWvNetEventMap to pWvNetEvtMap (CQ:WIND00237112)
|
||||
01r,06oct08,tcr fix Coverity warnings
|
||||
01q,10sep08,tcr Fix WIND00133631 (exception dereferencing pWvNetEventMap if
|
||||
INCLUDE_WV_NETD not present)
|
||||
01p,15aug08,tcr temproary build fix
|
||||
01o,31jul08,tcr code review changes
|
||||
01n,09may08,tcr change name of event_point_handler
|
||||
01m,25apr08,tcr change WV to use eventpoints
|
||||
01m,27may08,jpb Modifications for source build. Renamed WV_INSTRUMENTATION
|
||||
to _WRS_CONFIG_SV_INSTRUMENTATION.
|
||||
01l,07jul04,vvv fixed warnings (statement not reached)
|
||||
01k,02apr04,spm fixed virtual stack build: enabled required values
|
||||
01j,24feb04,syy Update wvNetDEventInfo structure
|
||||
01i,23jan04,syy Added WV class check to macros
|
||||
01h,17dec03,syy Remove evtLogOBinary() workaround
|
||||
01g,16dec03,syy Fixed a typo that caused build problem
|
||||
01f,11dec03,syy Code adjustment and clean up
|
||||
01e,08dec03,syy Networking WindView instrumentation merge
|
||||
01d,04nov03,syy WV Instrumentation changes
|
||||
01c,20oct03,syy Added #ifdef WV_INSTRUMENTATION
|
||||
01b,04sep03,tar Windview instrumentation codereview changes
|
||||
01a,05aug03,tar written
|
||||
*/
|
||||
|
||||
#ifndef __INCwvNetDEventPh
|
||||
#define __INCwvNetDEventPh
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct eventmask
|
||||
{
|
||||
UCHAR bitmap [8]; /* Map indicating selection status of events. */
|
||||
}
|
||||
EVENT_MASK;
|
||||
|
||||
IMPORT EVENT_MASK * pWvNetEvtMap;
|
||||
|
||||
#define MIN_WVNET_EVENTID 20000
|
||||
#define MAX_WVNET_EVENTID 24999
|
||||
|
||||
#define WVNET_EVENT(id) (MIN_WVNET_EVENTID + id)
|
||||
|
||||
#define WVNET_MASKSIZE 8 /* Allows 57 to 64 events per level. */
|
||||
|
||||
#ifdef IPCOM_WV_INSTRUMENTATION
|
||||
static char wvNetDEventBlob [8];
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* The WV_BLOCK_START macro prevents wasted cycles by determining if
|
||||
* WindView is running and if the given class has been selected. It
|
||||
* provides initial screening for reporting network events to WindView.
|
||||
* WV_CLASS_3 is for "Additional Instrumentation" selection.
|
||||
* The classId is NETD_IP4_DATAPATH_EVENT, NETD_IP4_CTRLPATH_EVENT,
|
||||
* NETD_IP6_DATAPATH_EVENT or NETD_IP6_CTRLPATH_EVENT.
|
||||
*/
|
||||
|
||||
#define WV_BLOCK_START(classId) \
|
||||
if (ACTION_IS_SET && (pWvNetEvtMap != NULL)) \
|
||||
{
|
||||
/*
|
||||
* The WV_NETD_EVENT_TEST macro evaluates to TRUE if the event is selected
|
||||
* for inclusion in the WindView updates sent to the host. The event
|
||||
* selection status is stored in a bitmap accessed by priority level.
|
||||
* This macro is only valid within a test conditional after the
|
||||
* WV_BLOCK_START macro verifies that the class is active. The eventLevel
|
||||
* parameter has values determined by the constants defined below, and
|
||||
* the offset indicates the ordinal number of the event for the given
|
||||
* level (ranging from 0 upward).
|
||||
*/
|
||||
|
||||
#define WV_NETD_EVENT_TEST(eventLevel, offset) \
|
||||
pWvNetEvtMap [eventLevel - 1].bitmap [WVNET_MASKSIZE - 1 - (offset / 8)] & \
|
||||
(1 << (offset % 8))
|
||||
|
||||
/*
|
||||
* The WV_BLOCK_END provides a footer for all code which reports network
|
||||
* events to WindView. It closes the open scopes caused by WV_BLOCK_START.
|
||||
* The classId parameter is not used, but is included for symmetry.
|
||||
*/
|
||||
|
||||
#define WV_BLOCK_END(classId) \
|
||||
}
|
||||
|
||||
#if defined (_WRS_CONFIG_SV_INSTRUMENTATION) && defined (INCLUDE_WVNETD)
|
||||
|
||||
/*
|
||||
* The macros stores all the arguments and the string into a structure to pass
|
||||
* to the logging routine. The eventId is also stored in the structure, and a
|
||||
* fixed eventId is passed to the eventpoint. The data collector will extract
|
||||
* the eventId from the arguments, and pass it to the logging routines. This
|
||||
* means that a single data collector can be used for all the network events.
|
||||
*/
|
||||
|
||||
#define WV_EVT_LOG_OBIN(EVTID, NARGS, INFO, ARG1, ARG2, ARG3, ARG4, ARG5, SIZE, PAYLOAD) \
|
||||
do { \
|
||||
EVT_STR_NET_T evt_wv_net; \
|
||||
evt_wv_net.args [0] = INFO; \
|
||||
evt_wv_net.args [1] = ARG1; \
|
||||
evt_wv_net.args [2] = ARG2; \
|
||||
evt_wv_net.args [3] = ARG3; \
|
||||
evt_wv_net.args [4] = ARG4; \
|
||||
evt_wv_net.evtId = EVTID; \
|
||||
evt_wv_net.nParams = NARGS; \
|
||||
evt_wv_net.length = SIZE; \
|
||||
evt_wv_net.pData = PAYLOAD; \
|
||||
eventPointSwHandle (WV_NETD_BASE_EVENT, &evt_wv_net, sizeof(evt_wv_net) ); \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* Event data binary block consists of three parts: the data format ID,
|
||||
* two optional parameters, each can be either non IP address or IP address.
|
||||
* The interpretation of the event data is governed by the format ID (the
|
||||
* first byte). Various formats are defined in the section below.
|
||||
*
|
||||
* wvNetDEventBlob [0] - event data format
|
||||
* wvNetDEventBlob [1-4] - first event data in UINT32 (optional)
|
||||
* wvNetDEventBlob [5-8] - second event data in UINT32 (optional)
|
||||
*/
|
||||
|
||||
/*
|
||||
* Event data format indicator bit definitions
|
||||
*/
|
||||
#define WV_NETD_EVT_PARAM_ONE 0x01
|
||||
#define WV_NETD_EVT_PARAM_TWO 0x02
|
||||
#define WV_NETD_EVT_V4_ADDR 0x04
|
||||
#define WV_NETD_EVT_V6_ADDR 0x08
|
||||
|
||||
/*
|
||||
* List of allowed event data formats:
|
||||
*
|
||||
* WV_NETD_EVT_FMT_1P: one non- IP address parameter;
|
||||
* WV_NETD_EVT_FMT_2P: two that non- IP address parameters;
|
||||
* WV_NETD_EVT_FMT_1P_V4: one non- IP address parameter and one IPv4 address;
|
||||
* WV_NETD_EVT_FMT_1P_V6: one non- IP address parameter and one ptr to the
|
||||
* IPv6 address structure;
|
||||
* WV_NETD_EVT_FMT_V4: two IPv4 addresses;
|
||||
* WV_NETD_EVT_FMT_V6: two ptr's to the IPv6 addresse structures;
|
||||
*/
|
||||
#define WV_NETD_EVT_FMT_1P WV_NETD_EVT_PARAM_ONE
|
||||
#define WV_NETD_EVT_FMT_2P WV_NETD_EVT_PARAM_ONE | WV_NETD_EVT_PARAM_TWO
|
||||
#define WV_NETD_EVT_FMT_1P_V4 WV_NETD_EVT_PARAM_ONE | WV_NETD_EVT_V4_ADDR
|
||||
#define WV_NETD_EVT_FMT_1P_V6 WV_NETD_EVT_PARAM_ONE | WV_NETD_EVT_V6_ADDR
|
||||
#define WV_NETD_EVT_FMT_V4 WV_NETD_EVT_V4_ADDR
|
||||
#define WV_NETD_EVT_FMT_V6 WV_NETD_EVT_V6_ADDR
|
||||
|
||||
/*
|
||||
* The following macros accept an argument of struct sockaddr type and return the
|
||||
* sockaddr_in for IPv4 and return the address of the struct for IPv6.
|
||||
*/
|
||||
#define WV_SOCKADDR_IN(s) (((struct sockaddr_in *)(s))->sin_addr.s_addr)
|
||||
|
||||
#ifdef INET6
|
||||
|
||||
#else
|
||||
#define WV_ADDR_GET(pAddr) (pAddr == NULL ? 0 : \
|
||||
(((struct sockaddr *)pAddr)->sa_family == AF_INET ? \
|
||||
(((struct sockaddr_in *)pAddr)->sin_addr.s_addr) : 0))
|
||||
|
||||
#define WV_ADDR_FAMILY_GET(pAddr) (pAddr == NULL ? 0 : \
|
||||
(((struct sockaddr *)pAddr)->sa_family == AF_INET ? \
|
||||
WV_NETD_EVT_V4_ADDR : 0))
|
||||
#endif /* INET6 */
|
||||
|
||||
/*
|
||||
* The WV_EVT_INFO_SET_ALL macro constructs the WindView event information
|
||||
* field in the event data using the following structure:
|
||||
*
|
||||
* <Component ID>:<Status>:<Filter ID>:<Entity ID>:<Module ID>:<Event Tag>
|
||||
* (2 bits) (2 bits) (4 bits) (8 bits) (8 bits) (8 bits)
|
||||
*
|
||||
* The component ID is a fixed value for all WindNet IPv6/IPv4 stack code, The
|
||||
* values of other fields, except Event Tag, use the constants defined
|
||||
* below. The packet filter type (Filter ID), Entity ID and Module ID are
|
||||
* assigned using local #defin'se within each module. The final field (Event
|
||||
* Tag) is a unique identifier for each event within a given module.
|
||||
*
|
||||
* Currently, the packet filter is not used. But it may be used for refined
|
||||
* event filtering someday.
|
||||
*
|
||||
* The resulting event information is stored in the ULONG variable
|
||||
* wvNetDEventInfo, local to the file module.
|
||||
*/
|
||||
|
||||
#define WV_EVT_INFO_SET_ALL(eventLevel, eventTag, status) \
|
||||
do { \
|
||||
wvNetDEventInfo = ((UINT32)(WV_NET_DUAL_ID << 30)) | (status << 28) \
|
||||
| (wvNetDLocalFilter << 24) | (wvNetDEntityId << 16) \
|
||||
| (wvNetDModuleId << 8) | eventTag; \
|
||||
} while (0)
|
||||
|
||||
/* Macro sets evenInfo fields, except "Status" */
|
||||
#define WV_EVT_INFO_SET(eventLevel, eventTag) \
|
||||
do { \
|
||||
wvNetDEventInfo = ((UINT32)(WV_NET_DUAL_ID << 30)) | (wvNetDLocalFilter << 24) \
|
||||
| (wvNetDEntityId << 16) | (wvNetDModuleId << 8) \
|
||||
| eventTag; \
|
||||
} while (0)
|
||||
|
||||
/* Store the 4 bytes of an UINT32 into blob */
|
||||
#define WV_ASSIGN_BLOB(blob, arg) \
|
||||
do { \
|
||||
*(&(blob)) = (UCHAR)((((UINT32) arg) >> 24) & 0xff); \
|
||||
*(&(blob) + 1) = (UCHAR)((((UINT32) arg) >> 16) & 0xff); \
|
||||
*(&(blob) + 2) = (UCHAR)((((UINT32) arg) >> 8) & 0xff); \
|
||||
*(&(blob) + 3) = (UCHAR)((((UINT32) arg) >> 0) & 0xff); \
|
||||
*(&(blob) + 4) = '\n'; \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* To minimize the size of the log, for V6 address, only the ptr to struct
|
||||
* sockadd will be logged.
|
||||
*
|
||||
* format: 0x1 - one parameter; 0x3 - two parameters;
|
||||
*/
|
||||
|
||||
#define WV_EVT_BLOB_SET0(format, arg1, arg2) \
|
||||
do { \
|
||||
wvNetDEventBlob[0] = (UCHAR) format; \
|
||||
if ((format) & WV_NETD_EVT_PARAM_ONE) \
|
||||
WV_ASSIGN_BLOB(wvNetDEventBlob[1], arg1); \
|
||||
if ((format) & WV_NETD_EVT_PARAM_TWO) \
|
||||
WV_ASSIGN_BLOB(wvNetDEventBlob[5], arg2); \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* The WindView for networking marker events handles cases which do not
|
||||
* involve data transfer. The transmission direction (i.e. - status) field
|
||||
* in the event identifier is always 0. Up to four additional parameters
|
||||
* may be sent to the host.
|
||||
*/
|
||||
|
||||
#define WV_NET_MARKER_1(classId, eventLevel, eventOffset, eventTag, eventId, arg1) \
|
||||
WV_BLOCK_START (classId) \
|
||||
if (WV_NETD_EVENT_TEST (eventLevel, eventOffset)) \
|
||||
{ \
|
||||
UINT32 wvNetDEventInfo; \
|
||||
WV_EVT_INFO_SET (eventLevel, eventTag); \
|
||||
WV_EVT_LOG_OBIN (eventId, 3, wvNetDEventInfo, (_Vx_usr_arg_t)arg1, 0, 0, 0, 0, 0, NULL); \
|
||||
} \
|
||||
WV_BLOCK_END (classId)
|
||||
|
||||
#define WV_NET_MARKER_2(classId, eventLevel, eventOffset, eventTag, eventId, arg1, arg2) \
|
||||
WV_BLOCK_START (classId) \
|
||||
if (WV_NETD_EVENT_TEST (eventLevel, eventOffset)) \
|
||||
{ \
|
||||
UINT32 wvNetDEventInfo; \
|
||||
WV_EVT_INFO_SET (eventLevel, eventTag); \
|
||||
WV_EVT_LOG_OBIN (eventId, 3, wvNetDEventInfo, (_Vx_usr_arg_t)arg1, (_Vx_usr_arg_t)arg2, 0, 0, 0, 0, NULL); \
|
||||
} \
|
||||
WV_BLOCK_END (classId)
|
||||
|
||||
/* when the last argument is a parameter */
|
||||
#define WV_NET_MARKER_3(classId, eventLevel, eventOffset, eventTag, eventId, arg1, arg2, arg3) \
|
||||
WV_BLOCK_START (classId) \
|
||||
if (WV_NETD_EVENT_TEST (eventLevel, eventOffset)) \
|
||||
{ \
|
||||
UCHAR wvNetDEventBlob[12]; \
|
||||
UINT32 wvNetDEventInfo; \
|
||||
WV_EVT_INFO_SET (eventLevel, eventTag); \
|
||||
WV_EVT_BLOB_SET0 (WV_NETD_EVT_FMT_1P, arg3, 0); \
|
||||
WV_EVT_LOG_OBIN (eventId, 3, wvNetDEventInfo, (_Vx_usr_arg_t)arg1, (_Vx_usr_arg_t)arg2, 0, 0, 0, \
|
||||
sizeof (wvNetDEventBlob), (char *)wvNetDEventBlob); \
|
||||
} \
|
||||
WV_BLOCK_END (classId)
|
||||
|
||||
|
||||
|
||||
/* when the last two arguments are parameters */
|
||||
#define WV_NET_MARKER_4(classId, eventLevel, eventOffset, eventTag, eventId, arg1, arg2, arg3, arg4) \
|
||||
WV_BLOCK_START (classId) \
|
||||
if (WV_NETD_EVENT_TEST (eventLevel, eventOffset)) \
|
||||
{ \
|
||||
UINT32 wvNetDEventInfo; \
|
||||
UCHAR wvNetDEventBlob[12]; \
|
||||
WV_EVT_INFO_SET (eventLevel, eventTag); \
|
||||
WV_EVT_BLOB_SET0 (WV_NETD_EVT_FMT_2P, arg3, arg4); \
|
||||
WV_EVT_LOG_OBIN (eventId, 3, wvNetDEventInfo, (_Vx_usr_arg_t)arg1, (_Vx_usr_arg_t)arg2, 0, 0, 0, \
|
||||
sizeof (wvNetDEventBlob), (char *)wvNetDEventBlob); \
|
||||
} \
|
||||
WV_BLOCK_END (classId)
|
||||
|
||||
/*
|
||||
* The WindView for networking data transfer events store a transmission
|
||||
* direction in the status field of the event identifier. Valid values are
|
||||
* WV_NET_SEND and WV_NET_RECV. Up to four additional parameters may be sent
|
||||
* to the host.
|
||||
*/
|
||||
|
||||
#define WV_NET_EVENT_1(classId, eventLevel, eventOffset, eventTag, eventId, status, arg1) \
|
||||
WV_BLOCK_START (classId) \
|
||||
if (WV_NETD_EVENT_TEST (eventLevel, eventOffset)) \
|
||||
{ \
|
||||
UINT32 wvNetDEventInfo; \
|
||||
WV_EVT_INFO_SET_ALL (eventLevel, eventTag, status); \
|
||||
WV_EVT_LOG_OBIN (eventId, 3, wvNetDEventInfo, (_Vx_usr_arg_t)arg1, 0, 0, 0, 0, 0, NULL); \
|
||||
} \
|
||||
WV_BLOCK_END (classId)
|
||||
|
||||
#define WV_NET_EVENT_2(classId, eventLevel, eventOffset, eventTag, eventId, status, arg1, arg2) \
|
||||
WV_BLOCK_START (classId) \
|
||||
if (WV_NETD_EVENT_TEST (eventLevel, eventOffset)) \
|
||||
{ \
|
||||
UINT32 wvNetDEventInfo; \
|
||||
WV_EVT_INFO_SET_ALL (eventLevel, eventTag, status); \
|
||||
WV_EVT_LOG_OBIN (eventId, 3, wvNetDEventInfo, (_Vx_usr_arg_t)arg1, (_Vx_usr_arg_t)arg2, 0, 0, 0, 0, NULL); \
|
||||
} \
|
||||
WV_BLOCK_END (classId)
|
||||
|
||||
#define WV_NET_EVENT_3(classId, eventLevel, eventOffset, eventTag, eventId, status, arg1, arg2, arg3) \
|
||||
WV_BLOCK_START (classId) \
|
||||
if (WV_NETD_EVENT_TEST (eventLevel, eventOffset)) \
|
||||
{ \
|
||||
int format = WV_NETD_EVT_FMT_1P; \
|
||||
UINT32 wvNetDEventInfo; \
|
||||
UCHAR wvNetDEventBlob[12]; \
|
||||
WV_EVT_INFO_SET_ALL (eventLevel, eventTag, status); \
|
||||
WV_EVT_BLOB_SET0 (format, arg3, 0); \
|
||||
WV_EVT_LOG_OBIN (eventId, 3, wvNetDEventInfo, (_Vx_usr_arg_t)arg1, (_Vx_usr_arg_t)arg2, 0, 0, 0, \
|
||||
sizeof (wvNetDEventBlob), (char *)wvNetDEventBlob); \
|
||||
} \
|
||||
WV_BLOCK_END (classId)
|
||||
|
||||
#define WV_NET_EVENT_4(classId, eventLevel, eventOffset, eventTag, eventId, status, arg1, arg2, arg3, arg4) \
|
||||
WV_BLOCK_START (classId) \
|
||||
if (WV_NETD_EVENT_TEST (eventLevel, eventOffset)) \
|
||||
{ \
|
||||
UINT32 wvNetDEventInfo; \
|
||||
UCHAR wvNetDEventBlob[12]; \
|
||||
WV_EVT_INFO_SET_ALL (eventLevel, eventTag, status); \
|
||||
WV_EVT_BLOB_SET0 (WV_NETD_EVT_FMT_2P, arg3, arg4); \
|
||||
WV_EVT_LOG_OBIN (eventId, 3, wvNetDEventInfo, (_Vx_usr_arg_t)arg1, (_Vx_usr_arg_t)arg2, 0, 0, 0, \
|
||||
sizeof (wvNetDEventBlob), (char *)wvNetDEventBlob); \
|
||||
} \
|
||||
WV_BLOCK_END (classId)
|
||||
|
||||
#else /* when system viewer is excluded */
|
||||
|
||||
#define WV_ADDR_GET(pAddr) {}
|
||||
#define WV_NET_MARKER_1(classId, eventLevel, eventOffset, eventTag, eventId, arg1) {}
|
||||
#define WV_NET_MARKER_2(classId, eventLevel, eventOffset, eventTag, eventId, arg1, arg2) {}
|
||||
#define WV_NET_MARKER_3(classId, eventLevel, eventOffset, eventTag, eventId, arg1, arg2, arg3) {}
|
||||
#define WV_NET_MARKER_4(classId, eventLevel, eventOffset, eventTag, eventId, arg1, arg2, arg3, arg4) {}
|
||||
#define WV_NET_EVENT_1(classId, eventLevel, eventOffset, eventTag, eventId, status, arg1) {}
|
||||
#define WV_NET_EVENT_2(classId, eventLevel, eventOffset, eventTag, eventId, status, arg1, arg2) {}
|
||||
#define WV_NET_EVENT_3(classId, eventLevel, eventOffset, eventTag, eventId, status, arg1, arg2, arg3) {}
|
||||
#define WV_NET_EVENT_4(classId, eventLevel, eventOffset, eventTag, eventId, status, arg1, arg2, arg3, arg4) {}
|
||||
#endif /* _WRS_CONFIG_SV_INSTRUMENTATION && INCLUDE_WVNETD */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCwvNetDEventPh */
|
||||
@@ -0,0 +1,114 @@
|
||||
/* remLib.h - structures for remLib.c */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1984-2005, 2010 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01k,09jan12,h_x Move extern "C" after last header file include.
|
||||
01j,01oct10,rlp Removed iam and whoami prototypes.
|
||||
01i,24jun05,vvv added rcmd_af()
|
||||
01h,22feb05,wap Allow sysctl init routines to be scaled out
|
||||
o1g,23feb04,kkz added new functions for user-space
|
||||
01f,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01e,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01d,24oct03,cdw update include statements post header re-org.
|
||||
01c,09may03,vvv included socket.h
|
||||
01b,10jun02,ann forward declarations for rresvportCommon() and
|
||||
bindresvportCommon()
|
||||
01a,06mar02,ann ported to clarinet from AE1.1 ver 02d
|
||||
*/
|
||||
|
||||
#ifndef __INCremLibh
|
||||
#define __INCremLibh
|
||||
|
||||
#include <netinet/in.h>
|
||||
#include <sockLib.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define MAX_IDENTITY_LEN 100
|
||||
#define MIN_RESV_PORT 600
|
||||
#define MAX_RESV_PORT 1023
|
||||
|
||||
/* status messages */
|
||||
|
||||
#define S_remLib_ALL_PORTS_IN_USE (M_remLib | 1)
|
||||
#define S_remLib_RSH_ERROR (M_remLib | 2)
|
||||
#define S_remLib_IDENTITY_TOO_BIG (M_remLib | 3)
|
||||
#define S_remLib_RSH_STDERR_SETUP_FAILED (M_remLib | 4)
|
||||
#define S_remLib_RCMD_INPUT_ERROR (M_remLib | 5)
|
||||
|
||||
/* variable declarations */
|
||||
|
||||
extern int remLastResvPort; /* last port num used (from bootroms) */
|
||||
|
||||
/* function declarations */
|
||||
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
extern void remLibInit (long timeout);
|
||||
extern void remLibSysctlInit(void);
|
||||
extern STATUS bindresvport (int sd, struct sockaddr_in *sin);
|
||||
extern STATUS bindresvport_af (int sd, struct sockaddr *sin, int family);
|
||||
extern int rcmd (char *host, int remotePort, char *localUser,
|
||||
char *remoteUser, char *cmd, int *fd2p);
|
||||
extern int rcmd_af (char *host, int remotePort, char *localUser,
|
||||
char *remoteUser, char *cmd, int *fd2p, int family);
|
||||
extern int rresvport (int *alport);
|
||||
extern int rresvport_af (int *alport, int family);
|
||||
extern void remCurIdGet (char *user, char *passwd);
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
extern STATUS remCurIdSet (char *newUser, char *newPasswd);
|
||||
#else
|
||||
extern STATUS setlogin (char * login);
|
||||
extern STATUS getlogin_r (char * login, size_t length);
|
||||
extern STATUS setpassword(char * passwd);
|
||||
extern STATUS getpassword_r(char * passwd, size_t length);
|
||||
#endif
|
||||
|
||||
/* deprecated functions - use rresvport_af and bindresvport_af instead */
|
||||
extern int rresvportCommon (int *alport, int family);
|
||||
extern STATUS bindresvportCommon (int sd, struct sockaddr *sin, int family);
|
||||
#else /* __STDC__ */
|
||||
|
||||
extern void remLibInit ();
|
||||
extern void remLibSysctlInit();
|
||||
extern STATUS bindresvport ();
|
||||
extern STATUS bindresvport_af ();
|
||||
extern int rcmd ();
|
||||
extern int rresvport ();
|
||||
extern int rresvport_af ();
|
||||
extern void remCurIdGet ();
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
extern STATUS remCurIdSet ();
|
||||
extern STATUS iam ();
|
||||
extern void whoami ();
|
||||
#else
|
||||
extern STATUS setlogin ();
|
||||
extern STATUS getlogin_r ();
|
||||
extern STATUS setpassword ();
|
||||
extern STATUS getpassword_r ();
|
||||
#endif
|
||||
|
||||
/* deprecated functions - use rresvport_af and bindresvport_af instead */
|
||||
extern STATUS bindresvportCommon ();
|
||||
extern int rresvportCommon ();
|
||||
#endif /* __STDC__ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCremLibh */
|
||||
@@ -0,0 +1,47 @@
|
||||
/* rlogLib.h - header file for rlogLib.c */
|
||||
|
||||
/* Copyright 1984-2004, 2006, 2009 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01l,27may11,rjq Fix for WIND00277167.
|
||||
01k,02jun09,dlk LP64 adaptation. Also WIND00169357. Remove private
|
||||
types and information to rlogLib.c.
|
||||
01j,14aug06,tkf Cleanup for IPNET integration.
|
||||
01i,25feb04,asr updates resulting from review comments
|
||||
01h,06feb04,asr included lstlib.h
|
||||
01g,30jan04,dlk Remove extra tokens at end of #ifndef directives.
|
||||
01f,12dec03,rp support for multiple rlogin sessions
|
||||
01e,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01d,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01c,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01b,02oct02,ant virtualization changes
|
||||
01c,06aug03,nee Accordion Base6 merge from ACCORDION_BASE6_MERGE_BASELINE
|
||||
label
|
||||
01b,10jun03,vvv include netVersion.h
|
||||
01a,10jun02,ann ported to clarinet from AE1.1 ver 02b
|
||||
*/
|
||||
|
||||
#ifndef __INCrlogLibh
|
||||
#define __INCrlogLibh
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* function declarations */
|
||||
|
||||
extern STATUS rlogin (char *host);
|
||||
extern void rlogcInit(int client_number);
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
extern STATUS rlogInit (long maxclients);
|
||||
extern void rlogind (void);
|
||||
#endif /* _WRS_KERNEL */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCrlogLibh */
|
||||
@@ -0,0 +1,111 @@
|
||||
/* sntpcLib.h - SNTP client backward-compatible APIs library */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997-2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
Modification history
|
||||
--------------------
|
||||
01g,07nov06,kch Cleanup for IPNet integration.
|
||||
01f,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01e,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01d,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01c,25aug99,cno Add extern "C" definition (SPR21825)
|
||||
01b,15jul97,spm code cleanup, documentation, and integration; entered in
|
||||
source code control
|
||||
01a,20apr97,kyc written
|
||||
|
||||
*/
|
||||
|
||||
#ifndef __INCsntpch
|
||||
#define __INCsntpch
|
||||
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 1 DESCRIPTION
|
||||
****************************************************************************
|
||||
* Public header file of SNTP client.
|
||||
*/
|
||||
|
||||
/*
|
||||
DESCRIPTION
|
||||
This library contains the backward-compatible APIs provided by the WindRiver SNTP client.
|
||||
INCLUDE FILES: ipcom_type.h, ipcom_time.h
|
||||
*/
|
||||
|
||||
|
||||
/* includes */
|
||||
|
||||
#include <timers.h>
|
||||
|
||||
/* defines */
|
||||
|
||||
#define S_sntpcLib_INVALID_PARAMETER (M_sntpcLib | 1)
|
||||
#define S_sntpcLib_INVALID_ADDRESS (M_sntpcLib | 2)
|
||||
#define S_sntpcLib_TIMEOUT (M_sntpcLib | 3)
|
||||
#define S_sntpcLib_VERSION_UNSUPPORTED (M_sntpcLib | 4)
|
||||
#define S_sntpcLib_SERVER_UNSYNC (M_sntpcLib | 5)
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* sntpcTimeGet - retrieve the current time from a remote source
|
||||
*
|
||||
* This routine stores the current time as reported by an SNTP/NTP server in
|
||||
* the location indicated by <pCurrTime>. The reported time is first converted
|
||||
* to the elapsed time since January 1, 1970, 00:00, GMT, which is the base value
|
||||
* used by UNIX systems. If <pServerAddr> is NULL, the routine listens for
|
||||
* messages sent by an SNTP/NTP server in broadcast (mulitcast in case of IPv6)
|
||||
* mode. Otherwise, this routine sends a request to the specified SNTP/NTP
|
||||
* server and extracts the reported time from the reply. In either case, an
|
||||
* error is returned if no message is received within the interval specified
|
||||
* by <timeout>. Typically, SNTP/NTP servers operating in broadcast (mulitcast
|
||||
* in case of IPv6) mode send update messages every 64 to 1024 seconds. An
|
||||
* infinite timeout value is specified by WAIT_FOREVER.
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i <pServerAddr>
|
||||
* A pointer to the server IP address or hostname.
|
||||
* \i <timeout>
|
||||
* timeout interval in ticks.
|
||||
* \i <pCurrTime>
|
||||
* storage for retrieved time value.
|
||||
* \ie
|
||||
*
|
||||
* RETURNS: \is
|
||||
* \i 'OK'.
|
||||
* successful.
|
||||
* \i 'ERROR'
|
||||
* unsuccessful.
|
||||
* \ie
|
||||
*
|
||||
* ERRNO:
|
||||
*/
|
||||
|
||||
STATUS sntpcTimeGet
|
||||
(
|
||||
char *pServerAddr,
|
||||
int timeout,
|
||||
struct timespec *pCurrTime
|
||||
);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCsntpch */
|
||||
|
||||
@@ -0,0 +1,150 @@
|
||||
/* sntpsLib.h - SNTP server backward-compatible APIs library */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997-2013 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
Modification history
|
||||
--------------------
|
||||
01b,13sep13,rjq Fix for WIND00431901.
|
||||
01a,13oct09,rjq written
|
||||
|
||||
*/
|
||||
|
||||
#ifndef __INCsntpsh
|
||||
#define __INCsntpsh
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 1 DESCRIPTION
|
||||
****************************************************************************
|
||||
* Public header file of SNTP server APIs.
|
||||
*/
|
||||
|
||||
/*
|
||||
DESCRIPTION
|
||||
This library contains the backward-compatible APIs provided by the WindRiver SNTP server.
|
||||
INCLUDE FILES: ipcom_type.h, ipcom_time.h
|
||||
*/
|
||||
|
||||
|
||||
/* defines */
|
||||
#define S_sntpsLib_INVALID_PARAMETER (M_sntpsLib | 1)
|
||||
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/* Values for "request" parameter to clock hook routine. */
|
||||
#define IPSNTPS_ID 1
|
||||
#define IPSNTPS_RESOLUTION 2
|
||||
#define IPSNTPS_TIME 3
|
||||
|
||||
typedef struct sntpsTimeData
|
||||
{
|
||||
ULONG seconds;
|
||||
ULONG fraction;
|
||||
} SNTP_TIMESTAMP;
|
||||
|
||||
IMPORT int ipsntpsGetTime(Ip_u32 *sec, Ip_u32 *frac);
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* sntpsClockSet - assign a routine to access the reference clock
|
||||
*
|
||||
* This routine installs a hook routine that is called to access the
|
||||
* reference clock used by the SNTP server. This hook routine must use the
|
||||
* following interface:
|
||||
* .CS
|
||||
* STATUS sntpsClockHook (int request, void *pBuffer);
|
||||
* .CE
|
||||
* The hook routine should copy one of three settings used by the server to
|
||||
* construct outgoing NTP messages into <pBuffer> according to the value of
|
||||
* the <request> parameter. If the requested setting is available, the
|
||||
* installed routine should return OK (or ERROR otherwise).
|
||||
*
|
||||
* This routine calls the given hook routine with the <request> parameter
|
||||
* set to SNTPS_ID to get the 32-bit reference identifier in the format
|
||||
* specified in RFC 1769. It also calls the hook routine with <request>
|
||||
* set to SNTPS_RESOLUTION to retrieve a 32-bit value containing the clock
|
||||
* resolution in nanoseconds. That value will be used to determine the 8-bit
|
||||
* signed integer indicating the clock precision (according to the format
|
||||
* specified in RFC 1769). Other library routines will set the <request>
|
||||
* parameter to SNTPS_TIME to retrieve the current 64-bit NTP timestamp
|
||||
* from <pBuffer> in host byte order. The routine sntpsNsecToFraction() will
|
||||
* convert a value in nanoseconds to the format required for the NTP
|
||||
* fractional part.
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i <pClockHookRtn>
|
||||
* A pointer to the new interface to reference clock.
|
||||
* \ie
|
||||
*
|
||||
* RETURNS: \is
|
||||
* \i 'OK'.
|
||||
* successful.
|
||||
* \i 'ERROR'
|
||||
* unsuccessful.
|
||||
* \ie
|
||||
*
|
||||
* ERRNO:
|
||||
*/
|
||||
STATUS sntpsClockSet
|
||||
(
|
||||
FUNCPTR pClockHookRtn
|
||||
);
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* sntpsNsecToFraction - convert portions of a second to NTP format
|
||||
*
|
||||
* This routine is provided for convenience in fulfilling an SNTPS_TIME request
|
||||
* to the clock hook. It converts a value in nanoseconds to the fractional part
|
||||
* of the NTP timestamp format. The routine is not designed to convert
|
||||
* non-normalized values greater than or equal to one second. Although the NTP
|
||||
* time format provides a precision of about 200 pico-seconds, rounding errors
|
||||
* in the conversion process decrease the accuracy as the input value increases.
|
||||
* In the worst case, only the 24 most significant bits are valid, which reduces
|
||||
* the precision to tenths of a micro-second.
|
||||
*
|
||||
* INTERNAL
|
||||
* Floating-point calculations can't be used because some boards (notably
|
||||
* the SPARC architectures) disable software floating point by default to
|
||||
* speed up context switching. These boards abort with an exception when
|
||||
* floating point operations are encountered.
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i <nsecs>
|
||||
* nanoseconds to convert to binary fraction.
|
||||
* \ie
|
||||
*
|
||||
* RETURNS: Value for NTP fractional part in host-byte order.
|
||||
*
|
||||
* ERRNO:
|
||||
*/
|
||||
ULONG sntpsNsecToFraction
|
||||
(
|
||||
ULONG nsecs
|
||||
);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCsntpsh */
|
||||
|
||||
@@ -0,0 +1,250 @@
|
||||
/* sockFunc.h - socket function table header */
|
||||
|
||||
/*
|
||||
* Copyright 1984-2006, 2009-2010 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
02p,05jan11,h_x Fix WIND00248759
|
||||
02o,17feb10,dlk Remove FUNCPTR function pointer use entirely.
|
||||
02n,29may09,dlk LP64 conversion and POSIXification.
|
||||
02m,20jun06,jpb Removed I960 check.
|
||||
02l,14sep04,dlk Omit entire contents of this file unless _WRS_KERNEL is
|
||||
defined.
|
||||
02k,29jun04,dlk Merged from BASE6_ITER5_FRZ27.
|
||||
02l,28may04,dlk Use single socket IO-system device driver with wrappers
|
||||
calling back-end routines.
|
||||
02k,24mar04,mcm Including time.h instead of sys/time.h.
|
||||
02j,15mar04,bwa added multiple concurrent backends capabalities.
|
||||
02j,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
||||
/main/vdt/base6_itn5-int/2)
|
||||
02i,08dec03,vvv updated based on inspection comments
|
||||
02h,03dec03,asr Fix compile errors after dinkum libc check-in
|
||||
02g,14nov03,nee Adding closeRtn to SOCK_FUNC
|
||||
02f,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
02e,04nov03,rlm Ran batch header path update for header re-org.
|
||||
02d,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
02c,10jun03,vvv include netVersion.h
|
||||
02b,02feb02,ham changed for tornado build
|
||||
02a,15aug01,ann ported to clarinet from AE1.1 version 01f
|
||||
*/
|
||||
|
||||
#ifndef __INCsockFunch
|
||||
#define __INCsockFunch
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
|
||||
/* includes */
|
||||
#include <netVersion.h>
|
||||
#include <sys/times.h>
|
||||
|
||||
#if defined (_WRS_VXWORKS_MAJOR) && (_WRS_VXWORKS_MAJOR >= 6)
|
||||
#include <ioLib.h> /* For type DEV_HDR */
|
||||
#else
|
||||
#include <iosLib.h>
|
||||
#endif /* defined (_WRS_VXWORKS_MAJOR) && (_WRS_VXWORKS_MAJOR >= 6) */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* HIDDEN */
|
||||
|
||||
/* typedefs */
|
||||
|
||||
typedef struct sockFunc SOCK_FUNC;
|
||||
|
||||
struct socket; /* defined in net/socketvar.h */
|
||||
|
||||
typedef SOCK_FUNC * (*SOCK_FUNC_INIT) (void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* sys/socket.h has circular dependencies on this header file, more
|
||||
* specifically on type SOCK_FUNC which must be defined. This is why
|
||||
* this file must be included after SOCK_FUNC has been defined.
|
||||
*/
|
||||
#include <sys/socket.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef int (*SOCK_FUNC_ACCEPT)
|
||||
(struct socket **pso,
|
||||
struct sockaddr * addr,
|
||||
socklen_t * pAddrlen);
|
||||
|
||||
typedef STATUS (*SOCK_FUNC_BIND)
|
||||
(struct socket * so,
|
||||
const struct sockaddr * name,
|
||||
socklen_t namelen);
|
||||
|
||||
typedef STATUS (*SOCK_FUNC_CONNECT)
|
||||
(struct socket * so,
|
||||
const struct sockaddr * name,
|
||||
socklen_t namelen);
|
||||
|
||||
typedef STATUS (*SOCK_FUNC_CONN_TIMEO)
|
||||
(struct socket * so,
|
||||
const struct sockaddr * name,
|
||||
socklen_t namelen,
|
||||
const struct timeval * tv);
|
||||
|
||||
typedef STATUS (*SOCK_FUNC_GETPEERNAME)
|
||||
(struct socket * so,
|
||||
struct sockaddr * addr,
|
||||
socklen_t * pAddrlen);
|
||||
|
||||
typedef STATUS (*SOCK_FUNC_GETSOCKNAME)
|
||||
(struct socket * so,
|
||||
struct sockaddr * addr,
|
||||
socklen_t * pAddrlen);
|
||||
|
||||
typedef STATUS (*SOCK_FUNC_LISTEN)
|
||||
(struct socket * so,
|
||||
int backlog);
|
||||
|
||||
typedef ssize_t (*SOCK_FUNC_RECV)
|
||||
(struct socket * so,
|
||||
void * buf,
|
||||
size_t bufLen,
|
||||
int flags);
|
||||
|
||||
typedef ssize_t (*SOCK_FUNC_RECVFROM)
|
||||
(struct socket * so,
|
||||
void * buf,
|
||||
size_t bufLen,
|
||||
int flags,
|
||||
struct sockaddr * from,
|
||||
socklen_t * pFromLen);
|
||||
|
||||
typedef ssize_t (*SOCK_FUNC_RECVMSG)
|
||||
(struct socket * so,
|
||||
struct msghdr * msg,
|
||||
int flags);
|
||||
|
||||
typedef ssize_t (*SOCK_FUNC_SEND)
|
||||
(struct socket * so,
|
||||
const void * buf,
|
||||
size_t bufLen,
|
||||
int flags);
|
||||
|
||||
typedef ssize_t (*SOCK_FUNC_SENDTO)
|
||||
(struct socket * so,
|
||||
const void * buf,
|
||||
size_t bufLen,
|
||||
int flags,
|
||||
const struct sockaddr * name,
|
||||
socklen_t namelen);
|
||||
|
||||
typedef ssize_t (*SOCK_FUNC_SENDMSG)
|
||||
(struct socket * so,
|
||||
const struct msghdr * msg,
|
||||
int flags);
|
||||
|
||||
typedef STATUS (*SOCK_FUNC_SHUTDOWN)
|
||||
(struct socket * so,
|
||||
int how);
|
||||
|
||||
typedef STATUS (*SOCK_FUNC_SOCKET)
|
||||
(int domain,
|
||||
int type,
|
||||
int protocol,
|
||||
struct socket ** pso);
|
||||
|
||||
typedef STATUS (*SOCK_FUNC_GETSOCKOPT)
|
||||
(struct socket * so,
|
||||
int level,
|
||||
int optname,
|
||||
void * optval,
|
||||
socklen_t * optlen);
|
||||
|
||||
typedef STATUS (*SOCK_FUNC_SETSOCKOPT)
|
||||
(struct socket * so,
|
||||
int level,
|
||||
int optname,
|
||||
const void * optval,
|
||||
socklen_t optlen);
|
||||
|
||||
typedef BOOL (*SOCK_FUNC_ZBUF) (void); /* Does the back end support zbufs? */
|
||||
|
||||
typedef int (*SOCK_FUNC_CLOSE)
|
||||
(struct socket * so);
|
||||
|
||||
typedef ssize_t (*SOCK_FUNC_WRITE)
|
||||
(struct socket * so,
|
||||
const char * buf,
|
||||
size_t maxBytes);
|
||||
|
||||
typedef ssize_t (*SOCK_FUNC_READ)
|
||||
(struct socket * so,
|
||||
char * buf,
|
||||
size_t maxBytes);
|
||||
|
||||
typedef int (*SOCK_FUNC_IOCTL)
|
||||
(struct socket *,
|
||||
int code,
|
||||
_Vx_usr_arg_t arg,
|
||||
void * nullForKernel); /* last arg is NULL if from kernel, non-NULL for
|
||||
system call originating in user space. */
|
||||
|
||||
|
||||
struct sockFunc /* SOCK_FUNC */
|
||||
{
|
||||
SOCK_FUNC_INIT libInitRtn; /* Unused */
|
||||
SOCK_FUNC_ACCEPT acceptRtn;
|
||||
SOCK_FUNC_BIND bindRtn;
|
||||
SOCK_FUNC_CONNECT connectRtn;
|
||||
SOCK_FUNC_CONN_TIMEO connectWithTimeoutRtn;
|
||||
SOCK_FUNC_GETPEERNAME getpeernameRtn;
|
||||
SOCK_FUNC_GETSOCKNAME getsocknameRtn;
|
||||
SOCK_FUNC_LISTEN listenRtn;
|
||||
SOCK_FUNC_RECV recvRtn;
|
||||
SOCK_FUNC_RECVFROM recvfromRtn;
|
||||
SOCK_FUNC_RECVMSG recvmsgRtn;
|
||||
SOCK_FUNC_SEND sendRtn;
|
||||
SOCK_FUNC_SENDTO sendtoRtn;
|
||||
SOCK_FUNC_SENDMSG sendmsgRtn;
|
||||
SOCK_FUNC_SHUTDOWN shutdownRtn;
|
||||
SOCK_FUNC_SOCKET socketRtn;
|
||||
SOCK_FUNC_GETSOCKOPT getsockoptRtn;
|
||||
SOCK_FUNC_SETSOCKOPT setsockoptRtn;
|
||||
SOCK_FUNC_ZBUF zbufRtn;
|
||||
|
||||
/*
|
||||
* The following IO-system handlers are called via wrappers in
|
||||
* sockLib.c:
|
||||
*/
|
||||
SOCK_FUNC_CLOSE closeRtn;
|
||||
SOCK_FUNC_READ readRtn;
|
||||
SOCK_FUNC_WRITE writeRtn;
|
||||
SOCK_FUNC_IOCTL ioctlRtn;
|
||||
};
|
||||
|
||||
extern DEV_HDR socketDevHdr; /* I/O system device driver header */
|
||||
|
||||
/* END_HIDDEN */
|
||||
|
||||
/* Memory validation function pointers */
|
||||
|
||||
extern int (*pSockIoctlMemVal) (unsigned int cmd, void * data);
|
||||
extern STATUS (*pUnixIoctlMemVal) (unsigned int cmd, const void * pData);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _WRS_KERNEL */
|
||||
|
||||
#endif /* __INCsockFunch */
|
||||
|
||||
@@ -0,0 +1,120 @@
|
||||
/* sockLib.h - UNIX BSD 4.3 compatible socket library header */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1984-2005, 2009 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
03p,05jan11,h_x Fix WIND00248759
|
||||
03o,28may09,dlk Change to Posix-compatible signatures, apart from 'restrict'
|
||||
(LP64 conversion).
|
||||
03n,17aug05,mcm Using sys/time.h for RTP space.
|
||||
03m,14sep04,dlk Omit kernel APIs when _WRS_KERNEL is not defined.
|
||||
03n,28may04,dlk Make all socket back-ends share a single IO system device.
|
||||
Remove fdMax parameter to sockLibInit().
|
||||
03m,24mar04,mcm Including time.h instead of sys/time.h.
|
||||
03m,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
||||
/main/vdt/base6_itn5-int/1)
|
||||
03l,18nov03,nee adding <sys/time.h> for RTPs
|
||||
03k,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
03j,04nov03,rlm Ran batch header path update for header re-org.
|
||||
03i,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
03h,27oct03,cdw update include statements post header re-org.
|
||||
03g,24oct03,cdw update include statements post header re-org.
|
||||
03f,10jun03,vvv include netVersion.h
|
||||
03e,27feb02,ann correcting the path to sockFunc.h after relocation
|
||||
03d,02feb02,ham changed for tornado build.
|
||||
03c,30oct01,ppp merging from munich
|
||||
03b,28aug01,ann correcting the return value in the prototype for sockLibInit
|
||||
03a,15aug01,ann ported to clarinet from AE1.1 version 02l.
|
||||
*/
|
||||
|
||||
#ifndef __INCsockLibh
|
||||
#define __INCsockLibh
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
#include <sys/times.h>
|
||||
#else
|
||||
#include <sys/time.h>
|
||||
#endif
|
||||
#include <sys/socket.h>
|
||||
#include <netVersion.h>
|
||||
|
||||
#include <version.h>
|
||||
|
||||
/* typedefs */
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
#include <sockFunc.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
typedef struct sockLibMap
|
||||
{
|
||||
int domainMap; /* mapping address family */
|
||||
int domainReal; /* real address family */
|
||||
SOCK_FUNC * pSockFunc; /* socket function table */
|
||||
struct sockLibMap * pNext; /* next socket lib mapping */
|
||||
} SOCK_LIB_MAP;
|
||||
#endif /* _WRS_KERNEL */
|
||||
|
||||
struct sockFunc; /* See sockFunc.h */
|
||||
|
||||
typedef struct sockFunc * (*SOCK_LIB_INIT_RTN) (void);
|
||||
|
||||
/* function declarations */
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
extern STATUS sockLibInit (void);
|
||||
extern STATUS sockLibAdd (SOCK_LIB_INIT_RTN sockLibInitRtn, int domainMap,
|
||||
int domainReal);
|
||||
#endif /* _WRS_KERNEL */
|
||||
|
||||
extern int accept (int s, struct sockaddr *addr, socklen_t *addrlen);
|
||||
extern STATUS bind (int s, const struct sockaddr *name, socklen_t namelen);
|
||||
extern STATUS connect (int s, const struct sockaddr *name,
|
||||
socklen_t namelen);
|
||||
|
||||
#if defined(_WRS_KERNEL) || \
|
||||
defined(RUNTIME_64BIT_NAME) /* FIXME */ || \
|
||||
(_WRS_VXWORKS_MAJOR >= 6 && _WRS_VXWORKS_MINOR >= 9)
|
||||
extern STATUS connectWithTimeout (int sock, const struct sockaddr *adrs,
|
||||
socklen_t adrsLen, const struct timeval *timeVal);
|
||||
#else
|
||||
extern STATUS connectWithTimeout (int sock, struct sockaddr *adrs,
|
||||
int adrsLen, struct timeval *timeVal);
|
||||
#endif
|
||||
|
||||
extern STATUS getpeername (int s, struct sockaddr *name, socklen_t *namelen);
|
||||
extern STATUS getsockname (int s, struct sockaddr *name, socklen_t *namelen);
|
||||
extern STATUS getsockopt (int s, int level, int optname, void *optval,
|
||||
socklen_t *optlen);
|
||||
extern STATUS listen (int s, int backlog);
|
||||
extern ssize_t recv (int s, void *buf, size_t bufLen, int flags);
|
||||
extern ssize_t recvfrom (int s, void *buf, size_t bufLen, int flags,
|
||||
struct sockaddr *from, socklen_t *pFromLen);
|
||||
extern ssize_t recvmsg (int sd, struct msghdr *mp, int flags);
|
||||
extern ssize_t send (int s, const void *buf, size_t bufLen, int flags);
|
||||
extern ssize_t sendmsg (int sd, const struct msghdr *mp, int flags);
|
||||
extern ssize_t sendto (int s, const void *buf, size_t bufLen, int flags,
|
||||
const struct sockaddr *to, socklen_t tolen);
|
||||
extern int setsockopt (int s, int level, int optname, const void *optval,
|
||||
socklen_t optlen);
|
||||
extern STATUS shutdown (int s, int how);
|
||||
extern int socket (int domain, int type, int protocol);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCsockLibh */
|
||||
@@ -0,0 +1,15 @@
|
||||
/* socket.h - obsolete vxWorks 5.0 header file */
|
||||
|
||||
/* Copyright 1993 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01a,09feb93,rrr written for compatibility with 5.0
|
||||
*/
|
||||
#ifndef _VXCORIP_SOCKET_H_
|
||||
#define _VXCORIP_SOCKET_H_
|
||||
|
||||
#include "sys/socket.h"
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,376 @@
|
||||
/* cdefs.h - C definitions */
|
||||
|
||||
/* Copyright 2001-2003 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1991, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Berkeley Software Design, Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)cdefs.h 8.8 (Berkeley) 1/9/95
|
||||
* $FreeBSD: src/sys/sys/cdefs.h,v 1.28.2.8 2002/09/18 04:05:13 mikeh Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01i,28mar06,hya Fixed compile warnings.
|
||||
01h,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01g,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01f,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01e,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01d,10jun03,vvv include netVersion.h
|
||||
01c,08apr03,syy Fixed Diab compile warnings
|
||||
01b,01feb03,pas merge from FreeBSD 4.7 - added POSIX stuff
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _SYS_CDEFS_H_
|
||||
#define _SYS_CDEFS_H_
|
||||
|
||||
#if defined(__cplusplus)
|
||||
#define __BEGIN_DECLS extern "C" {
|
||||
#define __END_DECLS }
|
||||
#else
|
||||
#define __BEGIN_DECLS
|
||||
#define __END_DECLS
|
||||
#endif
|
||||
|
||||
#include <netVersion.h>
|
||||
|
||||
/*
|
||||
* The __CONCAT macro is used to concatenate parts of symbol names, e.g.
|
||||
* with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
|
||||
* The __CONCAT macro is a bit tricky to use if it must work in non-ANSI
|
||||
* mode -- there must be no spaces between its arguments, and for nested
|
||||
* __CONCAT's, all the __CONCAT's must be at the left. __CONCAT can also
|
||||
* concatenate double-quoted strings produced by the __STRING macro, but
|
||||
* this only works with ANSI C.
|
||||
*
|
||||
* __XSTRING is like __STRING, but it expands any macros in its argument
|
||||
* first. It is only available with ANSI C.
|
||||
*/
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
#define __P(protos) protos /* full-blown ANSI C */
|
||||
#define __CONCAT1(x,y) x ## y
|
||||
#define __CONCAT(x,y) __CONCAT1(x,y)
|
||||
#define __STRING(x) #x /* stringify without expanding x */
|
||||
#define __XSTRING(x) __STRING(x) /* expand x, then stringify */
|
||||
|
||||
#define __const const /* define reserved names to standard */
|
||||
#define __signed signed
|
||||
#define __volatile volatile
|
||||
#if defined(__cplusplus)
|
||||
#define __inline inline /* convert to C++ keyword */
|
||||
#else
|
||||
#ifndef __GNUC__
|
||||
#define __inline /* delete GCC keyword */
|
||||
#endif /* !__GNUC__ */
|
||||
#endif /* !__cplusplus */
|
||||
|
||||
#else /* !(__STDC__ || __cplusplus) */
|
||||
#define __P(protos) () /* traditional C preprocessor */
|
||||
#define __CONCAT(x,y) x/**/y
|
||||
#define __STRING(x) "x"
|
||||
|
||||
#ifndef __GNUC__
|
||||
#define __const /* delete pseudo-ANSI C keywords */
|
||||
#define __inline
|
||||
#define __signed
|
||||
#define __volatile
|
||||
/*
|
||||
* In non-ANSI C environments, new programs will want ANSI-only C keywords
|
||||
* deleted from the program and old programs will want them left alone.
|
||||
* When using a compiler other than gcc, programs using the ANSI C keywords
|
||||
* const, inline etc. as normal identifiers should define -DNO_ANSI_KEYWORDS.
|
||||
* When using "gcc -traditional", we assume that this is the intent; if
|
||||
* __GNUC__ is defined but __STDC__ is not, we leave the new keywords alone.
|
||||
*/
|
||||
#ifndef NO_ANSI_KEYWORDS
|
||||
#define const /* delete ANSI C keywords */
|
||||
#define inline
|
||||
#define signed
|
||||
#define volatile
|
||||
#endif /* !NO_ANSI_KEYWORDS */
|
||||
#endif /* !__GNUC__ */
|
||||
#endif /* !(__STDC__ || __cplusplus) */
|
||||
|
||||
/*
|
||||
* Compiler-dependent macros to help declare dead (non-returning) and
|
||||
* pure (no side effects) functions, and unused variables. They are
|
||||
* null except for versions of gcc that are known to support the features
|
||||
* properly (old versions of gcc-2 supported the dead and pure features
|
||||
* in a different (wrong) way).
|
||||
*/
|
||||
#if !defined(__GNUC__) || \
|
||||
(defined(__GNUC__) && (__GNUC__ < 2 || __GNUC__ == 2 && __GNUC_MINOR__ < 5))
|
||||
#define __dead2
|
||||
#define __pure2
|
||||
#define __unused
|
||||
#endif
|
||||
#if defined(__GNUC__) && (__GNUC__ == 2 && __GNUC_MINOR__ >= 5 && __GNUC_MINOR__ < 7)
|
||||
#define __dead2 __attribute__((__noreturn__))
|
||||
#define __pure2 __attribute__((__const__))
|
||||
#define __unused
|
||||
#endif
|
||||
#if defined(__GNUC__) && (__GNUC__ == 2 && __GNUC_MINOR__ >= 7 || __GNUC__ == 3)
|
||||
#define __dead2 __attribute__((__noreturn__))
|
||||
#define __pure2 __attribute__((__const__))
|
||||
#define __unused __attribute__((__unused__))
|
||||
#endif
|
||||
|
||||
/* XXX: should use `#if __STDC_VERSION__ < 199901'. */
|
||||
#if !(defined(__GNUC__) && (__GNUC__ == 2 && __GNUC_MINOR__ >= 7 || __GNUC__ >= 3))
|
||||
#ifndef __func__
|
||||
#define __func__ NULL
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if (defined(__GNUC__) && __GNUC__ >= 2) && !defined(__STRICT_ANSI__) || \
|
||||
(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901)
|
||||
#define __LONG_LONG_SUPPORTED
|
||||
#endif
|
||||
|
||||
/*
|
||||
* GCC 2.95 provides `__restrict' as an extention to C90 to support the
|
||||
* C99-specific `restrict' type qualifier. We happen to use `__restrict' as
|
||||
* a way to define the `restrict' type qualifier without disturbing older
|
||||
* software that is unaware of C99 keywords.
|
||||
*/
|
||||
#if !((defined(__GNUC__) && __GNUC__ == 2) && __GNUC_MINOR__ == 95)
|
||||
#if !defined(__STDC_VERSION__) || \
|
||||
(defined(__STDC_VERSION__) && __STDC_VERSION__ < 199901)
|
||||
#define __restrict
|
||||
#else
|
||||
#define __restrict restrict
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Compiler-dependent macros to declare that functions take printf-like
|
||||
* or scanf-like arguments. They are null except for versions of gcc
|
||||
* that are known to support the features properly (old versions of gcc-2
|
||||
* didn't permit keeping the keywords out of the application namespace).
|
||||
*/
|
||||
#if !defined(__GNUC__) || \
|
||||
(defined(__GNUC__) && (__GNUC__ < 2 || __GNUC__ == 2 && __GNUC_MINOR__ < 7))
|
||||
#define __printflike(fmtarg, firstvararg)
|
||||
#define __scanflike(fmtarg, firstvararg)
|
||||
#else
|
||||
#define __printflike(fmtarg, firstvararg) \
|
||||
__attribute__((__format__ (__printf__, fmtarg, firstvararg)))
|
||||
#define __scanflike(fmtarg, firstvararg) \
|
||||
__attribute__((__format__ (__scanf__, fmtarg, firstvararg)))
|
||||
#endif
|
||||
|
||||
/* Compiler-dependent macros that rely on FreeBSD-specific extensions. */
|
||||
#if defined(__FreeBSD_cc_version) && __FreeBSD_cc_version >= 300001
|
||||
#define __printf0like(fmtarg, firstvararg) \
|
||||
__attribute__((__format__ (__printf0__, fmtarg, firstvararg)))
|
||||
#else
|
||||
#define __printf0like(fmtarg, firstvararg)
|
||||
#endif
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define __strong_reference(sym,aliassym) \
|
||||
extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)));
|
||||
#ifdef __ELF__
|
||||
#ifdef __STDC__
|
||||
#define __weak_reference(sym,alias) \
|
||||
__asm__(".weak " #alias); \
|
||||
__asm__(".equ " #alias ", " #sym)
|
||||
#define __warn_references(sym,msg) \
|
||||
__asm__(".section .gnu.warning." #sym); \
|
||||
__asm__(".asciz \"" msg "\""); \
|
||||
__asm__(".previous")
|
||||
#else
|
||||
#define __weak_reference(sym,alias) \
|
||||
__asm__(".weak alias"); \
|
||||
__asm__(".equ alias, sym")
|
||||
#define __warn_references(sym,msg) \
|
||||
__asm__(".section .gnu.warning.sym"); \
|
||||
__asm__(".asciz \"msg\""); \
|
||||
__asm__(".previous")
|
||||
#endif /* __STDC__ */
|
||||
#else /* !__ELF__ */
|
||||
#ifdef __STDC__
|
||||
#define __weak_reference(sym,alias) \
|
||||
__asm__(".stabs \"_" #alias "\",11,0,0,0"); \
|
||||
__asm__(".stabs \"_" #sym "\",1,0,0,0")
|
||||
#define __warn_references(sym,msg) \
|
||||
__asm__(".stabs \"" msg "\",30,0,0,0"); \
|
||||
__asm__(".stabs \"_" #sym "\",1,0,0,0")
|
||||
#else
|
||||
#define __weak_reference(sym,alias) \
|
||||
__asm__(".stabs \"_/**/alias\",11,0,0,0"); \
|
||||
__asm__(".stabs \"_/**/sym\",1,0,0,0")
|
||||
#define __warn_references(sym,msg) \
|
||||
__asm__(".stabs msg,30,0,0,0"); \
|
||||
__asm__(".stabs \"_/**/sym\",1,0,0,0")
|
||||
#endif /* __STDC__ */
|
||||
#endif /* __ELF__ */
|
||||
#endif /* __GNUC__ */
|
||||
|
||||
#if defined(__GNUC__) && defined(__ELF__)
|
||||
#define __IDSTRING(name,string) __asm__(".ident\t\"" string "\"")
|
||||
#else
|
||||
#define __IDSTRING(name,string) static const char name[] __unused = string
|
||||
#endif
|
||||
|
||||
#ifndef __RCSID
|
||||
#define __RCSID(s) __IDSTRING(rcsid,s)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Embed the rcs id of a source file in the resulting library. Note that in
|
||||
* more recent ELF binutils, we use .ident allowing the ID to be stripped.
|
||||
* Usage:
|
||||
* __FBSDID("$FreeBSD: src/sys/sys/cdefs.h,v 1.28.2.8 2002/09/18 04:05:13 mikeh Exp $");
|
||||
*/
|
||||
#ifndef __FBSDID
|
||||
#if !defined(lint) && !defined(STRIP_FBSDID)
|
||||
#define __FBSDID(s) __IDSTRING(__CONCAT(__rcsid_,__LINE__),s)
|
||||
#else
|
||||
#define __FBSDID(s) struct __hack
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef __RCSID_SOURCE
|
||||
#define __RCSID_SOURCE(s) __IDSTRING(rcsid_source,s)
|
||||
#endif
|
||||
|
||||
#ifndef __COPYRIGHT
|
||||
#define __COPYRIGHT(s) __IDSTRING(copyright,s)
|
||||
#endif
|
||||
|
||||
/*-
|
||||
* The following definitions are an extension of the behavior originally
|
||||
* implemented in <sys/_posix.h>, but with a different level of granularity.
|
||||
* POSIX.1 requires that the macros we test be defined before any standard
|
||||
* header file is included.
|
||||
*
|
||||
* Here's a quick run-down of the versions:
|
||||
* defined(_POSIX_SOURCE) 1003.1-1988
|
||||
* _POSIX_C_SOURCE == 1 1003.1-1990
|
||||
* _POSIX_C_SOURCE == 2 1003.2-1992 C Language Binding Option
|
||||
* _POSIX_C_SOURCE == 199309 1003.1b-1993
|
||||
* _POSIX_C_SOURCE == 199506 1003.1c-1995, 1003.1i-1995,
|
||||
* and the omnibus ISO/IEC 9945-1: 1996
|
||||
* _POSIX_C_SOURCE == 200112 1003.1-2001
|
||||
*
|
||||
* In addition, the X/Open Portability Guide, which is now the Single UNIX
|
||||
* Specification, defines a feature-test macro which indicates the version of
|
||||
* that specification, and which subsumes _POSIX_C_SOURCE.
|
||||
*
|
||||
* Our macros begin with two underscores to avoid namespace screwage.
|
||||
*/
|
||||
|
||||
/* Deal with IEEE Std. 1003.1-1990, in which _POSIX_C_SOURCE == 1. */
|
||||
#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 1
|
||||
#undef _POSIX_C_SOURCE /* Probably illegal, but beyond caring now. */
|
||||
#define _POSIX_C_SOURCE 199009
|
||||
#endif
|
||||
|
||||
/* Deal with IEEE Std. 1003.2-1992, in which _POSIX_C_SOURCE == 2. */
|
||||
#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 2
|
||||
#undef _POSIX_C_SOURCE
|
||||
#define _POSIX_C_SOURCE 199209
|
||||
#endif
|
||||
|
||||
/* Deal with various X/Open Portability Guides and Single UNIX Spec. */
|
||||
#ifdef _XOPEN_SOURCE
|
||||
#if _XOPEN_SOURCE - 0 >= 600
|
||||
#define __XSI_VISIBLE 600
|
||||
#undef _POSIX_C_SOURCE
|
||||
#define _POSIX_C_SOURCE 200112
|
||||
#elif _XOPEN_SOURCE - 0 >= 500
|
||||
#define __XSI_VISIBLE 500
|
||||
#undef _POSIX_C_SOURCE
|
||||
#define _POSIX_C_SOURCE 199506
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Deal with all versions of POSIX. The ordering relative to the tests above is
|
||||
* important.
|
||||
*/
|
||||
#if defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE)
|
||||
#define _POSIX_C_SOURCE 198808
|
||||
#endif
|
||||
#ifdef _POSIX_C_SOURCE
|
||||
#if _POSIX_C_SOURCE >= 200112
|
||||
#define __POSIX_VISIBLE 200112
|
||||
#define __ISO_C_VISIBLE 1999
|
||||
#elif _POSIX_C_SOURCE >= 199506
|
||||
#define __POSIX_VISIBLE 199506
|
||||
#define __ISO_C_VISIBLE 1990
|
||||
#elif _POSIX_C_SOURCE >= 199309
|
||||
#define __POSIX_VISIBLE 199309
|
||||
#define __ISO_C_VISIBLE 1990
|
||||
#elif _POSIX_C_SOURCE >= 199209
|
||||
#define __POSIX_VISIBLE 199209
|
||||
#define __ISO_C_VISIBLE 1990
|
||||
#elif _POSIX_C_SOURCE >= 199009
|
||||
#define __POSIX_VISIBLE 199009
|
||||
#define __ISO_C_VISIBLE 1990
|
||||
#else
|
||||
#define __POSIX_VISIBLE 198808
|
||||
#define __ISO_C_VISIBLE 0
|
||||
#endif /* _POSIX_C_SOURCE */
|
||||
#else
|
||||
/*-
|
||||
* Deal with _ANSI_SOURCE:
|
||||
* If it is defined, and no other compilation environment is explicitly
|
||||
* requested, then define our internal feature-test macros to zero. This
|
||||
* makes no difference to the preprocessor (undefined symbols in preprocessing
|
||||
* expressions are defined to have value zero), but makes it more convenient for
|
||||
* a test program to print out the values.
|
||||
*
|
||||
* If a program mistakenly defines _ANSI_SOURCE and some other macro such as
|
||||
* _POSIX_C_SOURCE, we will assume that it wants the broader compilation
|
||||
* environment (and in fact we will never get here).
|
||||
*/
|
||||
#ifdef _ANSI_SOURCE /* Hide almost everything. */
|
||||
#define __POSIX_VISIBLE 0
|
||||
#define __XSI_VISIBLE 0
|
||||
#define __BSD_VISIBLE 0
|
||||
#define __ISO_C_VISIBLE 1990
|
||||
#else /* Default environment: show everything. */
|
||||
#define __POSIX_VISIBLE 200112
|
||||
#define __XSI_VISIBLE 600
|
||||
#define __BSD_VISIBLE 1
|
||||
#define __ISO_C_VISIBLE 1999
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif /* !_SYS_CDEFS_H_ */
|
||||
@@ -0,0 +1,72 @@
|
||||
/* fnv_hash.h */
|
||||
|
||||
/* Copyright 2001-2005 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* Fowler / Noll / Vo Hash (FNV Hash)
|
||||
* http://www.isthe.com/chongo/tech/comp/fnv/
|
||||
*
|
||||
* This is an implementation of the algorithms posted above.
|
||||
* This file is placed in the public domain by Peter Wemm.
|
||||
*
|
||||
* $FreeBSD: src/sys/sys/fnv_hash.h,v 1.2.2.1 2001/03/21 10:50:59 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01n,09jan12,h_x Move extern "C" after last header file include.
|
||||
01m,07feb05,vvv _KERNEL cleanup
|
||||
01l,17jan05,vvv osdep.h cleanup
|
||||
01k,16jul04,vvv moved function definitions to fnvHash.c to fix compiler
|
||||
warnings
|
||||
01j,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01i,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01h,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01g,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01f,23jul03,vvv added _KERNEL protection to fix warnings (SPR #89813)
|
||||
01e,10jun03,vvv include netVersion.h
|
||||
01d,15may03,pas changed u_int64_t (from internal types.h) to uint64_t
|
||||
(from Tornado types.h)
|
||||
01c,05may03,ppp adding inclusion of clarinet.h for non-coreip build
|
||||
01b,29apr03,syy Added #ifdef for __cplusplus
|
||||
01a,01jan03,pas Ported from FreeBSD 4.7
|
||||
*/
|
||||
|
||||
#ifndef __INCfnv_hashh
|
||||
#define __INCfnv_hashh
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
|
||||
#include <vxWorks.h>
|
||||
#include <netVersion.h>
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef uint32_t Fnv32_t;
|
||||
typedef uint64_t Fnv64_t;
|
||||
|
||||
#define FNV1_32_INIT ((Fnv32_t) 33554467UL)
|
||||
#define FNV1_64_INIT ((Fnv64_t) 0xcbf29ce484222325ULL)
|
||||
|
||||
#define FNV_32_PRIME ((Fnv32_t) 0x01000193UL)
|
||||
#define FNV_64_PRIME ((Fnv64_t) 0x100000001b3ULL)
|
||||
|
||||
extern __inline Fnv32_t fnv_32_buf(const void *buf, size_t len, Fnv32_t hval);
|
||||
|
||||
extern __inline Fnv32_t fnv_32_str(const char *str, Fnv32_t hval);
|
||||
|
||||
extern __inline Fnv64_t fnv_64_buf(const void *buf, size_t len, Fnv64_t hval);
|
||||
|
||||
extern __inline Fnv64_t fnv_64_str(const char *str, Fnv64_t hval);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* ! __INCfnv_hashh */
|
||||
@@ -0,0 +1,583 @@
|
||||
/* queue.h - linked-list and queue definitions */
|
||||
|
||||
/* Copyright 2001-2005 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1991, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)queue.h 8.5 (Berkeley) 8/20/94
|
||||
* $FreeBSD: src/sys/sys/queue.h,v 1.32.2.7 2002/04/17 14:21:02 des Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01m,09jan12,h_x Move extern "C" after last header file include.
|
||||
01l,07feb05,vvv _KERNEL cleanup
|
||||
01k,03oct04,dlk Fix some diab compiler warnings by using do {} while (FALSE)
|
||||
instead of do {} while (0) (wierd, but it works).
|
||||
01j,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01i,12jul04,vvv converted insque/remque to macros to fix compiler warnings
|
||||
01h,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01g,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01f,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01e,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01d,10jun03,vvv include netVersion.h
|
||||
01c,01feb03,pas merge from FreeBSD 4.7 - use access macros internally
|
||||
01b,06sep02,hsh add c++ protection
|
||||
01a,15jul02,rvr inline function insque and remque function defies for
|
||||
diab (teamf1)
|
||||
*/
|
||||
|
||||
#ifndef _SYS_QUEUE_H_
|
||||
#define _SYS_QUEUE_H_
|
||||
|
||||
#include <netVersion.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This file defines five types of data structures: singly-linked lists,
|
||||
* singly-linked tail queues, lists, tail queues, and circular queues.
|
||||
*
|
||||
* A singly-linked list is headed by a single forward pointer. The elements
|
||||
* are singly linked for minimum space and pointer manipulation overhead at
|
||||
* the expense of O(n) removal for arbitrary elements. New elements can be
|
||||
* added to the list after an existing element or at the head of the list.
|
||||
* Elements being removed from the head of the list should use the explicit
|
||||
* macro for this purpose for optimum efficiency. A singly-linked list may
|
||||
* only be traversed in the forward direction. Singly-linked lists are ideal
|
||||
* for applications with large datasets and few or no removals or for
|
||||
* implementing a LIFO queue.
|
||||
*
|
||||
* A singly-linked tail queue is headed by a pair of pointers, one to the
|
||||
* head of the list and the other to the tail of the list. The elements are
|
||||
* singly linked for minimum space and pointer manipulation overhead at the
|
||||
* expense of O(n) removal for arbitrary elements. New elements can be added
|
||||
* to the list after an existing element, at the head of the list, or at the
|
||||
* end of the list. Elements being removed from the head of the tail queue
|
||||
* should use the explicit macro for this purpose for optimum efficiency.
|
||||
* A singly-linked tail queue may only be traversed in the forward direction.
|
||||
* Singly-linked tail queues are ideal for applications with large datasets
|
||||
* and few or no removals or for implementing a FIFO queue.
|
||||
*
|
||||
* A list is headed by a single forward pointer (or an array of forward
|
||||
* pointers for a hash table header). The elements are doubly linked
|
||||
* so that an arbitrary element can be removed without a need to
|
||||
* traverse the list. New elements can be added to the list before
|
||||
* or after an existing element or at the head of the list. A list
|
||||
* may only be traversed in the forward direction.
|
||||
*
|
||||
* A tail queue is headed by a pair of pointers, one to the head of the
|
||||
* list and the other to the tail of the list. The elements are doubly
|
||||
* linked so that an arbitrary element can be removed without a need to
|
||||
* traverse the list. New elements can be added to the list before or
|
||||
* after an existing element, at the head of the list, or at the end of
|
||||
* the list. A tail queue may be traversed in either direction.
|
||||
*
|
||||
* A circle queue is headed by a pair of pointers, one to the head of the
|
||||
* list and the other to the tail of the list. The elements are doubly
|
||||
* linked so that an arbitrary element can be removed without a need to
|
||||
* traverse the list. New elements can be added to the list before or after
|
||||
* an existing element, at the head of the list, or at the end of the list.
|
||||
* A circle queue may be traversed in either direction, but has a more
|
||||
* complex end of list detection.
|
||||
*
|
||||
* For details on the use of these macros, see the queue(3) manual page.
|
||||
*
|
||||
*
|
||||
* SLIST LIST STAILQ TAILQ CIRCLEQ
|
||||
* _HEAD + + + + +
|
||||
* _HEAD_INITIALIZER + + + + +
|
||||
* _ENTRY + + + + +
|
||||
* _INIT + + + + +
|
||||
* _EMPTY + + + + +
|
||||
* _FIRST + + + + +
|
||||
* _NEXT + + + + +
|
||||
* _PREV - - - + +
|
||||
* _LAST - - + + +
|
||||
* _FOREACH + + + + +
|
||||
* _FOREACH_REVERSE - - - + +
|
||||
* _INSERT_HEAD + + + + +
|
||||
* _INSERT_BEFORE - + - + +
|
||||
* _INSERT_AFTER + + + + +
|
||||
* _INSERT_TAIL - - + + +
|
||||
* _REMOVE_HEAD + - + - -
|
||||
* _REMOVE + + + + +
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* Singly-linked List declarations.
|
||||
*/
|
||||
#define SLIST_HEAD(name, type) \
|
||||
struct name { \
|
||||
struct type *slh_first; /* first element */ \
|
||||
}
|
||||
|
||||
#define SLIST_HEAD_INITIALIZER(head) \
|
||||
{ NULL }
|
||||
|
||||
#define SLIST_ENTRY(type) \
|
||||
struct { \
|
||||
struct type *sle_next; /* next element */ \
|
||||
}
|
||||
|
||||
/*
|
||||
* Singly-linked List functions.
|
||||
*/
|
||||
#define SLIST_EMPTY(head) ((head)->slh_first == NULL)
|
||||
|
||||
#define SLIST_FIRST(head) ((head)->slh_first)
|
||||
|
||||
#define SLIST_FOREACH(var, head, field) \
|
||||
for ((var) = SLIST_FIRST((head)); \
|
||||
(var); \
|
||||
(var) = SLIST_NEXT((var), field))
|
||||
|
||||
#define SLIST_INIT(head) do { \
|
||||
SLIST_FIRST((head)) = NULL; \
|
||||
} while (FALSE)
|
||||
|
||||
#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \
|
||||
SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \
|
||||
SLIST_NEXT((slistelm), field) = (elm); \
|
||||
} while (FALSE)
|
||||
|
||||
#define SLIST_INSERT_HEAD(head, elm, field) do { \
|
||||
SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \
|
||||
SLIST_FIRST((head)) = (elm); \
|
||||
} while (FALSE)
|
||||
|
||||
#define SLIST_NEXT(elm, field) ((elm)->field.sle_next)
|
||||
|
||||
#define SLIST_REMOVE(head, elm, type, field) do { \
|
||||
if (SLIST_FIRST((head)) == (elm)) { \
|
||||
SLIST_REMOVE_HEAD((head), field); \
|
||||
} \
|
||||
else { \
|
||||
struct type *curelm = SLIST_FIRST((head)); \
|
||||
while (SLIST_NEXT(curelm, field) != (elm)) \
|
||||
curelm = SLIST_NEXT(curelm, field); \
|
||||
SLIST_NEXT(curelm, field) = \
|
||||
SLIST_NEXT(SLIST_NEXT(curelm, field), field); \
|
||||
} \
|
||||
} while (FALSE)
|
||||
|
||||
#define SLIST_REMOVE_HEAD(head, field) do { \
|
||||
SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \
|
||||
} while (FALSE)
|
||||
|
||||
/*
|
||||
* Singly-linked Tail queue declarations.
|
||||
*/
|
||||
#define STAILQ_HEAD(name, type) \
|
||||
struct name { \
|
||||
struct type *stqh_first;/* first element */ \
|
||||
struct type **stqh_last;/* addr of last next element */ \
|
||||
}
|
||||
|
||||
#define STAILQ_HEAD_INITIALIZER(head) \
|
||||
{ NULL, &(head).stqh_first }
|
||||
|
||||
#define STAILQ_ENTRY(type) \
|
||||
struct { \
|
||||
struct type *stqe_next; /* next element */ \
|
||||
}
|
||||
|
||||
/*
|
||||
* Singly-linked Tail queue functions.
|
||||
*/
|
||||
#define STAILQ_EMPTY(head) ((head)->stqh_first == NULL)
|
||||
|
||||
#define STAILQ_FIRST(head) ((head)->stqh_first)
|
||||
|
||||
#define STAILQ_FOREACH(var, head, field) \
|
||||
for((var) = STAILQ_FIRST((head)); \
|
||||
(var); \
|
||||
(var) = STAILQ_NEXT((var), field))
|
||||
|
||||
#define STAILQ_INIT(head) do { \
|
||||
STAILQ_FIRST((head)) = NULL; \
|
||||
(head)->stqh_last = &STAILQ_FIRST((head)); \
|
||||
} while (FALSE)
|
||||
|
||||
#define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \
|
||||
if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\
|
||||
(head)->stqh_last = &STAILQ_NEXT((elm), field); \
|
||||
STAILQ_NEXT((tqelm), field) = (elm); \
|
||||
} while (FALSE)
|
||||
|
||||
#define STAILQ_INSERT_HEAD(head, elm, field) do { \
|
||||
if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \
|
||||
(head)->stqh_last = &STAILQ_NEXT((elm), field); \
|
||||
STAILQ_FIRST((head)) = (elm); \
|
||||
} while (FALSE)
|
||||
|
||||
#define STAILQ_INSERT_TAIL(head, elm, field) do { \
|
||||
STAILQ_NEXT((elm), field) = NULL; \
|
||||
*(head)->stqh_last = (elm); \
|
||||
(head)->stqh_last = &STAILQ_NEXT((elm), field); \
|
||||
} while (FALSE)
|
||||
|
||||
#define STAILQ_LAST(head, type, field) \
|
||||
(STAILQ_EMPTY(head) ? \
|
||||
NULL : \
|
||||
((struct type *) \
|
||||
((char *)((head)->stqh_last) - __offsetof(struct type, field))))
|
||||
|
||||
#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
|
||||
|
||||
#define STAILQ_REMOVE(head, elm, type, field) do { \
|
||||
if (STAILQ_FIRST((head)) == (elm)) { \
|
||||
STAILQ_REMOVE_HEAD(head, field); \
|
||||
} \
|
||||
else { \
|
||||
struct type *curelm = STAILQ_FIRST((head)); \
|
||||
while (STAILQ_NEXT(curelm, field) != (elm)) \
|
||||
curelm = STAILQ_NEXT(curelm, field); \
|
||||
if ((STAILQ_NEXT(curelm, field) = \
|
||||
STAILQ_NEXT(STAILQ_NEXT(curelm, field), field)) == NULL)\
|
||||
(head)->stqh_last = &STAILQ_NEXT((curelm), field);\
|
||||
} \
|
||||
} while (FALSE)
|
||||
|
||||
#define STAILQ_REMOVE_HEAD(head, field) do { \
|
||||
if ((STAILQ_FIRST((head)) = \
|
||||
STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \
|
||||
(head)->stqh_last = &STAILQ_FIRST((head)); \
|
||||
} while (FALSE)
|
||||
|
||||
#define STAILQ_REMOVE_HEAD_UNTIL(head, elm, field) do { \
|
||||
if ((STAILQ_FIRST((head)) = STAILQ_NEXT((elm), field)) == NULL) \
|
||||
(head)->stqh_last = &STAILQ_FIRST((head)); \
|
||||
} while (FALSE)
|
||||
|
||||
/*
|
||||
* List declarations.
|
||||
*/
|
||||
#define LIST_HEAD(name, type) \
|
||||
struct name { \
|
||||
struct type *lh_first; /* first element */ \
|
||||
}
|
||||
|
||||
#define LIST_HEAD_INITIALIZER(head) \
|
||||
{ NULL }
|
||||
|
||||
#define LIST_ENTRY(type) \
|
||||
struct { \
|
||||
struct type *le_next; /* next element */ \
|
||||
struct type **le_prev; /* address of previous next element */ \
|
||||
}
|
||||
|
||||
/*
|
||||
* List functions.
|
||||
*/
|
||||
|
||||
#define LIST_EMPTY(head) ((head)->lh_first == NULL)
|
||||
|
||||
#define LIST_FIRST(head) ((head)->lh_first)
|
||||
|
||||
#define LIST_FOREACH(var, head, field) \
|
||||
for ((var) = LIST_FIRST((head)); \
|
||||
(var); \
|
||||
(var) = LIST_NEXT((var), field))
|
||||
|
||||
#define LIST_INIT(head) do { \
|
||||
LIST_FIRST((head)) = NULL; \
|
||||
} while (FALSE)
|
||||
|
||||
#define LIST_INSERT_AFTER(listelm, elm, field) do { \
|
||||
if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\
|
||||
LIST_NEXT((listelm), field)->field.le_prev = \
|
||||
&LIST_NEXT((elm), field); \
|
||||
LIST_NEXT((listelm), field) = (elm); \
|
||||
(elm)->field.le_prev = &LIST_NEXT((listelm), field); \
|
||||
} while (FALSE)
|
||||
|
||||
#define LIST_INSERT_BEFORE(listelm, elm, field) do { \
|
||||
(elm)->field.le_prev = (listelm)->field.le_prev; \
|
||||
LIST_NEXT((elm), field) = (listelm); \
|
||||
*(listelm)->field.le_prev = (elm); \
|
||||
(listelm)->field.le_prev = &LIST_NEXT((elm), field); \
|
||||
} while (FALSE)
|
||||
|
||||
#define LIST_INSERT_HEAD(head, elm, field) do { \
|
||||
if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \
|
||||
LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\
|
||||
LIST_FIRST((head)) = (elm); \
|
||||
(elm)->field.le_prev = &LIST_FIRST((head)); \
|
||||
} while (FALSE)
|
||||
|
||||
#define LIST_NEXT(elm, field) ((elm)->field.le_next)
|
||||
|
||||
#define LIST_REMOVE(elm, field) do { \
|
||||
if (LIST_NEXT((elm), field) != NULL) \
|
||||
LIST_NEXT((elm), field)->field.le_prev = \
|
||||
(elm)->field.le_prev; \
|
||||
*(elm)->field.le_prev = LIST_NEXT((elm), field); \
|
||||
} while (FALSE)
|
||||
|
||||
/*
|
||||
* Tail queue declarations.
|
||||
*/
|
||||
#define TAILQ_HEAD(name, type) \
|
||||
struct name { \
|
||||
struct type *tqh_first; /* first element */ \
|
||||
struct type **tqh_last; /* addr of last next element */ \
|
||||
}
|
||||
|
||||
#define TAILQ_HEAD_INITIALIZER(head) \
|
||||
{ NULL, &(head).tqh_first }
|
||||
|
||||
#define TAILQ_ENTRY(type) \
|
||||
struct { \
|
||||
struct type *tqe_next; /* next element */ \
|
||||
struct type **tqe_prev; /* address of previous next element */ \
|
||||
}
|
||||
|
||||
/*
|
||||
* Tail queue functions.
|
||||
*/
|
||||
#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL)
|
||||
|
||||
#define TAILQ_FIRST(head) ((head)->tqh_first)
|
||||
|
||||
#define TAILQ_FOREACH(var, head, field) \
|
||||
for ((var) = TAILQ_FIRST((head)); \
|
||||
(var); \
|
||||
(var) = TAILQ_NEXT((var), field))
|
||||
|
||||
#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
|
||||
for ((var) = TAILQ_LAST((head), headname); \
|
||||
(var); \
|
||||
(var) = TAILQ_PREV((var), headname, field))
|
||||
|
||||
#define TAILQ_INIT(head) do { \
|
||||
TAILQ_FIRST((head)) = NULL; \
|
||||
(head)->tqh_last = &TAILQ_FIRST((head)); \
|
||||
} while (FALSE)
|
||||
|
||||
#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
|
||||
if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\
|
||||
TAILQ_NEXT((elm), field)->field.tqe_prev = \
|
||||
&TAILQ_NEXT((elm), field); \
|
||||
else \
|
||||
(head)->tqh_last = &TAILQ_NEXT((elm), field); \
|
||||
TAILQ_NEXT((listelm), field) = (elm); \
|
||||
(elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field); \
|
||||
} while (FALSE)
|
||||
|
||||
#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \
|
||||
(elm)->field.tqe_prev = (listelm)->field.tqe_prev; \
|
||||
TAILQ_NEXT((elm), field) = (listelm); \
|
||||
*(listelm)->field.tqe_prev = (elm); \
|
||||
(listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field); \
|
||||
} while (FALSE)
|
||||
|
||||
#define TAILQ_INSERT_HEAD(head, elm, field) do { \
|
||||
if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \
|
||||
TAILQ_FIRST((head))->field.tqe_prev = \
|
||||
&TAILQ_NEXT((elm), field); \
|
||||
else \
|
||||
(head)->tqh_last = &TAILQ_NEXT((elm), field); \
|
||||
TAILQ_FIRST((head)) = (elm); \
|
||||
(elm)->field.tqe_prev = &TAILQ_FIRST((head)); \
|
||||
} while (FALSE)
|
||||
|
||||
#define TAILQ_INSERT_TAIL(head, elm, field) do { \
|
||||
TAILQ_NEXT((elm), field) = NULL; \
|
||||
(elm)->field.tqe_prev = (head)->tqh_last; \
|
||||
*(head)->tqh_last = (elm); \
|
||||
(head)->tqh_last = &TAILQ_NEXT((elm), field); \
|
||||
} while (FALSE)
|
||||
|
||||
#define TAILQ_LAST(head, headname) \
|
||||
(*(((struct headname *)((head)->tqh_last))->tqh_last))
|
||||
|
||||
#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
|
||||
|
||||
#define TAILQ_PREV(elm, headname, field) \
|
||||
(*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
|
||||
|
||||
#define TAILQ_REMOVE(head, elm, field) do { \
|
||||
if ((TAILQ_NEXT((elm), field)) != NULL) \
|
||||
TAILQ_NEXT((elm), field)->field.tqe_prev = \
|
||||
(elm)->field.tqe_prev; \
|
||||
else \
|
||||
(head)->tqh_last = (elm)->field.tqe_prev; \
|
||||
*(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \
|
||||
} while (FALSE)
|
||||
|
||||
/*
|
||||
* Circular queue declarations.
|
||||
*/
|
||||
#define CIRCLEQ_HEAD(name, type) \
|
||||
struct name { \
|
||||
struct type *cqh_first; /* first element */ \
|
||||
struct type *cqh_last; /* last element */ \
|
||||
}
|
||||
|
||||
#define CIRCLEQ_HEAD_INITIALIZER(head) \
|
||||
{ (void *)&(head), (void *)&(head) }
|
||||
|
||||
#define CIRCLEQ_ENTRY(type) \
|
||||
struct { \
|
||||
struct type *cqe_next; /* next element */ \
|
||||
struct type *cqe_prev; /* previous element */ \
|
||||
}
|
||||
|
||||
/*
|
||||
* Circular queue functions.
|
||||
*/
|
||||
#define CIRCLEQ_EMPTY(head) ((head)->cqh_first == (void *)(head))
|
||||
|
||||
#define CIRCLEQ_FIRST(head) ((head)->cqh_first)
|
||||
|
||||
#define CIRCLEQ_FOREACH(var, head, field) \
|
||||
for ((var) = CIRCLEQ_FIRST((head)); \
|
||||
(var) != (void *)(head) || ((var) = NULL); \
|
||||
(var) = CIRCLEQ_NEXT((var), field))
|
||||
|
||||
#define CIRCLEQ_FOREACH_REVERSE(var, head, field) \
|
||||
for ((var) = CIRCLEQ_LAST((head)); \
|
||||
(var) != (void *)(head) || ((var) = NULL); \
|
||||
(var) = CIRCLEQ_PREV((var), field))
|
||||
|
||||
#define CIRCLEQ_INIT(head) do { \
|
||||
CIRCLEQ_FIRST((head)) = (void *)(head); \
|
||||
CIRCLEQ_LAST((head)) = (void *)(head); \
|
||||
} while (FALSE)
|
||||
|
||||
#define CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do { \
|
||||
CIRCLEQ_NEXT((elm), field) = CIRCLEQ_NEXT((listelm), field); \
|
||||
CIRCLEQ_PREV((elm), field) = (listelm); \
|
||||
if (CIRCLEQ_NEXT((listelm), field) == (void *)(head)) \
|
||||
CIRCLEQ_LAST((head)) = (elm); \
|
||||
else \
|
||||
CIRCLEQ_PREV(CIRCLEQ_NEXT((listelm), field), field) = (elm);\
|
||||
CIRCLEQ_NEXT((listelm), field) = (elm); \
|
||||
} while (FALSE)
|
||||
|
||||
#define CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do { \
|
||||
CIRCLEQ_NEXT((elm), field) = (listelm); \
|
||||
CIRCLEQ_PREV((elm), field) = CIRCLEQ_PREV((listelm), field); \
|
||||
if (CIRCLEQ_PREV((listelm), field) == (void *)(head)) \
|
||||
CIRCLEQ_FIRST((head)) = (elm); \
|
||||
else \
|
||||
CIRCLEQ_NEXT(CIRCLEQ_PREV((listelm), field), field) = (elm);\
|
||||
CIRCLEQ_PREV((listelm), field) = (elm); \
|
||||
} while (FALSE)
|
||||
|
||||
#define CIRCLEQ_INSERT_HEAD(head, elm, field) do { \
|
||||
CIRCLEQ_NEXT((elm), field) = CIRCLEQ_FIRST((head)); \
|
||||
CIRCLEQ_PREV((elm), field) = (void *)(head); \
|
||||
if (CIRCLEQ_LAST((head)) == (void *)(head)) \
|
||||
CIRCLEQ_LAST((head)) = (elm); \
|
||||
else \
|
||||
CIRCLEQ_PREV(CIRCLEQ_FIRST((head)), field) = (elm); \
|
||||
CIRCLEQ_FIRST((head)) = (elm); \
|
||||
} while (FALSE)
|
||||
|
||||
#define CIRCLEQ_INSERT_TAIL(head, elm, field) do { \
|
||||
CIRCLEQ_NEXT((elm), field) = (void *)(head); \
|
||||
CIRCLEQ_PREV((elm), field) = CIRCLEQ_LAST((head)); \
|
||||
if (CIRCLEQ_FIRST((head)) == (void *)(head)) \
|
||||
CIRCLEQ_FIRST((head)) = (elm); \
|
||||
else \
|
||||
CIRCLEQ_NEXT(CIRCLEQ_LAST((head)), field) = (elm); \
|
||||
CIRCLEQ_LAST((head)) = (elm); \
|
||||
} while (FALSE)
|
||||
|
||||
#define CIRCLEQ_LAST(head) ((head)->cqh_last)
|
||||
|
||||
#define CIRCLEQ_NEXT(elm,field) ((elm)->field.cqe_next)
|
||||
|
||||
#define CIRCLEQ_PREV(elm,field) ((elm)->field.cqe_prev)
|
||||
|
||||
#define CIRCLEQ_REMOVE(head, elm, field) do { \
|
||||
if (CIRCLEQ_NEXT((elm), field) == (void *)(head)) \
|
||||
CIRCLEQ_LAST((head)) = CIRCLEQ_PREV((elm), field); \
|
||||
else \
|
||||
CIRCLEQ_PREV(CIRCLEQ_NEXT((elm), field), field) = \
|
||||
CIRCLEQ_PREV((elm), field); \
|
||||
if (CIRCLEQ_PREV((elm), field) == (void *)(head)) \
|
||||
CIRCLEQ_FIRST((head)) = CIRCLEQ_NEXT((elm), field); \
|
||||
else \
|
||||
CIRCLEQ_NEXT(CIRCLEQ_PREV((elm), field), field) = \
|
||||
CIRCLEQ_NEXT((elm), field); \
|
||||
} while (FALSE)
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
|
||||
/*
|
||||
* XXX insque() and remque() are an old way of handling certain queues.
|
||||
* They assume that all queue heads look alike.
|
||||
*
|
||||
* insque and remque are short and are not used much so it should be ok to
|
||||
* implement them as macros rather than inline functions.
|
||||
*/
|
||||
|
||||
struct quehead {
|
||||
struct quehead *qh_link;
|
||||
struct quehead *qh_rlink;
|
||||
};
|
||||
|
||||
#define insque(a, b) \
|
||||
{ \
|
||||
struct quehead * element = (struct quehead *) (a); \
|
||||
struct quehead * head = (struct quehead *) (b); \
|
||||
\
|
||||
element->qh_link = head->qh_link; \
|
||||
element->qh_rlink = head; \
|
||||
head->qh_link = element; \
|
||||
element->qh_link->qh_rlink = element; \
|
||||
}
|
||||
|
||||
#define remque(a) \
|
||||
{ \
|
||||
struct quehead * element = (struct quehead *) (a); \
|
||||
\
|
||||
element->qh_link->qh_rlink = element->qh_rlink; \
|
||||
element->qh_rlink->qh_link = element->qh_link; \
|
||||
element->qh_rlink = 0; \
|
||||
}
|
||||
|
||||
#endif /* _WRS_KERNEL */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !_SYS_QUEUE_H_ */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,452 @@
|
||||
/* socket.h - public socket structures and definitions */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2001-2010 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 1982, 1985, 1986, 1988, 1993, 1994
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)socket.h 8.4 (Berkeley) 2/21/94
|
||||
* $FreeBSD: src/sys/sys/socket.h,v 1.39.2.7 2001/07/03 11:02:01 ume Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
02n,29nov16,rjq Change _SS_MAXSIZE to be 128. (VXW6-85909)
|
||||
02m,09jan12,h_x Move extern "C" after last header file include.
|
||||
02l,17mar11,fei WIND00258872 : _ALIGNBYTES does not compliance with
|
||||
IP_CMSG_ALIGN_SIZE.
|
||||
02k,10jan10,h_w Add AF_MIPC support
|
||||
02j,09jun09,dlk LP64 conversion and socket API POSIXification.
|
||||
02j,27may09,kjn Add missing "struct gre_key"
|
||||
02i,16oct08,dlk Adding SO_X_VR definition (WIND00137543), and other SO_X
|
||||
options from ipcom.
|
||||
02h,28may08,jre Adding fix for defect WIND00122519
|
||||
02g,23jan08,jbl Adding NET_RT definitions back in (Defect WIND00110881)
|
||||
02f,12dec06,kch Moved ipnet/ipioctl.h include to <sys/ioctl.h>.
|
||||
02e,30nov06,kch Added ipnet/ipioctl.h include.
|
||||
02d,25oct06,kch Changed __ss_align in sockaddr_storage from int64_t to int32_t.
|
||||
02c,03oct06,kch Removed unsupported AF type for IPNet integration. Also
|
||||
updated the value assigned to the socket options.
|
||||
02b,15sep05,kch Added priority_tagged boolean to sovlan structure for
|
||||
priority-tagged frames support (SPR #112513).
|
||||
02a,29aug05,kch Added on/off option to sovlan structure. Corrected
|
||||
SO_VLAN define to use value that falls in the range
|
||||
for socket option that is kept in so_options (SPR #112068).
|
||||
01z,09aug05,kch Added SO_VLAN socket level option and sovlan structure
|
||||
definition for socket-based vlan support.
|
||||
01y,12jul05,vvv merged MSG_NOTIFICATION from kame-20050404-freebsd411
|
||||
01x,16may05,kch Added MOBILITY address & protocol family.
|
||||
01x,12may05,als Add AF_TIPC support
|
||||
01w,05mar05,dlk Move SO_VSNUM and SO_VSID out of so_options flags.
|
||||
Add SO_LINGERRESET option.
|
||||
01v,07feb05,vvv _KERNEL cleanup
|
||||
01u,12jan05,vvv osdep.h cleanup
|
||||
01t,14oct04,nee include osdep.h and machdep.h when _KERNEL is defined
|
||||
(SPR #102593)
|
||||
01s,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01r,19jul04,spm enabled socket operations from different virtual stacks
|
||||
01q,15jun04,nee adding the SOCKADDR typedef
|
||||
01p,12jan04,bwa turned-on MSG_EXP option
|
||||
01o,02jan04,vvv added socket option SO_CONNTIMEO
|
||||
01n,21nov03,bwa added COMP protocol-specific socket flags and options
|
||||
01m,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01l,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01k,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01j,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01i,27sep03,vvv made SOCKADDR_STORAGE_T definition consistent between
|
||||
kernel and non-kernel builds
|
||||
01h,06aug03,nee Accordion Base6 merge from ACCORDION_BASE6_MERGE_BASELINE
|
||||
label
|
||||
01g,10jun03,vvv include netVersion.h
|
||||
01f,09may03,vvv included vxWorks.h
|
||||
01e,06sep02,hsh add c++ protection
|
||||
01d,03feb02,ham changes for tornado build.
|
||||
01c,13sep01,ann enabling the cmsg defines
|
||||
01b,14aug01,ann correcting the header file inclusions
|
||||
01a,02aug01,ann performed the initial-port from FreeBSD 4.3 v 1.39.2.7
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _SYS_SOCKET_H_
|
||||
#define _SYS_SOCKET_H_
|
||||
|
||||
#include <vxWorks.h>
|
||||
|
||||
#if (defined(_WRS_CONFIG_FEATURE_IPNET_INET6) || defined(_WRS_CONFIG_FEATURE_IPNET_USR_INET6) || \
|
||||
defined(_WRS_CONFIG_FEATURE_IPNET_INET6_ONLY) || defined(_WRS_CONFIG_FEATURE_IPNET_USR_INET6_ONLY) ||\
|
||||
defined(_WRS_CONFIG_FEATURE_IPLITE_INET6)) && !defined(IPCOM_USE_INET6)
|
||||
#ifndef INET6
|
||||
#define INET6
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Definitions related to sockets: types, address families, options.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Data types.
|
||||
*/
|
||||
typedef u_char sa_family_t;
|
||||
|
||||
/*
|
||||
* The socklen_t type is used in the POSIX-compatible socket APIs
|
||||
* to denote the lengths of buffers containing such things as socket
|
||||
* addresses, socket options, and control messages. All of these
|
||||
* are generally fairly short. In previous VxWorks versions,
|
||||
* the socklen_t type was not used in the prototypes of most socket
|
||||
* functions; instead, the 'int' type was used. To decrease the number
|
||||
* of potential build failures resulting from the conversion to the
|
||||
* POSIX-compatible prototypes, in particular the change of certain
|
||||
* arguments from 'int *' to 'socklen_t *', the socklen_t type
|
||||
* is changed in this release from 'unsigned int' to 'int',
|
||||
* provided that SOCKLEN_T_UNSIGNED is not defined when this header
|
||||
* is read. It is not defined by default. Note, however, that
|
||||
* VxWorks socket layer code <is> compiled with SOCKLEN_T_UNSIGNED
|
||||
* defined. Since the socket layer expects and returns socklen_t
|
||||
* values that are always positive when viewed as signed 'int',
|
||||
* no run-time problems are expected when operating the socket layer
|
||||
* with applications compiled without SOCKLEN_T_UNSIGNED. While
|
||||
* some build-time issues may occur, they are expected to be fairly
|
||||
* uncommon.
|
||||
*
|
||||
* In a future release, socklen_t will be restored to an unsigned
|
||||
* type. Application code is encouraged to use variables of the
|
||||
* socklen_t type (and use them in ways that are insensitive to
|
||||
* the type's signedness), to avoid conversion issues when this
|
||||
* occurs. In the interim, application code may define the macro
|
||||
* SOCKLEN_T_UNSIGNED to restore the same unsigned socklen_t type
|
||||
* as the socket layer uses, and as in previous VxWorks versions.
|
||||
*/
|
||||
#ifdef SOCKLEN_T_UNSIGNED
|
||||
typedef unsigned int socklen_t;
|
||||
#else
|
||||
typedef int socklen_t;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Types
|
||||
*/
|
||||
#define SOCK_STREAM 1 /* stream socket */
|
||||
#define SOCK_DGRAM 2 /* datagram socket */
|
||||
#define SOCK_RAW 3 /* raw-protocol interface */
|
||||
#define SOCK_RDM 4 /* reliably-delivered message */
|
||||
#define SOCK_SEQPACKET 5 /* sequenced packet stream */
|
||||
#define SOCK_PACKET 10 /* linux packet socket API. */
|
||||
|
||||
/*
|
||||
* Option flags per-socket.
|
||||
*/
|
||||
#define SO_DEBUG 0x0001 /* turn on debugging info recording */
|
||||
#define SO_REUSEADDR 0x0004 /* allow local address reuse */
|
||||
#define SO_KEEPALIVE 0x0008 /* keep connections alive */
|
||||
#define SO_DONTROUTE 0x0010 /* just use interface addresses */
|
||||
#define SO_RCVLOWAT 0x0012 /* receive low-water mark */
|
||||
#define SO_SNDLOWAT 0x0013 /* send low-water mark */
|
||||
#define SO_SNDTIMEO 0x1005 /* send timeout */
|
||||
#define SO_ACCEPTCONN 0x001e /* socket has had listen() */
|
||||
#define SO_BROADCAST 0x0020 /* permit sending of broadcast msgs */
|
||||
#define SO_USELOOPBACK 0x0040 /* bypass hardware when possible */
|
||||
#define SO_LINGER 0x0080 /* linger on close if data present */
|
||||
#define SO_REUSEPORT 0x0200 /* allow local address & port reuse */
|
||||
|
||||
#define SO_VLAN 0x8000 /* get/set VLAN ID and user priority */
|
||||
|
||||
/*
|
||||
* Additional options, not kept in so_options.
|
||||
*/
|
||||
#define SO_SNDBUF 0x1001 /* send buffer size */
|
||||
#define SO_RCVBUF 0x1002 /* receive buffer size */
|
||||
#define SO_RCVTIMEO 0x1006 /* receive timeout */
|
||||
#define SO_ERROR 0x1007 /* get error status and clear */
|
||||
#define SO_TYPE 0x1008 /* get socket type */
|
||||
#define SO_BINDTODEVICE 0x1010 /* bind to specific device */
|
||||
#define SO_OOBINLINE 0x1011 /* leave received OOB data in line */
|
||||
#define SO_CONNTIMEO 0x100a /* connection timeout for */
|
||||
|
||||
/* Various SOL_SOCKET options from ipcom. See ipcom_sock.h. */
|
||||
|
||||
#define SO_X_VR 0x1020 /* int; Set virtual router */
|
||||
#define SO_X_PROBEDELAY 0x1021 /* int; number of seconds a connection
|
||||
(with keep-alive active) must be idle
|
||||
before the first probe is sent */
|
||||
#define SO_X_COOKIE 0x1022 /* void *; socket IPCOM port specific
|
||||
cookie */
|
||||
|
||||
/* SO_X_EVENTCB_RO is not usable in VxWorks. */
|
||||
|
||||
#define SO_X_PKT_MPRIO 0x1025 /* int; ipcom_pkt_malloc() priority */
|
||||
#define SO_X_BYPASS_FLOW 0x1026 /* int; Turn on/off bypass flow */
|
||||
#define SO_X_DRAINABLE 0x1027 /* int;
|
||||
==0 packets in the receive queue must not
|
||||
be freed even in low memory situations
|
||||
(default)
|
||||
!=0 the stack might discard already queued
|
||||
packets in low memory situations */
|
||||
#define SO_X_GRE_KEY 0x1028 /* struct gre_key;
|
||||
set the GRE flow key for traffic sent from
|
||||
this socket */
|
||||
|
||||
/*
|
||||
* Structure used for manipulating linger option.
|
||||
*/
|
||||
struct linger {
|
||||
int l_onoff; /* option on/off */
|
||||
int l_linger; /* linger time */
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure used for manipulating GRE key option
|
||||
*/
|
||||
struct gre_key {
|
||||
int gk_onoff; /* Option on/off */
|
||||
uint32_t gk_key; /* RFC 2890 GRE key in host byte order */
|
||||
};
|
||||
|
||||
/*
|
||||
* VxWorks-specific socket structure for manipulating SO_VLAN option
|
||||
*/
|
||||
struct sovlan {
|
||||
|
||||
/*
|
||||
* If so_onff is set, the vlan id and/or user priority will be copied
|
||||
* to the socket structure and SO_VLAN so_option will be set. If so_onff
|
||||
* is not set, the SO_VLAN so_option for the given socket will be cleared.
|
||||
*/
|
||||
int vlan_onoff; /* option on/off */
|
||||
|
||||
/*
|
||||
* The priority_tagged boolean must be set to true if application using
|
||||
* socket-based vlan requires to egress 802.1P priority-tagged frame
|
||||
* (i.e. the value of vid is zero). Defaults to false. If set to true,
|
||||
* the value specified by the vid will be ignored.
|
||||
*/
|
||||
BOOL priority_tagged;
|
||||
|
||||
unsigned short vid; /* VLAN ID, valid vid: 1..4094 */
|
||||
unsigned short upriority; /* User Priority, valid priority: 0..7 */
|
||||
};
|
||||
|
||||
/*
|
||||
* Level number for (get/set)sockopt() to apply to socket itself.
|
||||
*/
|
||||
#define SOL_SOCKET 0xffff /* options for socket level */
|
||||
|
||||
/*
|
||||
* Address families.
|
||||
*/
|
||||
#define AF_UNSPEC 0 /* unspecified */
|
||||
#define AF_LOCAL 1 /* local to host (pipes, portals) */
|
||||
#define AF_UNIX AF_LOCAL /* backward compatibility */
|
||||
#define AF_INET 2 /* internetwork: UDP, TCP, etc. */
|
||||
#define AF_NETLINK 16 /* Linux Netlink, RFC 3549 */
|
||||
#define AF_ROUTE 17 /* Internal Routing Protocol */
|
||||
#define AF_LINK 18 /* Link layer interface */
|
||||
#define AF_PACKET 19 /* Linux packet family */
|
||||
#define pseudo_AF_KEY 27 /* Internal key-management function */
|
||||
#define AF_KEY pseudo_AF_KEY /* backward compatibility */
|
||||
#define AF_INET6 28 /* IPv6 */
|
||||
#define AF_MPLS 30 /* Used by the IPMPLS module */
|
||||
#define AF_SOCKDEV 31 /* Socket connected to a network interface */
|
||||
#define AF_TIPC 33 /* Tranparent Inter-Process Communic. */
|
||||
#define AF_MIPC 34 /* Multi-OS Inter-Processor Communic. */
|
||||
#define AF_MIPC_SAFE 35 /* SafeIPC */
|
||||
#define AF_MAX 36
|
||||
|
||||
/*
|
||||
* Structure used by kernel to store most
|
||||
* addresses.
|
||||
*/
|
||||
struct sockaddr {
|
||||
u_char sa_len; /* total length */
|
||||
sa_family_t sa_family; /* address family */
|
||||
char sa_data[14]; /* actually longer; address value */
|
||||
};
|
||||
|
||||
typedef struct sockaddr SOCKADDR;
|
||||
|
||||
/*
|
||||
* RFC 2553: protocol-independent placeholder for socket addresses
|
||||
*/
|
||||
#define _SS_MAXSIZE 128
|
||||
#define _SS_ALIGNSIZE (sizeof(uint32_t))
|
||||
#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof(u_char) - sizeof(sa_family_t))
|
||||
#define _SS_PAD2SIZE (_SS_MAXSIZE - sizeof(u_char) - sizeof(sa_family_t) - \
|
||||
_SS_PAD1SIZE - _SS_ALIGNSIZE)
|
||||
|
||||
struct sockaddr_storage {
|
||||
u_char ss_len; /* address length */
|
||||
sa_family_t ss_family; /* address family */
|
||||
char __ss_pad1[_SS_PAD1SIZE];
|
||||
int32_t __ss_align; /* force desired structure storage alignment */
|
||||
char __ss_pad2[_SS_PAD2SIZE];
|
||||
};
|
||||
|
||||
typedef struct sockaddr_storage SOCKADDR_STORAGE_T;
|
||||
#define SOCK_MAXADDRLEN (sizeof (SOCKADDR_STORAGE_T)) /* longest possible addresses */
|
||||
|
||||
/*
|
||||
* Protocol families, same as address families for now.
|
||||
*/
|
||||
#define PF_UNSPEC AF_UNSPEC
|
||||
#define PF_LOCAL AF_LOCAL
|
||||
#define PF_UNIX PF_LOCAL /* backward compatibility */
|
||||
#define PF_INET AF_INET
|
||||
#define PF_NETLINK AF_NETLINK
|
||||
#define PF_ROUTE AF_ROUTE
|
||||
#define PF_LINK AF_LINK
|
||||
#define PF_PACKET AF_PACKET
|
||||
#define PF_KEY AF_KEY
|
||||
#define PF_INET6 AF_INET6
|
||||
#define PF_MPLS AF_MPLS
|
||||
#define PF_SOCKDEV AF_SOCKDEV
|
||||
#define PF_TIPC AF_TIPC
|
||||
#define PF_MIPC AF_MIPC
|
||||
#define PF_MIPC_SAFE AF_MIPC_SAFE
|
||||
#define PF_MAX AF_MAX
|
||||
|
||||
/*
|
||||
* Maximum queue length specifiable by listen.
|
||||
*/
|
||||
#define SOMAXCONN 128
|
||||
|
||||
|
||||
/* Networking sysctl's */
|
||||
|
||||
#define NET_RT_DUMP 1 /* dump; may limit to a.f. */
|
||||
#define NET_RT_FLAGS 2 /* by flags, e.g. RESOLVING */
|
||||
#define NET_RT_IFLIST 3 /* survey interface list */
|
||||
#define NET_RT_MAXID 4
|
||||
#define IPCTL_STRICT_MODE 6 /* IPv4 or IPv6 strict mode on/off */
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Message header for recvmsg and sendmsg calls.
|
||||
* Used value-result for recvmsg, value only for sendmsg.
|
||||
*/
|
||||
struct msghdr {
|
||||
void *msg_name; /* optional address */
|
||||
socklen_t msg_namelen; /* size of address */
|
||||
struct iovec *msg_iov; /* scatter/gather array */
|
||||
int msg_iovlen; /* # elements in msg_iov */
|
||||
void *msg_control; /* ancillary data, see below */
|
||||
socklen_t msg_controllen; /* ancillary data buffer len */
|
||||
int msg_flags; /* flags on received message */
|
||||
};
|
||||
|
||||
#define MSG_OOB 0x1 /* process out-of-band data */
|
||||
#define MSG_PEEK 0x2 /* peek at incoming message */
|
||||
#define MSG_DONTROUTE 0x4 /* send without using routing tables */
|
||||
#define MSG_EOR 0x8 /* data completes record */
|
||||
#define MSG_TRUNC 0x10 /* data discarded before delivery */
|
||||
#define MSG_CTRUNC 0x20 /* control data lost before delivery */
|
||||
#define MSG_WAITALL 0x40 /* wait for full request or error */
|
||||
#define MSG_DONTWAIT 0x80 /* this message should be nonblocking */
|
||||
#define MSG_EOF 0x100 /* data completes connection */
|
||||
#define MSG_EXP 0x200 /* COMP-only: send express message */
|
||||
#define MSG_MBUF 0x400 /* WRS extension */
|
||||
#define MSG_NOTIFICATION 0x800 /* notification message */
|
||||
#define MSG_COMPAT 0x8000 /* used in sendit() */
|
||||
|
||||
|
||||
/*
|
||||
* Header for ancillary data objects in msg_control buffer.
|
||||
* Used for additional information with/about a datagram
|
||||
* not expressible by flags. The format is a sequence
|
||||
* of message elements headed by cmsghdr structures.
|
||||
*/
|
||||
struct cmsghdr {
|
||||
socklen_t cmsg_len; /* data byte count, including hdr */
|
||||
int cmsg_level; /* originating protocol */
|
||||
int cmsg_type; /* protocol-specific type */
|
||||
/* followed by u_char cmsg_data[]; */
|
||||
};
|
||||
|
||||
#define _ALIGNBYTES (sizeof (long) - 1)
|
||||
#define _ALIGN(p) (((unsigned long) (p) + _ALIGNBYTES) & ~_ALIGNBYTES)
|
||||
|
||||
/* given pointer to struct cmsghdr, return pointer to data */
|
||||
#define CMSG_DATA(cmsg) ((u_char *)(cmsg) + \
|
||||
_ALIGN(sizeof(struct cmsghdr)))
|
||||
|
||||
/* given pointer to struct cmsghdr, return pointer to next cmsghdr */
|
||||
#define CMSG_NXTHDR(mhdr, cmsg) \
|
||||
(((caddr_t)(cmsg) + _ALIGN((cmsg)->cmsg_len) + \
|
||||
_ALIGN(sizeof(struct cmsghdr)) > \
|
||||
(caddr_t)(mhdr)->msg_control + (mhdr)->msg_controllen) ? \
|
||||
(struct cmsghdr *)NULL : \
|
||||
(struct cmsghdr *)((caddr_t)(cmsg) + _ALIGN((cmsg)->cmsg_len)))
|
||||
|
||||
#define CMSG_FIRSTHDR(mhdr) ((struct cmsghdr *)(mhdr)->msg_control)
|
||||
|
||||
/* RFC 2292 additions */
|
||||
|
||||
#define CMSG_SPACE(l) (_ALIGN(sizeof(struct cmsghdr)) + _ALIGN(l))
|
||||
#define CMSG_LEN(l) (_ALIGN(sizeof(struct cmsghdr)) + (l))
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
#define CMSG_ALIGN(n) _ALIGN(n)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* howto arguments for shutdown(2), specified by Posix.1g.
|
||||
*/
|
||||
#define SHUT_RD 0 /* shut down the reading side */
|
||||
#define SHUT_WR 1 /* shut down the writing side */
|
||||
#define SHUT_RDWR 2 /* shut down both sides */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Include sockLib since POSIX.1-2001 requires that the socket
|
||||
* functions should be available after inclusion of
|
||||
* <sys/socket.h>. Must be included at the end since sockLib.h depdens
|
||||
* on types defined in this file.
|
||||
*/
|
||||
#include <sockLib.h>
|
||||
|
||||
#endif /* !_SYS_SOCKET_H_ */
|
||||
@@ -0,0 +1,77 @@
|
||||
/* sysctlLib.h - Header file for the sysctl library */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2001-2007 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01x,09jan12,h_x Move extern "C" after last header file include.
|
||||
01w,22jan07,tkf Add mbufSysctlInit() prototype (WIND00085249). Also
|
||||
changed copyright notice.
|
||||
01v,09dec06,tkf Cleanup for IPNET integration.
|
||||
01u,02mar06,dlk Remove reference to ipFlowSysctlInit() (SPR #104107).
|
||||
01t,20jul05,vvv added sctpSysctlInit() and sctp6SysctlInit() prototypes
|
||||
01s,20may05,kch Added mip6ProtoSysctlInit() and ip6MrouteSysctlInit()
|
||||
prototypes.
|
||||
01r,29apr05,kch Added mldSysctlInit().
|
||||
01q,21apr05,kch Removed in6RmxSysctlInit() prototype.
|
||||
01p,07feb05,wap Allow sysctl init routines to be scaled out
|
||||
01o,24jan05,vvv osdep.h cleanup
|
||||
01n,20jan05,sar Removal of divert, dummynet and fw code.
|
||||
01m,17sep04,niq Fix a typo
|
||||
01l,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01k,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
||||
/main/vdt/base6_itn5-int/1)
|
||||
01j,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01i,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01h,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01g,24oct03,cdw update include statements post header re-org.
|
||||
01f,08sep03,vvv merged from ACCORDION_BASE6_MERGE_BASELINE
|
||||
01e,17jul02,ppp adding an extern to the defination for sysctlLibInit
|
||||
01d,03feb02,ham changes for tornado build.
|
||||
01c,12dec01,ann Adding the changes from testing
|
||||
01b,03dec01,niq Add prototypes for sysctlInit routines
|
||||
01a,22oct01,ann written
|
||||
*/
|
||||
|
||||
#ifndef __INCsysctllibh
|
||||
#define __INCsysctllibh
|
||||
|
||||
#define INCLUDE_SYSCTL
|
||||
|
||||
#ifdef INCLUDE_SYSCTL
|
||||
|
||||
#include <sys/sysctl.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Extern */
|
||||
|
||||
/* Prototypes */
|
||||
|
||||
STATUS sysctlInit (void);
|
||||
IMPORT STATUS sysctlLibInit (void);
|
||||
IMPORT STATUS mbufSysctlInit (void);
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
void sysctl_sysctl_debug_dump_node (struct sysctl_oid_list *, int);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* #ifdef SYSCTL */
|
||||
|
||||
#endif /* __INCsysctllibh */
|
||||
|
||||
@@ -0,0 +1,207 @@
|
||||
/* syslog.h - the system message logger header file */
|
||||
|
||||
/* Copyright 2001-2005 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1988, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)syslog.h 8.1 (Berkeley) 6/2/93
|
||||
* $FreeBSD: src/sys/sys/syslog.h,v 1.19.2.2 2001/05/29 13:15:08 dwmalone Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01j,25oct06,kch Removed unused defines that were previously commented out.
|
||||
01i,07feb05,vvv _KERNEL cleanup
|
||||
01h,03sep04,dlk Reimplement in terms of applUtilLib.
|
||||
01g,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01f,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
01e,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01d,29apr03,syy Added #ifdef for __cplusplus
|
||||
01c,12oct01,ppp undef'd log temporarily for board bringup
|
||||
01b,05sep01,ham renamed printf to PRINTF.
|
||||
01a,05sep01,ham created from FreeBSD4.3-RELEASE(July-17-01).
|
||||
*/
|
||||
|
||||
#ifndef _SYS_SYSLOG_H_
|
||||
#define _SYS_SYSLOG_H_
|
||||
|
||||
#include <applUtilLib.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Note, Base 6 presently does not support syslog() or the
|
||||
* related posix functions openlog(), closelog(), and setlogmask().
|
||||
* applUtilLib is the closest present match.
|
||||
*/
|
||||
|
||||
#define _PATH_LOG "/var/run/log"
|
||||
#define _PATH_OLDLOG "/dev/log" /* backward compatibility */
|
||||
|
||||
|
||||
#define LOG_PRIMASK 0x07 /* mask to extract priority part (internal) */
|
||||
/* extract priority */
|
||||
#define LOG_PRI(p) ((p) & LOG_PRIMASK)
|
||||
#define LOG_MAKEPRI(fac, pri) ((fac) | (pri))
|
||||
|
||||
/* For now, we map all the unimplemented Posix facilities to GENERAL_LOG */
|
||||
|
||||
/* facility codes */
|
||||
#define LOG_KERN KERN_LOG /* kernel messages */
|
||||
#define LOG_USER GENERAL_LOG /* random user-level messages */
|
||||
#define LOG_MAIL GENERAL_LOG /* mail system */
|
||||
#define LOG_DAEMON GENERAL_LOG /* system daemons */
|
||||
#define LOG_AUTH GENERAL_LOG /* authorization messages */
|
||||
#define LOG_SYSLOG GENERAL_LOG /* generated internally by syslogd */
|
||||
#define LOG_LPR GENERAL_LOG /* line printer subsystem */
|
||||
#define LOG_NEWS GENERAL_LOG /* network news subsystem */
|
||||
#define LOG_UUCP GENERAL_LOG /* UUCP subsystem */
|
||||
#define LOG_CRON GENERAL_LOG /* clock daemon */
|
||||
#define LOG_AUTHPRIV GENERAL_LOG /* authorization messages (private) */
|
||||
/* Facility #10 clashes in DEC UNIX, where */
|
||||
/* it's defined as LOG_MEGASAFE for AdvFS */
|
||||
/* event logging. */
|
||||
#define LOG_FTP FTPD_LOG /* ftp daemon */
|
||||
#define LOG_NTP GENERAL_LOG /* NTP subsystem */
|
||||
#define LOG_SECURITY GENERAL_LOG /* security subsystems (firewalling,
|
||||
etc.) */
|
||||
#define LOG_CONSOLE GENERAL_LOG /* /dev/console output */
|
||||
|
||||
/* other codes through 15 reserved for system use */
|
||||
#define LOG_LOCAL0 GENERAL_LOG /* reserved for local use */
|
||||
#define LOG_LOCAL1 GENERAL_LOG /* reserved for local use */
|
||||
#define LOG_LOCAL2 GENERAL_LOG /* reserved for local use */
|
||||
#define LOG_LOCAL3 GENERAL_LOG /* reserved for local use */
|
||||
#define LOG_LOCAL4 GENERAL_LOG /* reserved for local use */
|
||||
#define LOG_LOCAL5 GENERAL_LOG /* reserved for local use */
|
||||
#define LOG_LOCAL6 GENERAL_LOG /* reserved for local use */
|
||||
#define LOG_LOCAL7 GENERAL_LOG /* reserved for local use */
|
||||
|
||||
/* current number of facilities */
|
||||
#define LOG_NFACILITIES LOG_NUMCATS
|
||||
#define LOG_FACMASK CAT_MASK /* mask to extract facility part */
|
||||
/* facility of pri */
|
||||
#define LOG_FAC(p) (((p) & LOG_FACMASK) >> CAT_SHIFT)
|
||||
|
||||
/*
|
||||
* arguments to setlogmask.
|
||||
*/
|
||||
#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */
|
||||
/* LOG_UPTO() defined in applUtilLib.h */
|
||||
|
||||
|
||||
/*
|
||||
* Option flags for openlog.
|
||||
*
|
||||
* LOG_ODELAY no longer does anything.
|
||||
* LOG_NDELAY is the inverse of what it used to be.
|
||||
*/
|
||||
#define LOG_PID 0x01 /* log the pid with each message */
|
||||
#define LOG_CONS 0x02 /* log on the console if errors in sending */
|
||||
#define LOG_ODELAY 0x04 /* delay open until first syslog() (default) */
|
||||
#define LOG_NDELAY 0x08 /* don't delay open */
|
||||
#define LOG_NOWAIT 0x10 /* don't wait for console forks: DEPRECATED */
|
||||
#define LOG_PERROR 0x20 /* log to stderr as well */
|
||||
|
||||
#ifdef C99_VARIADIC_MACROS
|
||||
|
||||
#if (LOG_ENABLE_MASK & LOG_KERNEL_BIT)
|
||||
#if LOG_ARGS
|
||||
#define LOG(pri, ...) \
|
||||
do { \
|
||||
_applLog (((pri) | LOG_KERN), _LOG_LOCATION, \
|
||||
__VA_ARGS__); \
|
||||
} while (FALSE)
|
||||
|
||||
#define log(pri, ...) \
|
||||
do { \
|
||||
_applLog (((pri) | LOG_KERN), _LOG_LOCATION, \
|
||||
__VA_ARGS__); \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define LOG(pri, ...) \
|
||||
do { \
|
||||
_applLog (((pri) | LOG_KERN), _LOG_LOCATION, \
|
||||
""); \
|
||||
} while (FALSE)
|
||||
|
||||
#define log(pri, ...) \
|
||||
do { \
|
||||
_applLog (((pri) | LOG_KERN), _LOG_LOCATION, \
|
||||
""); \
|
||||
} while (FALSE)
|
||||
#endif /* LOG_ARGS */
|
||||
#else
|
||||
#define LOG(pri, ...) do {} while (FALSE)
|
||||
#define log(pri, ...) do {} while (FALSE)
|
||||
#endif
|
||||
|
||||
#else /* !defined (C99_VARIADIC_MACROS) -> assume old GNU variadic syntax */
|
||||
|
||||
#if (LOG_ENABLE_MASK & LOG_KERNEL_BIT)
|
||||
#if LOG_ARGS
|
||||
#define LOG(pri, fmt...) \
|
||||
do { \
|
||||
_applLog (((pri) | LOG_KERN), _LOG_LOCATION, fmt); \
|
||||
} while (FALSE)
|
||||
|
||||
#define log(pri, fmt...) \
|
||||
do { \
|
||||
_applLog (((pri) | LOG_KERN), _LOG_LOCATION, fmt); \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define LOG(pri, fmt...) \
|
||||
do { \
|
||||
_applLog (((pri) | LOG_KERN), _LOG_LOCATION, ""); \
|
||||
} while (FALSE)
|
||||
|
||||
#define log(pri, fmt...) \
|
||||
do { \
|
||||
_applLog (((pri) | LOG_KERN), _LOG_LOCATION, ""); \
|
||||
} while (FALSE)
|
||||
#endif /* LOG_ARGS */
|
||||
#else
|
||||
#define LOG(pri, fmt...) do {} while (FALSE)
|
||||
#define log(pri, fmt...) do {} while (FALSE)
|
||||
#endif
|
||||
|
||||
#endif /* ! C99_VARIADIC_MACROS */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _SYS_SYSLOG_H_ */
|
||||
@@ -0,0 +1,210 @@
|
||||
/* telnetLib.h - telnet library header */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1984-2005, 2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
-------------------
|
||||
02o,11aug06,tkf Cleanup for IPNET integration.
|
||||
02o,20jun06,jpb Removed I960 check.
|
||||
02n,20jan06,dlk Make telnet session shutdown more graceful & reliable.
|
||||
02m,05apr05,vvv added per-session semaphore, removed parserControl
|
||||
(SPR #106456)
|
||||
02l,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
02k,15mar04,rp merged from orion
|
||||
02j,17feb04,zhr Added function prototypes for telnet client
|
||||
02i,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
||||
02h,04nov03,rlm Ran batch header path update for header re-org.
|
||||
02g,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
02f,10jun03,vvv include netVersion.h
|
||||
02e,15may02,elr Added more option definitions
|
||||
02d,30apr02,elr Changed session data structure to include all allocated
|
||||
resources for reliable cleanup during logout
|
||||
02c,14feb01,spm merged from version 02c of tor2_0_x branch (base 02b):
|
||||
general overhaul of telnet server (SPR #28675)
|
||||
02b,22sep92,rrr added support for c++
|
||||
02a,04jul92,jcf cleaned up.
|
||||
01e,26may92,rrr the tree shuffle
|
||||
01d,04oct91,rrr passed through the ansification filter
|
||||
-fixed #else and #endif
|
||||
-changed VOID to void
|
||||
-changed copyright notice
|
||||
01c,05oct90,shl added ANSI function prototypes.
|
||||
made #endif ANSI style.
|
||||
added copyright notice.
|
||||
01b,08aug90,shl added INCtelnetLibh to #endif.
|
||||
01a,10oct86,dnw written
|
||||
*/
|
||||
|
||||
#ifndef __INCtelnetLibh
|
||||
#define __INCtelnetLibh
|
||||
|
||||
#include <lstLib.h>
|
||||
#include <semLib.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define PTY_DEVICE_NAME_MAX_LEN 128 /* The maximum string length of a pty device */
|
||||
#define TELNET_BUF_SIZE 512 /* size of scratch buffer */
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NODE node; /* for link-listing */
|
||||
char ptyRemoteName[PTY_DEVICE_NAME_MAX_LEN]; /* name of the pty for this session */
|
||||
int socket; /* socket connection */
|
||||
int inputFd; /* input to command interpreter */
|
||||
int outputFd; /* output to command interpreter */
|
||||
int slaveFd; /* command interpreter side fd of pty */
|
||||
int outputTask; /* Task ID to send data to socket */
|
||||
int inputTask; /* Task ID to send data to socket */
|
||||
SEM_ID startInput; /* begin reading from socket connection */
|
||||
SEM_ID startOutput; /* begin writing to socket connection */
|
||||
BOOL busyFlag; /* Is slot in use (static tasks)? */
|
||||
int loggedIn; /* Has shell been started on this slot? */
|
||||
UINT32 refs; /* Reference flags */
|
||||
UINT32 userData; /* A storage for application developers */
|
||||
int shellTaskId; /* Task ID of the shell for session */
|
||||
BOOL shuttingDown; /* Is session shutting down? */
|
||||
} TELNETD_SESSION_DATA;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int state;
|
||||
#define SCTD_EMPTY 1
|
||||
#define SCTD_USED 2
|
||||
int hostFd; /* remote host's socket */
|
||||
BOOL echoIsDone; /* TRUE when echo transaction complete */
|
||||
BOOL sgaIsDone; /* TRUE when SGA transaction complete */
|
||||
int hostStreamState; /* state of host input stream */
|
||||
char cmd;
|
||||
int saveOpts;
|
||||
char pBuf[TELNET_BUF_SIZE];
|
||||
} TELNETC_SESSION_DATA;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
TELNETD_SESSION_DATA *pSession; /* link to session data for tasks */
|
||||
} TELNETD_TASK_DATA;
|
||||
|
||||
/* command interpreter control operations */
|
||||
|
||||
#define REMOTE_START 0
|
||||
#define REMOTE_STOP 1
|
||||
#define REMOTE_INIT 2
|
||||
|
||||
/* Definitions for the TELNET protocol. */
|
||||
|
||||
#define IAC 255 /* interpret as command: */
|
||||
#define DONT 254 /* you are not to use option */
|
||||
#define DO 253 /* please, you use option */
|
||||
#define WONT 252 /* I won't use option */
|
||||
#define WILL 251 /* I will use option */
|
||||
#define SB 250 /* interpret as subnegotiation */
|
||||
#define GA 249 /* you may reverse the line */
|
||||
#define EL 248 /* erase the current line */
|
||||
#define EC 247 /* erase the current character */
|
||||
#define AYT 246 /* are you there */
|
||||
#define AO 245 /* abort output--but let prog finish */
|
||||
#define IP 244 /* interrupt process--permanently */
|
||||
#define BREAK 243 /* break */
|
||||
#define DM 242 /* data mark--for connect. cleaning */
|
||||
#define NOP 241 /* nop */
|
||||
#define SE 240 /* end sub negotiation */
|
||||
#define EOR 239 /* end of record (transparent mode) */
|
||||
|
||||
#define SYNCH 242 /* for telfunc calls */
|
||||
|
||||
|
||||
/* telnet options - as defined by IANA */
|
||||
|
||||
#define TELOPT_BINARY 0 /* 8-bit data path */
|
||||
#define TELOPT_ECHO 1 /* echo RFC857 */
|
||||
#define TELOPT_RCP 2 /* prepare to reconnect */
|
||||
#define TELOPT_SGA 3 /* suppress go ahead */
|
||||
#define TELOPT_NAMS 4 /* approximate message size */
|
||||
#define TELOPT_STATUS 5 /* give status */
|
||||
#define TELOPT_TM 6 /* timing mark */
|
||||
#define TELOPT_RCTE 7 /* remote controlled transmission and echo */
|
||||
#define TELOPT_NAOL 8 /* negotiate about output line width */
|
||||
#define TELOPT_NAOP 9 /* negotiate about output page size */
|
||||
#define TELOPT_NAOCRD 10 /* negotiate about CR disposition */
|
||||
#define TELOPT_NAOHTS 11 /* negotiate about horizontal tabstops */
|
||||
#define TELOPT_NAOHTD 12 /* negotiate about horizontal tab disposition */
|
||||
#define TELOPT_NAOFFD 13 /* negotiate about formfeed disposition */
|
||||
#define TELOPT_NAOVTS 14 /* negotiate about vertical tab stops */
|
||||
#define TELOPT_NAOVTD 15 /* negotiate about vertical tab disposition */
|
||||
#define TELOPT_NAOLFD 16 /* negotiate about output LF disposition */
|
||||
#define TELOPT_XASCII 17 /* extended ascic character set */
|
||||
#define TELOPT_LOGOUT 18 /* force logout */
|
||||
#define TELOPT_BM 19 /* byte macro */
|
||||
#define TELOPT_DET 20 /* data entry terminal */
|
||||
#define TELOPT_SUPDUP 21 /* supdup protocol */
|
||||
#define TELOPT_SUPDUPOUTPUT 22 /* supdup output */
|
||||
#define TELOPT_SNDLOC 23 /* send location */
|
||||
#define TELOPT_TTYPE 24 /* terminal type */
|
||||
#define TELOPT_EOR 25 /* end or record */
|
||||
#define TELOPT_TACACS 26 /* TACACS User Identification */
|
||||
#define TELOPT_OUTPUT_MARK 27 /* Output marking */
|
||||
#define TELOPT_TLN 28 /* Terminal location number RFC933 */
|
||||
#define TELOPT_3270 29 /* Telnet 3270 regime RFC1041 */
|
||||
#define TELOPT_X_3_PAD 30
|
||||
#define TELOPT_NAWS 31 /* Negotiate about window size */
|
||||
#define TELOPT_TERM_SPD 32 /* Terminal speed */
|
||||
#define TELOPT_RFC 33 /* Remote flow control RFC1372 */
|
||||
#define TELOPT_LINEMODE 34 /* Linemode RFC1184 */
|
||||
#define TELOPT_XDL 35 /* X display location */
|
||||
#define TELOPT_ENVIRON 36 /* Environment RFC1408 */
|
||||
#define TELOPT_AUTHENTION 37 /* authentication */
|
||||
#define TELOPT_ENCRYPTION 38 /* encryption */
|
||||
#define TELOPT_NEW_ENV 39 /* New environment RFC 1572 */
|
||||
#define TELOPT_TN3270E 40 /* RFC1647 */
|
||||
#define TELOPT_XAUTH 41
|
||||
#define TELOPT_CHARSET 42 /* RFC2066 */
|
||||
#define TELOPT_RSP 43 /* Remote serial port */
|
||||
#define TELOPT_CPC 44 /* Com port control RFC 2217 */
|
||||
#define TELOPT_SLE 45 /* Suppress local echo */
|
||||
#define TELOPT_STLS 46 /* Start TLS */
|
||||
#define TELOPT_KERMIT 47 /* RFC2840 */
|
||||
#define TELOPT_SEND_URL 48
|
||||
#define TELOPT_FORWARDX 49
|
||||
|
||||
#define TELOPT_PRAGMA_LOGON 138
|
||||
#define TELOPT_SSPI_LOGON 139
|
||||
#define TELOPT_PRAGMA_HEART 140
|
||||
|
||||
#define TELOPT_EXOPL 255 /* extended-options-list */
|
||||
|
||||
/* sub-option qualifiers */
|
||||
|
||||
#define TELQUAL_IS 0 /* option is... */
|
||||
#define TELQUAL_SEND 1 /* send option */
|
||||
|
||||
/* function declarations */
|
||||
|
||||
extern void telnetInTask (TELNETD_SESSION_DATA *pSlot);
|
||||
extern void telnetOutTask (TELNETD_SESSION_DATA *pSlot);
|
||||
extern void telnetd (void);
|
||||
extern STATUS telnetdInit (int numClients, BOOL staticFlag);
|
||||
extern STATUS telnetdStart (int port);
|
||||
extern STATUS telnetdParserSet (FUNCPTR pParserCtrlRtn);
|
||||
extern void telnetdExit (UINT32 sessionId);
|
||||
extern BOOL telnetdStaticTaskInitializationGet();
|
||||
extern STATUS telnetcInit ();
|
||||
extern STATUS telnet (char *pHostName, int port);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCtelnetLibh */
|
||||
@@ -0,0 +1,252 @@
|
||||
/* tftpLib.h - vxWorks Trival File Transfer protocol header file */
|
||||
|
||||
/* Copyright 1991 - 2004 Wind River Systems, Inc. */
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01t,09jan12,h_x Move extern "C" after last header file include.
|
||||
01s,17aug09,ggz Defect00176203. Fix block number wraparound to support large files.
|
||||
01r,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01q,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
||||
/main/vdt/base6_itn5_networking-int/2)
|
||||
01p,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
01o,04nov03,rlm Ran batch header path update for header re-org.
|
||||
01n,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
01m,24oct03,cdw update include statements post header re-org.
|
||||
01l,01may03,spm Tornado 2.2 CP1 merge (from ver 01k,13jan03,rae:
|
||||
TOR2_2-CP1-F label, tor2_2-patch branch, /wind/river VOB)
|
||||
01k,21apr03,ppp vwModNum.h should be picked up from target/h
|
||||
01j,24oct01,hgo extension for IPv6
|
||||
01i,29nov00,ham dealt with ARM alignment issue (SPR 62202).
|
||||
01h,09oct97,nbs modified TFTP_DESC to include the file name
|
||||
in the request, spr # 9413
|
||||
01g,22sep92,rrr added support for c++
|
||||
01f,18sep92,jcf added include of netinet/in.h.
|
||||
01e,04jul92,jcf cleaned up.
|
||||
01d,15jun92,elh changed retransmission time.
|
||||
01c,26may92,rrr the tree shuffle
|
||||
01b,29feb92,elh ansified.
|
||||
incorperated changes done by jmm for server.
|
||||
01a,19Jul91,elh written.
|
||||
*/
|
||||
|
||||
#ifndef __INCtftpLibh
|
||||
#define __INCtftpLibh
|
||||
|
||||
#include <netinet/in.h>
|
||||
#include <vwModNum.h>
|
||||
|
||||
#ifdef INET6
|
||||
#include <netinet6/in6.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* defines */
|
||||
|
||||
/* TFTP constant values. */
|
||||
|
||||
#define TFTP_SEGSIZE 512 /* data segment size */
|
||||
#define TFTP_REQSIZE TFTP_SEGSIZE + 2
|
||||
#define TFTP_FILENAME_SIZE 128 /* max length of */
|
||||
/* filename */
|
||||
#define TFTP_ACK_SIZE 4 /* size of ack message */
|
||||
#define TFTP_DATA_HDR_SIZE 4 /* header size */
|
||||
#define TFTP_TIMEOUT 2 /* secs between rexmt's */
|
||||
#define TFTP_PORT 69 /* tftp default port */
|
||||
|
||||
#define TFTP_CLIENT 0
|
||||
#define TFTP_SERVER 1
|
||||
|
||||
/* TFTP Op Codes/packet types */
|
||||
|
||||
#define TFTP_RRQ 01 /* read request */
|
||||
#define TFTP_WRQ 02 /* write request */
|
||||
#define TFTP_DATA 03 /* data packet */
|
||||
#define TFTP_ACK 04 /* acknowledgement */
|
||||
#define TFTP_ERROR 05 /* error packet */
|
||||
|
||||
/*
|
||||
TFTP message formats are:
|
||||
|
||||
|
||||
Type Op # Format without header
|
||||
|
||||
2 bytes string 1 byte string 1 byte
|
||||
------------------------------------------
|
||||
TFTP_RRQ/ | [01|02]| filename | 0 | mode | 0 |
|
||||
TFTP_WRQ ------------------------------------------
|
||||
|
||||
2 bytes 2 bytes n bytes
|
||||
---------------------------
|
||||
TFTP_DATA | 03 | block # | data |
|
||||
---------------------------
|
||||
|
||||
2 bytes 2 bytes
|
||||
------------------
|
||||
TFTP_ACK | 04 | block #|
|
||||
------------------
|
||||
|
||||
2 bytes 2 bytes string 1 byte
|
||||
-------------------------------------
|
||||
TFTP_ERROR | 05 | ErrorCode | ErrMsg | 0 |
|
||||
-------------------------------------
|
||||
*/
|
||||
|
||||
|
||||
#ifdef _WRS_VXWORKS_5_X
|
||||
#if (defined __arm__)
|
||||
#define TFTP_PACKED _WRS_PACK_ALIGN(1)
|
||||
#else
|
||||
#define TFTP_PACKED
|
||||
#endif /* __arm__ */
|
||||
#else
|
||||
#if ((defined __arm__) && (defined __GNUC__))
|
||||
#define TFTP_PACKED __attribute__((packed))
|
||||
#else
|
||||
#define TFTP_PACKED
|
||||
#endif /* __arm__ */
|
||||
#endif /* _WRS_VXWORKS_5_X */
|
||||
|
||||
/* TFTP packet structure. */
|
||||
|
||||
struct tftpFormat
|
||||
{
|
||||
u_short blockOrError;
|
||||
char data [TFTP_SEGSIZE];
|
||||
} TFTP_PACKED;
|
||||
|
||||
typedef struct tftp_msg
|
||||
{
|
||||
u_short th_opcode; /* packet op code */
|
||||
union
|
||||
{
|
||||
char request [TFTP_REQSIZE]; /* request string */
|
||||
struct tftpFormat TFTP_PACKED misc;
|
||||
} TFTP_PACKED th;
|
||||
} TFTP_MSG;
|
||||
|
||||
|
||||
|
||||
/* useful defines to access the TFTP packet */
|
||||
|
||||
#define th_request th.request /* request string */
|
||||
#define th_block th.misc.blockOrError /* block number */
|
||||
#define th_error th.misc.blockOrError /* error code */
|
||||
#define th_errMsg th.misc.data /* error message */
|
||||
#define th_data th.misc.data /* data */
|
||||
|
||||
|
||||
/* TFTP defined error codes. */
|
||||
|
||||
#define EUNDEF 0 /* not defined */
|
||||
#define ENOTFOUND 1 /* file not found */
|
||||
#define EACCESS 2 /* access violation */
|
||||
#define ENOSPACE 3 /* disk full */
|
||||
#define EBADOP 4 /* illegal operation */
|
||||
#define EBADID 5 /* unknown transfer ID */
|
||||
#define EEXISTS 6 /* file already exists */
|
||||
#define ENOUSER 7 /* no such user */
|
||||
|
||||
/* mode structure */
|
||||
|
||||
typedef struct tftp_mode
|
||||
{
|
||||
char *m_name; /* mode name */
|
||||
char *m_mode; /* mode type */
|
||||
} TFTP_MODE;
|
||||
|
||||
/* error structure */
|
||||
|
||||
typedef struct tftp_errmsg
|
||||
{
|
||||
int e_code; /* error code */
|
||||
char *e_msg; /* error message */
|
||||
} TFTP_ERRMSG;
|
||||
|
||||
/* TFTP descriptor */
|
||||
|
||||
typedef struct tftp_desc
|
||||
{
|
||||
char mode [32]; /* mode */
|
||||
BOOL connected; /* state */
|
||||
char serverName [128]; /* server ascii name */
|
||||
#ifndef INET6
|
||||
struct sockaddr_in serverAddr; /* server address */
|
||||
#else
|
||||
struct sockaddr_in6 serverAddr;
|
||||
#endif
|
||||
int sock; /* socket */
|
||||
int sockFamily; /* AF_INET(6) */
|
||||
u_short serverPort; /* server port number */
|
||||
char fileName [TFTP_FILENAME_SIZE]; /* requested file name */
|
||||
} TFTP_DESC;
|
||||
|
||||
/* TFTP task defaults */
|
||||
|
||||
#define TFTP_TASK_PRIORITY 70 /* TFTP task priority */
|
||||
#define TFTP_TASK_OPTIONS 0 /* TFTP task options */
|
||||
#define TFTP_TASK_STACKSIZE 8*BUFSIZ /* TFTP stack size */
|
||||
|
||||
/* tftpLib error values */
|
||||
|
||||
#define S_tftpLib_INVALID_ARGUMENT (M_tftpLib | 1)
|
||||
#define S_tftpLib_INVALID_DESCRIPTOR (M_tftpLib | 2)
|
||||
#define S_tftpLib_INVALID_COMMAND (M_tftpLib | 3)
|
||||
#define S_tftpLib_INVALID_MODE (M_tftpLib | 4)
|
||||
#define S_tftpLib_UNKNOWN_HOST (M_tftpLib | 5)
|
||||
#define S_tftpLib_NOT_CONNECTED (M_tftpLib | 6)
|
||||
#define S_tftpLib_TIMED_OUT (M_tftpLib | 7)
|
||||
#define S_tftpLib_TFTP_ERROR (M_tftpLib | 8)
|
||||
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
|
||||
extern STATUS tftpXfer (char * pHost, int port, char * pFilename,
|
||||
char * pCommand, char * pMode, int * pDataDesc,
|
||||
int * pErrorDesc);
|
||||
extern STATUS tftpCopy (char * pHost, int port, char * pFilename,
|
||||
char * pCommand, char * pMode, int fd);
|
||||
extern TFTP_DESC *tftpInit (void);
|
||||
extern STATUS tftpModeSet (TFTP_DESC * pTftpDesc, char * pMode);
|
||||
extern STATUS tftpPeerSet (TFTP_DESC * pTftpDesc, char * pHostname,
|
||||
int port);
|
||||
extern STATUS tftpPut (TFTP_DESC *pTftpDesc, char *pFilename, int fd,
|
||||
int clientOrServer);
|
||||
extern STATUS tftpGet (TFTP_DESC *pTftpDesc, char *pFilename, int fd,
|
||||
int clientOrServer);
|
||||
#ifdef _WRS_KERNEL
|
||||
extern STATUS tftpInfoShow (TFTP_DESC * pTftpDesc);
|
||||
#endif
|
||||
extern STATUS tftpQuit (TFTP_DESC * pTftpDesc);
|
||||
extern int tftpSend (TFTP_DESC *pTftpDesc, TFTP_MSG *pTftpMsg, int sizeMsg,
|
||||
TFTP_MSG *pTftpReply, int opReply, u_short blockReply,
|
||||
int *pPort);
|
||||
extern int tftpErrorCreate (TFTP_MSG * pTftpMsg, int errorNum);
|
||||
|
||||
#else /* __STDC__ */
|
||||
|
||||
extern STATUS tftpXfer ();
|
||||
extern STATUS tftpCopy ();
|
||||
extern TFTP_DESC *tftpInit ();
|
||||
extern STATUS tftpModeSet ();
|
||||
extern STATUS tftpPeerSet ();
|
||||
extern STATUS tftpPut ();
|
||||
extern STATUS tftpGet ();
|
||||
#ifdef _WRS_KERNEL
|
||||
extern STATUS tftpInfoShow ();
|
||||
#endif
|
||||
extern STATUS tftpQuit ();
|
||||
extern int tftpSend ();
|
||||
extern int tftpErrorCreate ();
|
||||
|
||||
#endif /* __STDC__ */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCtftpLibh */
|
||||
@@ -0,0 +1,85 @@
|
||||
/* tftpdLib.h - vxWorks Trival File Transfer protocol header file */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1992-2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
02l,09jan12,h_x Move extern "C" after last header file include.
|
||||
02k,27dec06,kch Removed references to the obsolete coreip virtual stack.
|
||||
02j,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
||||
/main/vdt/base6_itn5_networking-int/1)
|
||||
02i,15mar04,rp merged from orion
|
||||
02h,20nov03,niq Remove copyright_wrs.h file inclusion
|
||||
02g,04nov03,rlm Ran batch header path update for header re-org.
|
||||
02f,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
||||
02e,24oct03,cdw update include statements post header re-org.
|
||||
02d,21apr03,ppp vwModNum.h should be picked up from target/h
|
||||
02c,11feb02,hgo modifications for IPv6
|
||||
02b,22sep92,rrr added support for c++
|
||||
02a,04jul92,jcf cleaned up.
|
||||
01b,26may92,rrr the tree shuffle
|
||||
-changed includes to have absolute path from h/
|
||||
01a,06Feb92,jmm written.
|
||||
*/
|
||||
|
||||
#ifndef __INCtftpdLibh
|
||||
#define __INCtftpdLibh
|
||||
|
||||
#include <lstLib.h>
|
||||
#include <ioLib.h>
|
||||
#include <netinet/in.h>
|
||||
#include <tftpLib.h>
|
||||
#include <cfgDefs.h>
|
||||
#include <vwModNum.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct tftpd_dir
|
||||
{
|
||||
NODE node;
|
||||
char dirName [MAX_FILENAME_LENGTH];
|
||||
} TFTPD_DIR;
|
||||
|
||||
|
||||
|
||||
typedef struct tftpd_config_params {
|
||||
CFG_DATA_HDR cfgh;
|
||||
|
||||
int cfg_tftpdTaskStackSize; /* stack size for the tftpdTask */
|
||||
BOOL cfg_tftpdNoControl; /* TRUE if no access control required */
|
||||
int cfg_tftpdMaxConnections; /* max concurrent connections */
|
||||
char * cfg_tftpdDirectoryNames; /* TFTP server directories */
|
||||
} TFTPD_CONFIG_PARAMS;
|
||||
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
|
||||
extern STATUS tftpdInstInit (void *noparams);
|
||||
extern STATUS tftpdInit (int stackSize, int nDirectories,
|
||||
char ** directoryNames, BOOL noControl,
|
||||
int maxConnections);
|
||||
extern STATUS tftpdDirectoryAdd (char *fileName);
|
||||
extern STATUS tftpdDirectoryRemove (char *fileName);
|
||||
|
||||
#else /* __STDC__ */
|
||||
|
||||
extern STATUS tftpdInstInit ();
|
||||
extern STATUS tftpdInit ();
|
||||
extern STATUS tftpdDirectoryAdd ();
|
||||
extern STATUS tftpdDirectoryRemove ();
|
||||
|
||||
#endif /* __STDC__ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCtftpdLibh */
|
||||
@@ -0,0 +1,72 @@
|
||||
/* wrapperHostLib.h - public header for hostlib wrapper files */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement. No license to Wind River intellectual property rights
|
||||
* is granted herein. All rights not licensed by Wind River are reserved
|
||||
* by Wind River.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01f,24nov10,h_x Fix WIND00239714
|
||||
01e,14nov06,tlu Replace <socket.h> by <sys/socket.h>
|
||||
01d,12oct06,kch Removed freehostent() prototype.
|
||||
01c,12sep06,tlu Remove the condition to include socket.h
|
||||
01b,09sep06,tlu Added socket.h for RTP build
|
||||
01a,31jul06,tkf Written
|
||||
*/
|
||||
|
||||
#ifndef __INCwrapperHostLibh
|
||||
#define __INCwrapperHostLibh
|
||||
|
||||
#include <sys/socket.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct addrinfo;
|
||||
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
|
||||
IMPORT struct hostent * gethostbyaddr (const char *addr, int len, int type);
|
||||
IMPORT struct hostent * gethostbyname (const char *name);
|
||||
IMPORT struct servent *getservbyname (const char *name, const char *proto);
|
||||
IMPORT struct servent *getservbyport (int port, char *proto);
|
||||
|
||||
#ifndef __INCnetdbh
|
||||
IMPORT int getnameinfo (const struct sockaddr *sa, socklen_t salen, char *host,
|
||||
size_t hostlen, char *serv, size_t servlen, int flags);
|
||||
IMPORT int getaddrinfo (const char *hostname, const char *servname,
|
||||
const struct addrinfo *hints, struct addrinfo **result);
|
||||
IMPORT void freeaddrinfo (struct addrinfo *ai);
|
||||
IMPORT char *gai_strerror (int ecode);
|
||||
#endif
|
||||
|
||||
IMPORT int gethostname (char *name, size_t nameLen);
|
||||
IMPORT int sethostname (char *name, int nameLen);
|
||||
IMPORT struct hostent *_dns_ghbyaddr(const void *addr, int addrlen, int af, int *errp);
|
||||
|
||||
#else /* __STDC__ */
|
||||
|
||||
IMPORT int getnameinfo ();
|
||||
IMPORT struct hostent * gethostbyaddr ();
|
||||
IMPORT struct hostent * gethostbyname ();
|
||||
IMPORT struct servent *getservbyname ();
|
||||
IMPORT struct servent *getservbyport ();
|
||||
IMPORT int getaddrinfo ();
|
||||
IMPORT void freeaddrinfo ();
|
||||
IMPORT char *gai_strerror ();
|
||||
|
||||
#endif /* __STDC__ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCwrapperHostLibh */
|
||||
@@ -0,0 +1,380 @@
|
||||
/* wvNetDLib.h - header file for WindView WindNet IPv6/IPv4 Dual stack events */
|
||||
|
||||
/* Copyright 2003,2004,2005,2008,2010 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify, or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01n,09jan12,h_x Move extern "C" after last header file include.
|
||||
01m,30dec10,vhe Moved pWvNetEvtMap to other file. (CQ:WIND00237112)
|
||||
01l,17jul08,tcr add eventpoint support
|
||||
01k,20jan05,sar Removal of divert, dummynet and fw code.
|
||||
01j,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE
|
||||
01i,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
||||
/main/vdt/base6_itn5_networking-int/2)
|
||||
01h,25feb04,syy Change wvNetDConfigure() return value to int
|
||||
01g,23jan04,syy Reduce the event ID span
|
||||
01f,08jan04,syy Move the index of files to become "0" based.
|
||||
01e,15dec03,syy Added some more def's for INFO subtype.
|
||||
01d,08dec03,syy Networking WindView instrumentation merge
|
||||
01c,10nov03,rlm 2nd pass of include update for header re-org.
|
||||
01b,04sep03,tar windview instrumentation codereview changes
|
||||
01a,06aug03,tar written
|
||||
*/
|
||||
|
||||
#ifndef __INCwvNetDLibh
|
||||
#define __INCwvNetDLibh
|
||||
|
||||
#include "private/eventP.h" /* Macros for testing WindView status. */
|
||||
#include <private/wvNetDEventP.h> /* Macros to generate networking events. */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
IMPORT UCHAR wvNetDLevel;
|
||||
IMPORT UCHAR wvNetDFilterId;
|
||||
|
||||
#define WV_NET_DUAL_ID 0x2 /*
|
||||
* Arbitrary 2-bit prefix for
|
||||
* WindNet IPv6/IPv4 Dual stack events.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Class definitions
|
||||
*/
|
||||
|
||||
#define WV_NETD_IP4_DATAPATH_CLASS 0x00000008 /* IPv4 Data Path Events */
|
||||
#define WV_NETD_IP6_DATAPATH_CLASS 0x00000010 /* IPv6 Data Path Events */
|
||||
#define WV_NETD_IP4_CTRLPATH_CLASS 0x00000018 /* IPv4 Control Path Events */
|
||||
#define WV_NETD_IP6_CTRLPATH_CLASS 0x00000020 /* IPv6 Control Path Events */
|
||||
|
||||
#define NETD_IP4_DATAPATH_EVENT WV_NETD_IP4_DATAPATH_CLASS
|
||||
#define NETD_IP6_DATAPATH_EVENT WV_NETD_IP6_DATAPATH_CLASS
|
||||
#define NETD_IP4_CTRLPATH_EVENT WV_NETD_IP4_CTRLPATH_CLASS
|
||||
#define NETD_IP6_CTRLPATH_EVENT WV_NETD_IP6_CTRLPATH_CLASS
|
||||
|
||||
/*
|
||||
* The WV_NETD_ADDR_FILTER_TEST and WV_NETD_PORT_FILTER_TEST macros will check
|
||||
* the given data against predefined address or port numbers by calling the
|
||||
* appropriate routine. Each macro is only valid within a test conditional.
|
||||
*/
|
||||
|
||||
#define WV_NETD_ADDR_FILTER_TEST(filterType,targetType,srcAddr,dstAddr) \
|
||||
wvNetDAddressFilterTest (filterType, targetType, srcAddr, dstAddr)
|
||||
|
||||
#define WV_NETD_PORT_FILTER_TEST(filterType, srcPort, dstPort) \
|
||||
wvNetDPortFilterTest (filterType, srcPort, dstPort)
|
||||
|
||||
#define WV_NETD_NONE 0 /* Placeholder for any unused event fields. */
|
||||
|
||||
/*
|
||||
* 4-bit level identifiers for event priority. The user can block
|
||||
* all event reporting even if WindView is active and a network class
|
||||
* is set by specifying the WV_NETD_NONE constant in a call to the
|
||||
* wvNetDConfigure() routine. That "priority" is not used by any events.
|
||||
*/
|
||||
|
||||
#define WV_NETD_FATAL 1
|
||||
#define WV_NETD_CRITICAL 2
|
||||
#define WV_NETD_WARNING 3
|
||||
#define WV_NETD_INFO 4
|
||||
#define WV_NETD_VERBOSE 5
|
||||
|
||||
|
||||
/*
|
||||
* Data transfer status. Represented by a 2-bit field in wvNetDEventInfo.
|
||||
* WV_NETD_NONE is used if not applicable.
|
||||
*/
|
||||
|
||||
#define WV_NETD_SEND 1
|
||||
#define WV_NETD_RECV 2
|
||||
|
||||
/*
|
||||
* Packet filter for event. Represented by a 4-bit field in wvNetDEventInfo.
|
||||
* WV_NETD_NONE is used if unfiltered.
|
||||
*/
|
||||
|
||||
#define WV_NETD_SADDR_FILTER 1 /* Source address comparison */
|
||||
#define WV_NETD_DADDR_FILTER 2 /* Destination address comparison */
|
||||
#define WV_NETD_SPORT_FILTER 3 /* Source port comparison */
|
||||
#define WV_NETD_DPORT_FILTER 4 /* Destination port comparison */
|
||||
#define WV_NETD_SOCK_FILTER 5 /* Socket value comparison */
|
||||
|
||||
/* Entity. Represented by an 8-bit field in wvNetDEventInfo. */
|
||||
|
||||
#define WV_NETD_ARP 1
|
||||
#define WV_NETD_ICMP4 2
|
||||
#define WV_NETD_ICMP6 3
|
||||
#define WV_NETD_IP4 4
|
||||
#define WV_NETD_IP6 5
|
||||
#define WV_NETD_RAWIP 6
|
||||
#define WV_NETD_ROUTE 7
|
||||
#define WV_NETD_TCP4 8
|
||||
#define WV_NETD_TCP6 9
|
||||
#define WV_NETD_UDP4 10
|
||||
#define WV_NETD_UDP6 11
|
||||
#define WV_NETD_IF 12
|
||||
#define WV_NETD_SOCKET 13
|
||||
#define WV_NETD_IGMP 14
|
||||
#define WV_NETD_NETBUF 15
|
||||
#define WV_NETD_MEMBUF 16
|
||||
#define WV_NETD_PACKET 17
|
||||
#define WV_NETD_RAW_SOCKET 18
|
||||
#define WV_NETD_IP_REASSEMBLE 19
|
||||
#define WV_NETD_TCP_REASSMBLE 20
|
||||
#define WV_NETD_DLINK 21
|
||||
#define WV_NETD_ND 22
|
||||
|
||||
/* Module identifiers. Represented by an 8-bit field in wvNetDEventInfo. */
|
||||
/* We no longer include the divert, dummynet, ip_fw or ip6_fw modules but have
|
||||
* retained these tags for consistency.
|
||||
*/
|
||||
|
||||
#define WV_NETD_UNKNOWN 0 /* Unknown (default) */
|
||||
|
||||
#define WV_NETD_IF_MODULE 1 /* if.c source file */
|
||||
#define WV_NETD_IF_ETHERSUBR_MODULE 2 /* if_ethersubr.c source file */
|
||||
#define WV_NETD_IF_FAITH_MODULE 3 /* if_faith.c source file */
|
||||
#define WV_NETD_IF_LOOP_MODULE 4 /* if_loop.c source file */
|
||||
#define WV_NETD_IF_MEDIA_MODULE 5 /* if_media.c source file */
|
||||
|
||||
#define WV_NETD_IP_ICMP_MODULE 6 /* ip_icmp.c source file */
|
||||
|
||||
#define WV_NETD_ICMP6_MODULE 7 /* icmp6.c source file */
|
||||
|
||||
#define WV_NETD_IN_MODULE 8 /* in.c source file */
|
||||
#define WV_NETD_IN_PCB_MODULE 9 /* in_pcb.c source file */
|
||||
#define WV_NETD_IN_RMX_MODULE 10 /* in_rmx.c source file */
|
||||
#define WV_NETD_IP_DIVERT_MODULE 11 /* ip_divert.c source file */
|
||||
#define WV_NETD_IP_DUMMYNET_MODULE 12 /* ip_dummynet.c source file */
|
||||
#define WV_NETD_IP_ECN_MODULE 13 /* ip_ecn.c source file */
|
||||
#define WV_NETD_IP_FW_MODULE 14 /* ip_fw.c source file */
|
||||
#define WV_NETD_IP_INPUT_MODULE 15 /* ip_input.c source file */
|
||||
#define WV_NETD_IP_OUTPUT_MODULE 16 /* ip_output.c source file */
|
||||
#define WV_NETD_RAW_IP_MODULE 17 /* raw_ip.c source file */
|
||||
#define WV_NETD_UIPC_DOMAIN_MODULE 18 /* uipc_domain.c source file */
|
||||
|
||||
#define WV_NETD_IP6_INPUT_MODULE 19 /* ip6_input.c source file */
|
||||
#define WV_NETD_RAW_IP6_MODULE 20 /* raw_ip6.c source file */
|
||||
#define WV_NETD_ROUTE6_MODULE 21 /* route6.c source file */
|
||||
#define WV_NETD_DEST6_MODULE 22 /* dest6.c source file */
|
||||
#define WV_NETD_FRAG6_MODULE 23 /* frag6.c source file */
|
||||
#define WV_NETD_IN6_MODULE 24 /* in6.c source file */
|
||||
#define WV_NETD_IN6_CKSUM_MODULE 25 /* in6_cksum.c source file */
|
||||
#define WV_NETD_IN6_IFATTACH_MODULE 26 /* in6_ifattach.c source file */
|
||||
#define WV_NETD_IN6_PCB_MODULE 27 /* in6_pcb.c source file */
|
||||
#define WV_NETD_IN6_PREFIX_MODULE 28 /* in6_prefix.c source file */
|
||||
#define WV_NETD_IN6_RMX_MODULE 29 /* in6_rmx.c source file */
|
||||
#define WV_NETD_IN6_SRC_MODULE 30 /* in6_src.c source file */
|
||||
#define WV_NETD_IP6_FORWARD_MODULE 31 /* ip6_forward.c source file */
|
||||
#define WV_NETD_IP6_FW_MODULE 32 /* ip6_fw.c source file */
|
||||
#define WV_NETD_IP6_OUTPUT_MODULE 33 /* ip6_output.c source file */
|
||||
#define WV_NETD_SCOPE6_MODULE 34 /* scope6.c source file */
|
||||
#define WV_NETD_RTHDR_MODULE 35 /* rthdr.c source file */
|
||||
#define WV_NETD_IP6OPT_MODULE 36 /* ip6opt.c source file */
|
||||
|
||||
#define WV_NETD_ND6_MODULE 37 /* nd6.c source file */
|
||||
#define WV_NETD_ND6_NBR_MODULE 38 /* nd6_nbr.c source file */
|
||||
|
||||
#define WV_NETD_UDP_USRREQ_MODULE 39 /* udp_usrreq.c source file */
|
||||
|
||||
#define WV_NETD_UDP6_OUTPUT_MODULE 40 /* udp6_output.c source file */
|
||||
#define WV_NETD_UDP6_USRREQ_MODULE 41 /* udp6_usrreq.c source file */
|
||||
|
||||
#define WV_NETD_TCP_INPUT_MODULE 42 /* tcp_input.c source file */
|
||||
#define WV_NETD_TCP_OUTPUT_MODULE 43 /* tcp_output.c source file */
|
||||
#define WV_NETD_TCP_SUBR_MODULE 44 /* tcp_subr.c source file */
|
||||
#define WV_NETD_TCP_TIMER_MODULE 45 /* tcp_timer.c source file */
|
||||
#define WV_NETD_TCP_USRREQ_MODULE 46 /* tcp_usrreq.c source file */
|
||||
|
||||
#define WV_NETD_RAW_CB_MODULE 47 /* raw_cb.c source file */
|
||||
#define WV_NETD_RAW_USRREQ_MODULE 48 /* raw_usrreq.c source file */
|
||||
|
||||
#define WV_NETD_IF_ETHER_MODULE 49 /* if_ether.c source file */
|
||||
|
||||
#define WV_NETD_IGMP_MODULE 50 /* igmp.c source file */
|
||||
|
||||
#define WV_NETD_IP_MROUTE_MODULE 51 /* ip_mroute.c source file */
|
||||
|
||||
#define WV_NETD_IP6_MROUTE_MODULE 52 /* ip6_mroute.c source file */
|
||||
|
||||
#define WV_NETD_RADIX_MODULE 53 /* radix.c source file */
|
||||
#define WV_NETD_ROUTE_MODULE 54 /* route.c source file */
|
||||
#define WV_NETD_RTSOCK_MODULE 55 /* rtsock.c source file */
|
||||
#define WV_NETD_IPROUTELIB_MODULE 56 /* ipRouteLib.c source file */
|
||||
|
||||
#define WV_NETD_IF_SUBR_MODULE 57 /* if_subr.c source file */
|
||||
|
||||
#define WV_NETD_UNIXLIB_MODULE 58 /* unixLib.c source file */
|
||||
|
||||
#define WV_NETD_SYS_SOCKET_MODULE 59 /* sys_socket.c source file */
|
||||
#define WV_NETD_UIPC_SOCKET_MODULE 60 /* uipc_socket.c source file */
|
||||
#define WV_NETD_UIPC_SOCKET2_MODULE 61 /* uipc_socket2.c source file */
|
||||
|
||||
#define WV_NETD_BPFDRV_MODULE 62 /* bpfDrv.c source file */
|
||||
#define WV_NETD_IF_ETHERPMP_MODULE 63 /* if_etherpmp.c source file */
|
||||
#define WV_NETD_DSI_MODULE 64 /* dsiSockLib.c source file */
|
||||
#define WV_NETD_UNCOMP_USRREQ_MODULE 65 /* uncomp_usrreq.c source file */
|
||||
|
||||
/* Qualifier. Represented by an Intereger type in event log API. */
|
||||
|
||||
#define WV_NETD_BADLEN 1
|
||||
#define WV_NETD_BADSUM 2
|
||||
#define WV_NETD_BADADDR 3
|
||||
#define WV_NETD_BADSOCK 4
|
||||
#define WV_NETD_BADSIZE 5
|
||||
#define WV_NETD_BADHLEN 6
|
||||
#define WV_NETD_BADWIDTH 7
|
||||
#define WV_NETD_BADOPT 8
|
||||
#define WV_NETD_BADVERS 9
|
||||
#define WV_NETD_BADMBLK 10
|
||||
#define WV_NETD_BADLEVEL 11
|
||||
#define WV_NETD_BADROUTE 12
|
||||
#define WV_NETD_BADREFCNT 13
|
||||
#define WV_NETD_BADSYNC 14
|
||||
#define WV_NETD_NOROUTEKEY 15
|
||||
#define WV_NETD_NOROUTE 16
|
||||
#define WV_NETD_NOPCB 17
|
||||
#define WV_NETD_NOPROTO 18
|
||||
#define WV_NETD_SHORTMSG 19
|
||||
#define WV_NETD_BADFLAGS 20
|
||||
#define WV_NETD_NOMEM 21
|
||||
#define WV_NETD_NOSOCK 22
|
||||
#define WV_NETD_BADBUF 23
|
||||
#define WV_NETD_SEMTKFAILED 24
|
||||
#define WV_NETD_NOFDREF 25
|
||||
#define WV_NETD_BADGATEWAY 26
|
||||
#define WV_NETD_UNREACH 27
|
||||
#define WV_NETD_BADTYPE 28
|
||||
#define WV_NETD_BADRULE 29
|
||||
#define WV_NETD_SHORTBUF 30
|
||||
#define WV_NETD_NOHDR 31
|
||||
#define WV_NETD_INVALIDPARENT 32
|
||||
#define WV_NETD_NOUSRREQS 33
|
||||
#define WV_NETD_BADARG 34
|
||||
#define WV_NETD_OUTOFDATA 35
|
||||
#define WV_NETD_BADCHAIN 36
|
||||
#define WV_NETD_INVAL 37
|
||||
#define WV_NETD_RETRANSMITPENDING 38
|
||||
#define WV_NETD_NOGATEWAY 39
|
||||
#define WV_NETD_NOBUFS 40
|
||||
#define WV_NETD_BADOFFSET 41
|
||||
#define WV_NETD_AFNOSUPPORT 42
|
||||
#define WV_NETD_ADDRNOTAVAIL 43
|
||||
#define WV_NETD_ADDRINUSE 44
|
||||
#define WV_NETD_NXIO 45
|
||||
#define WV_NETD_OPNOTSUPP 46
|
||||
#define WV_NETD_NETDOWN 47
|
||||
#define WV_NETD_HOSTUNREACH 48
|
||||
#define WV_NETD_NETUNREACH 49
|
||||
#define WV_NETD_ACCES 50
|
||||
#define WV_NETD_MSGSIZE 51
|
||||
#define WV_NETD_NOPROTOOPT 52
|
||||
#define WV_NETD_PKTLOST 53
|
||||
#define WV_NETD_NOPORT 54
|
||||
#define WV_NETD_FULLSOCK 55
|
||||
#define WV_NETD_RTCLONE 56
|
||||
#define WV_NETD_RTSEARCHGOOD 57
|
||||
#define WV_NETD_SEARCHFAILED 58
|
||||
#define WV_NETD_BADQUERY 59
|
||||
#define WV_NETD_BADREPORT 60
|
||||
#define WV_NETD_DUPLICATED 61
|
||||
#define WV_NETD_OPSFAILED 62
|
||||
#define WV_NETD_LOCKFAILED 63
|
||||
#define WV_NETD_UNLOCKFAILED 64
|
||||
#define WV_NETD_BADMASK 65
|
||||
#define WV_NETD_ADDFAILED 66
|
||||
|
||||
/* Info event subtypes. Represented by an Intereger type in event log API. */
|
||||
#define WV_NETD_INFO_UP 1
|
||||
#define WV_NETD_INFO_DOWN 2
|
||||
#define WV_NETD_INFO_OPEN 3
|
||||
#define WV_NETD_INFO_CLOSE 4
|
||||
#define WV_NETD_INFO_SEND 5
|
||||
#define WV_NETD_INFO_RECEIVE 6
|
||||
#define WV_NETD_INFO_ALLOC 7
|
||||
#define WV_NETD_INFO_FREE 8
|
||||
#define WV_NETD_INFO_CONNECT 9
|
||||
#define WV_NETD_INFO_DISCONNECT 10
|
||||
#define WV_NETD_INFO_CREATE 11
|
||||
#define WV_NETD_INFO_DELETE 12
|
||||
#define WV_NETD_INFO_DROPPED 13
|
||||
#define WV_NETD_INFO_RETRANSMIT 14
|
||||
#define WV_NETD_INFO_TIMEOUT 15
|
||||
#define WV_NETD_INFO_EXPIRED 16
|
||||
#define WV_NETD_INFO_UPDATED 17
|
||||
#define WV_NETD_INFO_QUEUE_FULL 18
|
||||
#define WV_NETD_INFO_PKT_SEND 19
|
||||
#define WV_NETD_INFO_PKT_RECV 20
|
||||
#define WV_NETD_INFO_RESET 21
|
||||
#define WV_NETD_INFO_WAIT 22
|
||||
#define WV_NETD_INFO_NODEADD 23
|
||||
#define WV_NETD_INFO_RTADDED 24
|
||||
#define WV_NETD_INFO_RTCLONE 25
|
||||
#define WV_NETD_INFO_RTALLOC 26
|
||||
|
||||
#define WV_NETD_INFO_CUSTOM_1 27
|
||||
#define WV_NETD_INFO_CUSTOM_2 28
|
||||
#define WV_NETD_INFO_CUSTOM_3 29
|
||||
#define WV_NETD_INFO_CUSTOM_4 30
|
||||
#define WV_NETD_INFO_CUSTOM_5 31
|
||||
#define WV_NETD_INFO_CUSTOM_6 32
|
||||
|
||||
/* function declarations */
|
||||
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
|
||||
extern void wvNetDInit (void);
|
||||
extern int wvNetDConfigure (int, int, int);
|
||||
|
||||
#else /* __STDC__ */
|
||||
|
||||
extern void wvNetDInit ();
|
||||
extern int wvNetDConfigure (int, int, int);
|
||||
|
||||
#endif /* __STDC__ */
|
||||
|
||||
/*
|
||||
* Individual Events. All events contain the integer parameter
|
||||
* wvNetDEventId as their first argument. Additional parameters,
|
||||
* if any, are listed with each event.
|
||||
*/
|
||||
|
||||
/* This is the base of the event range */
|
||||
|
||||
#define WV_NETD_BASE_EVENT WV_NETDEVENT_FATAL
|
||||
|
||||
/* Fatal Events */
|
||||
|
||||
#define WV_NETDEVENT_FATAL 20400
|
||||
|
||||
/* Critical Events */
|
||||
|
||||
#define WV_NETDEVENT_CRITICAL 20415
|
||||
|
||||
/* Warning Events */
|
||||
|
||||
#define WV_NETDEVENT_WARNING 20430
|
||||
|
||||
/* Information Events */
|
||||
|
||||
#define WV_NETDEVENT_INFO 20445
|
||||
|
||||
/* Verbose Events */
|
||||
|
||||
#define WV_NETDEVENT_START 20460
|
||||
#define WV_NETDEVENT_FINISH 20475
|
||||
|
||||
|
||||
/* end of VxWorks WindNet IPv6/IPv4 Dual Stack events */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* __INCwvNetDLibh */
|
||||
Reference in New Issue
Block a user