Main Page   Class Hierarchy   Compound List   File List   Compound Members   Examples  

ip.h

00001 /*** This Programs/Libraries are (C)opyright by Sebastian Krahmer.
00002  *** You may use it under the terms of the GPL. You should have
00003  *** already received the file COPYING that shows you your rights.
00004  *** Please look at COPYING for further license-details.
00005  ***  
00006  *** THERE IS ABSOLUTELY NO WARRANTY. SO YOU USE IT AT YOUR OWN RISK.
00007  *** IT WAS WRITTEN IN THE HOPE THAT IT WILL BE USEFULL. I AM NOT RESPONSIBLE
00008  *** FOR ANY DAMAGE YOU MAYBE GET DUE TO USING MY PROGRAMS.
00009  ***/
00010 
00011 #ifndef _IP_H_
00012 #define _IP_H_
00013 
00014 #include "usi-structs.h"
00015 #include "datalink.h"
00016 #include "Layer2.h"
00017 #include <stdio.h>
00018 
00019 namespace usipp {
00020 
00024 class IP : public Layer2 {
00025 protected:
00026         struct iphdr iph;
00027         char ipOptions[40];
00028         struct sockaddr_in saddr;
00029         char host[1000];
00030         
00031         char *reassemble(char *, int, int *);
00032 public:
00033 
00036         IP(const char*, u_int8_t);      // IP("foo.foo", IPPROTO_TCP);
00037 
00040         IP(u_int32_t, u_int8_t);        
00041 
00044         virtual ~IP();
00045 
00048         u_int8_t get_hlen();
00049 
00052         u_int8_t get_vers();
00053 
00056         u_int8_t get_tos();
00057 
00061         u_int16_t get_totlen();
00062 
00065         u_int16_t get_id();
00066 
00069         u_int16_t get_fragoff();
00070 
00071         
00072         u_int16_t get_fflags();
00073 
00077         u_int8_t get_ttl();
00078 
00081         u_int8_t get_proto();
00082 
00085         u_int16_t get_sum();
00086 
00089         u_int32_t get_src();
00090 
00093         u_int32_t get_dst();
00094 
00097         IP &operator=(const IP&);
00098 
00101         IP(const IP&); 
00102 
00106         char *get_src(int resolv, char *buf, size_t buflen);
00107 
00110         char *get_dst(int resolv, char *buf, size_t buflen);
00111         
00115         int set_hlen(u_int8_t);
00116 
00119         int set_vers(u_int8_t);
00120 
00121         
00122         int set_tos(u_int8_t);
00123 
00126         int set_totlen(u_int16_t);
00127 
00130         int set_id(u_int16_t);
00131 
00132         
00133         int set_fragoff(u_int16_t);
00134 
00135         
00136         int set_fflags(u_int16_t);
00137 
00140         int set_ttl(u_int8_t);
00141 
00145         int set_proto(u_int8_t);
00146     
00147         
00148         int set_sum(u_int16_t);  // should NOT be used; just to be complete...
00149 
00152         int set_src(u_int32_t);
00153 
00156         int set_dst(u_int32_t);
00157 
00160         int set_src(const char *ip_or_name);
00161         
00165         int set_dst(const char*);
00166 
00170         iphdr get_iphdr();
00171 
00174         virtual int sendpack(void *payload, size_t paylen);
00175         
00176         
00177         virtual int sendpack(char *pay_string);
00178         
00181         virtual int sniffpack(void *buf, size_t len);
00182 
00183         
00184         virtual int init_device(char *, int, size_t);
00185 };
00186 
00187 
00188 } // namespace
00189 
00190 #endif // _IP_H_
00191 

Generated at Fri May 11 13:02:56 2001 for libusi++ by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000