parlib: Fix fake parlib detection for dlopen() (XCC)
[akaros.git] / kern / include / ip.h
index 442c472..2f0a0f2 100644 (file)
@@ -64,6 +64,7 @@ enum {
        Announced = 2,
        Connecting = 3,
        Connected = 4,
+       Bypass = 5,
 };
 
 enum {
@@ -98,6 +99,8 @@ struct conv {
        int inuse;                                      /* opens of listen/data/ctl */
        int length;
        int state;
+       struct queue *rq_save;          /* rq created by proto, saved during bypass */
+       struct queue *wq_save;          /* wq created by proto, saved during bypass */
 
        /* udp specific */
        int headers;                            /* data src/dst headers in udp */
@@ -285,6 +288,7 @@ void iphtadd(struct Ipht *, struct conv *);
 void iphtrem(struct Ipht *, struct conv *);
 struct conv *iphtlook(struct Ipht *ht, uint8_t * sa, uint16_t sp, uint8_t * da,
                                          uint16_t dp);
+void dump_ipht(struct Ipht *ht);
 
 /*
  *  one per multiplexed Protocol
@@ -298,6 +302,7 @@ struct Proto {
        void (*connect)(struct conv *, char **, int);
        void (*announce)(struct conv *, char **, int);
        void (*bind)(struct conv *, char **, int);
+       void (*bypass)(struct conv *, char **, int);
        int (*state) (struct conv *, char *unused_char_p_t, int);
        void (*create) (struct conv *);
        void (*close) (struct conv *);
@@ -396,8 +401,10 @@ struct Proto *Fsrcvpcol(struct Fs *, uint8_t unused_uint8_t);
 struct Proto *Fsrcvpcolx(struct Fs *, uint8_t unused_uint8_t);
 void Fsstdconnect(struct conv *, char **, int);
 void Fsstdannounce(struct conv *, char **, int);
+void Fsstdbypass(struct conv *, char **, int);
 void Fsstdbind(struct conv *, char **, int);
 uint32_t scalednconv(void);
+void bypass_or_drop(struct conv *cv, struct block *bp);
 
 /*
  *  logging
@@ -420,7 +427,8 @@ enum {
        Logrudp = 1 << 15,
        Logrudpmsg = 1 << 16,
        Logesp = 1 << 17,
-       Logtcpwin = 1 << 18,
+       Logtcpreset = 1 << 18,
+       Logtcpverbose = 1 << 19,
 };
 
 void netloginit(struct Fs *);
@@ -593,6 +601,8 @@ static inline long ipcmp(unsigned char *x, unsigned char *y)
 }
 
 
+extern uint8_t IPv4_loopback[IPaddrlen];
+extern uint8_t IPv4_zeroes[IPaddrlen];
 extern uint8_t IPv4bcast[IPaddrlen];
 extern uint8_t IPv4bcastobs[IPaddrlen];
 extern uint8_t IPv4allsys[IPaddrlen];