hc
2024-03-25 edb30157bad0c0001c32b854271ace01d3b9a16a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/* Copyright (C) 1991-2021 Free Software Foundation, Inc.
   This file is part of the GNU C Library.
 
   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.
 
   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.
 
   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <https://www.gnu.org/licenses/>.  */
 
#ifndef __NETIPX_IPX_H
#define __NETIPX_IPX_H 1
 
#include <sys/types.h>
#include <stdint.h>
#include <bits/sockaddr.h>
 
__BEGIN_DECLS
 
#define SOL_IPX    256          /* sockopt level */
 
#define IPX_TYPE        1
#define IPX_NODE_LEN    6
#define IPX_MTU        576
 
struct sockaddr_ipx
  {
    sa_family_t sipx_family;
    uint16_t sipx_port;
    uint32_t sipx_network;
    unsigned char sipx_node[IPX_NODE_LEN];
    uint8_t sipx_type;
    unsigned char sipx_zero;    /* 16 byte fill */
  };
 
/*
 *    So we can fit the extra info for SIOCSIFADDR into the address nicely
 */
 
#define sipx_special    sipx_port
#define sipx_action    sipx_zero
#define IPX_DLTITF    0
#define IPX_CRTITF    1
 
typedef struct ipx_route_definition
  {
    unsigned long ipx_network;
    unsigned long ipx_router_network;
    unsigned char ipx_router_node[IPX_NODE_LEN];
  }
ipx_route_definition;
 
typedef struct ipx_interface_definition
  {
    unsigned long ipx_network;
    unsigned char ipx_device[16];
    unsigned char ipx_dlink_type;
#define IPX_FRAME_NONE        0
#define IPX_FRAME_SNAP        1
#define IPX_FRAME_8022        2
#define IPX_FRAME_ETHERII    3
#define IPX_FRAME_8023        4
#define IPX_FRAME_TR_8022    5
    unsigned char ipx_special;
#define IPX_SPECIAL_NONE    0
#define IPX_PRIMARY        1
#define IPX_INTERNAL        2
    unsigned char ipx_node[IPX_NODE_LEN];
  }
ipx_interface_definition;
 
typedef struct ipx_config_data
  {
    unsigned char ipxcfg_auto_select_primary;
    unsigned char ipxcfg_auto_create_interfaces;
  }
ipx_config_data;
 
/*
 * OLD Route Definition for backward compatibility.
 */
 
struct ipx_route_def
  {
    unsigned long ipx_network;
    unsigned long ipx_router_network;
#define IPX_ROUTE_NO_ROUTER    0
    unsigned char ipx_router_node[IPX_NODE_LEN];
    unsigned char ipx_device[16];
    unsigned short ipx_flags;
#define IPX_RT_SNAP        8
#define IPX_RT_8022        4
#define IPX_RT_BLUEBOOK        2
#define IPX_RT_ROUTED        1
  };
 
#define SIOCAIPXITFCRT        (SIOCPROTOPRIVATE)
#define SIOCAIPXPRISLT        (SIOCPROTOPRIVATE + 1)
#define SIOCIPXCFGDATA        (SIOCPROTOPRIVATE + 2)
#define SIOCIPXNCPCONN        (SIOCPROTOPRIVATE + 3)
 
__END_DECLS
 
#endif /* netipx/ipx.h */