⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datalink.h

📁 xprobe package sources code
💻 H
字号:
/*** This Programs/Libraries are (C)opyright by Sebastian Krahmer. *** You may use it under the terms of the GPL. You should have *** already received the file COPYING that shows you your rights. *** Please look at COPYING for further license-details. ***   *** THERE IS ABSOLUTELY NO WARRANTY. SO YOU USE IT AT YOUR OWN RISK. *** IT WAS WRITTEN IN THE HOPE THAT IT WILL BE USEFULL. I AM NOT RESPONSIBLE *** FOR ANY DAMAGE YOU MAYBE GET DUE TO USING MY PROGRAMS. ***/#ifndef _DATALINK_H_ #define _DATALINK_H_#include "usi-structs.h"#include "RX.h"#include <stdio.h>//#include "config.h"namespace usipp {/*! \class Pcap *  Describing a Datalink. */ class Pcap : public RX {private:	struct timeval d_tv;   		// Heavily used by libpcap	int d_datalink;	size_t d_framelen, d_snaplen;	// pcap-descriptor        pcap_t *d_pd;	// netaddress and netmask        bpf_u_int32 d_localnet, d_netmask;       	// The actual filter-program 	struct bpf_program d_filter;	// The pcap-header for every packet fetched        struct pcap_pkthdr d_phdr;	// filled by init_device()        char d_dev[10];	int d_has_promisc;	// true when timed out	bool d_timeout;	protected:	struct ether_header d_ether;        char d_filter_string[1000];public:	/*! This constructor should be used to	 *  initialize raw-datalink-objects, means not IP/TCP/ICMP etc.	 *  We need this b/c unlike in derived classes, datalink::init_device()	 *  cannot set a filter!	 */	Pcap(char *);		Pcap();		/*! Copy-constructor	 */	Pcap(const Pcap &);	        virtual ~Pcap();	Pcap &operator=(const Pcap &);	        /*! Fill buffer with src-hardware-adress of actuall packet,	 *  use 'datalink' to determine what HW the device is.	 *  Now only ethernet s supportet, but it's extensinable.	 */        char *get_hwsrc(char *, size_t);        /*! Fill buffer with dst-hardware-adress of actuall packet, 	 *  use 'datalink' to determine what HW the device is.	 *  Now only ethernet s supportet, but it's extensinable.	 */        char *get_hwdst(char *, size_t);        /*! Get protocol-type of ethernet-frame	 *  Maybe moves to ethernet-class in future?	 */        u_int16_t get_etype();        /*! Return the actual datalink of the object.	 */        int get_datalink();        /*! Return the actual framlen of the object.	 *  (framelen depends on datalink)	 */        int get_framelen();            /*! Initialize a device ("eth0" for example) for packet-	 *  capturing. It MUST be called before sniffpack() is launched.	 *  Set 'promisc' to 1 if you want the device running in promiscous mode.	 *  Fetch at most 'snaplen' bytes per call.	 */        virtual int init_device(char *dev, int promisc, size_t snaplen);        /*! set a new filter for capturing	 */        virtual int setfilter(char *filter);        /*! sniff a packet         */	virtual int sniffpack(void *, size_t);	/*! Return HW-frame */	void *get_frame(void *, size_t);	/*! Get pcap_t struct to obtain fileno etc for select. */	pcap_t *pcap() { return d_pd; }	/*! Set a timeout. Implements RX::timeout() = 0. */	int timeout(struct timeval);	/*! Returns true when recv() timed out */	bool timeout();	}; // class Datalink {}} // namespace usipp#endif // _DATALINK_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -