/* * Blowfish headers * Copyright © 2006 Daniele Lacamera * Released under the terms of GNU GPL v.2 * http://www.gnu.org/copyleft/gpl.html * * This program is released under the GPL with the additional exemption that * compiling, linking, and/or using OpenSSL is allowed. */ #ifndef __BLOWFISH_H #define __BLOWFISH_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define IP_SIZE 1024 #define OP_SIZE 1032 #define MAXPKT 2000 #define FILENAMESIZE 16 #ifdef XOR #undef XOR #endif #define XOR(a,b) a==b?0:1 #define before_time(a,b) a.tv_sec==b.tv_sec?a.tv_usecin_a.sin_addr.s_addr #define after(a,b) (a.tv_sec == b.tv_sec ) ? (a.tv_usec > b.tv_usec) : (a.tv_sec > b.tv_sec) /* * Each datagram received from network or from vde_plug * is arranged into a struct like this. */ struct datagram { char data[MAXPKT]; int len; int src; struct peer *orig; }; struct peer *getpeer(struct sockaddr_in address); void addpeer(struct peer *np); void removepeer(struct peer *np); struct peer *generate_key (struct peer*); void blowfish_init(int); struct datagram *blowfish_select(int timeout); void blowfish_login(struct peer *p); void send_udp( char *data, size_t len, struct peer *p, unsigned char flags ); void send_vde( const char *data, size_t len, struct peer *p); void autocleaner(int signo); void deny_access(struct peer *p); void rcv_login(struct datagram *pkt, struct peer *p); struct peer *getpeerbynewaddr(struct sockaddr_in saddr); void rcv_response(struct datagram *pkt, struct peer *p, void (*callback)(struct peer*)); void rcv_challenge(struct datagram *pkt, struct peer *p); struct peer *getpeerbyid(struct datagram *pkt); #endif