aboutsummaryrefslogtreecommitdiff
path: root/src/libip/ip.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libip/ip.h')
-rw-r--r--src/libip/ip.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/libip/ip.h b/src/libip/ip.h
new file mode 100644
index 00000000..aae565c0
--- /dev/null
+++ b/src/libip/ip.h
@@ -0,0 +1,77 @@
+#pragma src "/sys/src/libip"
+#pragma lib "libip.a"
+
+enum
+{
+ IPaddrlen= 16,
+ IPv4addrlen= 4,
+ IPv4off= 12,
+ IPllen= 4,
+};
+
+/*
+ * for reading /net/ipifc
+ */
+typedef struct Ipifc Ipifc;
+typedef struct Ipifcs Ipifcs;
+
+struct Ipifc
+{
+ char dev[64];
+ uchar ip[IPaddrlen];
+ uchar mask[IPaddrlen];
+ uchar net[IPaddrlen]; /* ip & mask */
+ Ipifc *next;
+};
+
+struct Ipifcs
+{
+ Ipifc *first;
+ Ipifc *last;
+};
+
+/*
+ * 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 eipconv(va_list*, Fconv*);
+ulong parseip(uchar*, char*);
+ulong parseipmask(uchar*, char*);
+int parseether(uchar*, char*);
+int myipaddr(uchar*, char*);
+int myetheraddr(uchar*, char*);
+
+void readipifc(char*, Ipifcs*);
+
+void hnputl(void*, uint);
+void hnputs(void*, ushort);
+uint nhgetl(void*);
+ushort nhgets(void*);
+
+#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)