new files
This commit is contained in:
parent
9e37bb03b3
commit
97a5e5f2dd
9 changed files with 1334 additions and 0 deletions
123
include/ip.h
Normal file
123
include/ip.h
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
/*
|
||||
#pragma src "/sys/src/libip"
|
||||
#pragma lib "libip.a"
|
||||
#pragma varargck type "I" uchar*
|
||||
#pragma varargck type "V" uchar*
|
||||
#pragma varargck type "E" uchar*
|
||||
#pragma varargck type "M" uchar*
|
||||
*/
|
||||
enum
|
||||
{
|
||||
IPaddrlen= 16,
|
||||
IPv4addrlen= 4,
|
||||
IPv4off= 12,
|
||||
IPllen= 4,
|
||||
};
|
||||
|
||||
/*
|
||||
* for reading /net/ipifc
|
||||
*/
|
||||
typedef struct Ipifc Ipifc;
|
||||
typedef struct Iplifc Iplifc;
|
||||
typedef struct Ipv6rp Ipv6rp;
|
||||
|
||||
/* local address */
|
||||
struct Iplifc
|
||||
{
|
||||
Iplifc *next;
|
||||
|
||||
/* per address on the ip interface */
|
||||
uchar ip[IPaddrlen];
|
||||
uchar mask[IPaddrlen];
|
||||
uchar net[IPaddrlen]; /* ip & mask */
|
||||
ulong preflt; /* preferred lifetime */
|
||||
ulong validlt; /* valid lifetime */
|
||||
};
|
||||
|
||||
/* default values, one per stack */
|
||||
struct Ipv6rp
|
||||
{
|
||||
int mflag;
|
||||
int oflag;
|
||||
int maxraint;
|
||||
int minraint;
|
||||
int linkmtu;
|
||||
int reachtime;
|
||||
int rxmitra;
|
||||
int ttl;
|
||||
int routerlt;
|
||||
};
|
||||
|
||||
/* actual interface */
|
||||
struct Ipifc
|
||||
{
|
||||
Ipifc *next;
|
||||
Iplifc *lifc;
|
||||
|
||||
/* per ip interface */
|
||||
int index; /* number of interface in ipifc dir */
|
||||
char dev[64];
|
||||
uchar sendra6; /* on == send router adv */
|
||||
uchar recvra6; /* on == rcv router adv */
|
||||
int mtu;
|
||||
ulong pktin;
|
||||
ulong pktout;
|
||||
ulong errin;
|
||||
ulong errout;
|
||||
Ipv6rp rp;
|
||||
};
|
||||
|
||||
/*
|
||||
* user level udp headers
|
||||
*/
|
||||
enum
|
||||
{
|
||||
Udphdrsize= 36, /* size of a Udphdr */
|
||||
};
|
||||
|
||||
typedef struct Udphdr Udphdr;
|
||||
struct Udphdr
|
||||
{
|
||||
uchar raddr[IPaddrlen]; /* remote address and port */
|
||||
uchar laddr[IPaddrlen]; /* local address and port */
|
||||
uchar rport[2];
|
||||
uchar lport[2];
|
||||
};
|
||||
|
||||
uchar* defmask(uchar*);
|
||||
void maskip(uchar*, uchar*, uchar*);
|
||||
int eipfmt(Fmt*);
|
||||
int isv4(uchar*);
|
||||
ulong parseip(uchar*, char*);
|
||||
ulong parseipmask(uchar*, char*);
|
||||
char* v4parseip(uchar*, char*);
|
||||
char* v4parsecidr(uchar*, uchar*, char*);
|
||||
int parseether(uchar*, char*);
|
||||
int myipaddr(uchar*, char*);
|
||||
int myetheraddr(uchar*, char*);
|
||||
int equivip(uchar*, uchar*);
|
||||
|
||||
Ipifc* readipifc(char*, Ipifc*, int);
|
||||
|
||||
void hnputl(void*, uint);
|
||||
void hnputs(void*, ushort);
|
||||
uint nhgetl(void*);
|
||||
ushort nhgets(void*);
|
||||
ushort ptclbsum(uchar*, int);
|
||||
|
||||
int v6tov4(uchar*, uchar*);
|
||||
void v4tov6(uchar*, uchar*);
|
||||
|
||||
#define ipcmp(x, y) memcmp(x, y, IPaddrlen)
|
||||
#define ipmove(x, y) memmove(x, y, IPaddrlen)
|
||||
|
||||
extern uchar IPv4bcast[IPaddrlen];
|
||||
extern uchar IPv4bcastobs[IPaddrlen];
|
||||
extern uchar IPv4allsys[IPaddrlen];
|
||||
extern uchar IPv4allrouter[IPaddrlen];
|
||||
extern uchar IPnoaddr[IPaddrlen];
|
||||
extern uchar v4prefix[IPaddrlen];
|
||||
extern uchar IPallbits[IPaddrlen];
|
||||
|
||||
#define CLASS(p) ((*(uchar*)(p))>>6)
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue