📄 ip_int.h
字号:
/*
ip.h
*/
#ifndef INET_IP_INT_H
#define INET_IP_INT_H
/* this include file depends on:
#include <ansi.h>
#include <sys/types.h>
#include <minix/type.h>
#include <inet/ether.h>
#include <inet/in.h>
#include <inet/ip_io.h>
#include "buf.h"
#include "type.h"
*/
#define IP_FD_NR 32
#define IP_PORT_NR 1
#define IP_ASS_NR 3
#define IP_SUN_BROADCAST 1 /* hostnumber 0 is also network
broadcast */
#define IP_ROUTER 0 /* this implementation isn't a
gateway */
typedef struct ip_port
{
int ip_flags, ip_dl_type;
union
{
struct
{
int de_state;
int de_flags;
int de_port;
int de_fd;
acc_t *de_wr_frag;
acc_t *de_wr_frame;
ether_addr_t de_wr_ethaddr;
ipaddr_t de_wr_ipaddr;
acc_t *de_arp_pack;
ether_addr_t de_arp_ethaddr;
} dl_eth;
} ip_dl;
int ip_minor;
ipaddr_t ip_ipaddr, ip_netmask;
u16_t ip_frame_id;
} ip_port_t;
#define IES_EMPTY 0x0
#define IES_SETPROTO 0x1
#define IES_GETIPADDR 0x2
#define IES_MAIN 0x3
#define IES_ERROR 0x4
#define IEF_EMPTY 0x1
#define IEF_WRITE_IP 0x2
#define IEF_WRITE_SP 0x4
#define IEF_SUSPEND 0x8
#define IEF_READ_IP 0x10
#define IEF_READ_SP 0x20
#define IEF_ARP_MASK 0x1c0
# define IEF_ARP_IP 0x40
# define IEF_ARP_SP 0x80
# define IEF_ARP_COMPL 0x100
#define IPF_EMPTY 0x0
#define IPF_IPADDRSET 0x1
#define IPF_NETMASKSET 0x2
#define IPDL_ETH 0
typedef struct ip_ass
{
acc_t *ia_frags;
int ia_min_ttl;
ip_port_t *ia_port;
time_t ia_first_time;
ipaddr_t ia_srcaddr, ia_dstaddr;
int ia_proto, ia_id;
} ip_ass_t;
typedef struct ip_fd
{
int if_flags;
struct nwio_ipopt if_ipopt;
ip_port_t *if_port;
int if_srfd;
acc_t *if_rd_buf;
get_userdata_t if_get_userdata;
put_userdata_t if_put_userdata;
time_t if_exp_tim;
size_t if_rd_count;
ipaddr_t if_wr_dstaddr;
size_t if_wr_count;
ip_port_t *if_wr_port;
} ip_fd_t;
#define IFF_EMPTY 0x0
#define IFF_INUSE 0x1
#define IFF_OPTSET 0x2
#define IFF_BUSY 0x7f4
# define IFF_READ_IP 0x4
# define IFF_WRITE_MASK 0x3f0
# define IFF_WRITE_IP 0x10
# define IFF_DLL_WR_IP 0x20
# define IFF_ROUTED 0x40
# define IFF_NETBROAD_IP 0x200
# define IFF_GIPCONF_IP 0x400
/* ip_lib.c */
ipaddr_t ip_get_netmask ARGS(( ipaddr_t hostaddr ));
int ip_chk_hdropt ARGS(( u8_t *opt, int optlen ));
void ip_print_frags ARGS(( acc_t *acc ));
/* ip_read.c */
void ip_port_arrive ARGS(( ip_port_t *port, acc_t *pack, ip_hdr_t *ip_hdr ));
void ip_eth_arrived ARGS(( ip_port_t *port, acc_t *pack ));
int ip_ok_for_fd ARGS(( ip_fd_t *ip_fd, acc_t *pack ));
int ip_packet2user ARGS(( ip_fd_t *ip_fd ));
/* ip_write.c */
void dll_eth_write_frame ARGS(( ip_port_t *port ));
extern ip_fd_t ip_fd_table[IP_FD_NR];
extern ip_port_t ip_port_table[IP_PORT_NR];
extern ip_ass_t ip_ass_table[IP_ASS_NR];
#define NWIO_DEFAULT (NWIO_EN_LOC | NWIO_EN_BROAD | NWIO_REMANY | \
NWIO_RWDATALL | NWIO_HDR_O_SPEC)
#endif /* INET_IP_INT_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -