/*-------------------------------------------------------------*/ /*************************************************************** * Netwib supports Ethernet cards(netwib_device_hwtype=ETHER), * * Loopback(LOOPBACK) and Serial Modems(PPP). * * Unfortunately, these are not supported on every system as * * described in this table. * * * * Device LINK LINK_dlt IP4 IP6 * * hwtype supported? to_use supported? supported? * * FreeBSD : * * ETHER yes ETHER yes ?[3] * * LOOPBACK yes NULL yes ?[3] * * PPP ?[3] ?[3] yes ?[3] * * Linux : * * ETHER yes ETHER yes yes[4] * * LOOPBACK no - yes yes[4] * * PPP ?[3] ?[3] yes yes[4] * * OpenBSD : * * ETHER yes ETHER yes ?[3] * * LOOPBACK no - yes ?[3] * * PPP ?[3] ?[3] yes ?[3] * * Solaris : * * ETHER yes ETHER yes ?[3] * * LOOPBACK no - no[1] no[1] * * PPP ?[3] ?[3] yes ?[3] * * Windows 95 : * * ETHER yes ETHER no no * * LOOPBACK no - no no * * PPP no no no no * * Windows 98 : * * ETHER yes ETHER no no * * LOOPBACK no - no no * * PPP no no no no * * Windows Me : * * ETHER yes ETHER no no * * LOOPBACK no - no no * * PPP ?[3] ?[3] no no * * Windows NT4 : * * ETHER yes ETHER no no * * LOOPBACK no - no no * * PPP no no no no * * Windows 2000 : * * ETHER yes ETHER yes ?[3] * * LOOPBACK no - no no * * PPP ?[3] ?[3] yes ?[3] * * Windows XP : * * ETHER yes ETHER yes yes[4] * * LOOPBACK no - no no * * PPP ?[3] ?[3] ?[2] ?[3] * * * * Notes : * * 1 : not sure * * 2 : not tested * * 3 : I'll summarize this info later... * * 4 : on systems where IPv6 is supported * ***************************************************************/ /*-------------------------------------------------------------*/ /* Name : netwib_io_init_spoof Description : Open a spoof session. Input parameter(s) : *pdevice : device where we spoof Input/output parameter(s) : Output parameter(s) : **ppio : io created Normal return values : NETWIB_ERR_OK : ok */ typedef enum { NETWIB_SPOOF_INITTYPE_LINK = 1, /* spoof at link level */ NETWIB_SPOOF_INITTYPE_IP4, /* spoof at IP4 level */ NETWIB_SPOOF_INITTYPE_IP6 /* spoof at IP6 level */ } netwib_spoof_inittype; netwib_err netwib_io_init_spoof(netwib_spoof_inittype inittype, netwib_constbuf *pdevice, netwib_io **ppio); #define netwib_io_init_spoof_link(device,ppio) netwib_io_init_spoof(NETWIB_SPOOF_INITTYPE_LINK,device,ppio) #define netwib_io_init_spoof_ip4(ppio) netwib_io_init_spoof(NETWIB_SPOOF_INITTYPE_IP4,NULL,ppio) #define netwib_io_init_spoof_ip6(ppio) netwib_io_init_spoof(NETWIB_SPOOF_INITTYPE_IP6,NULL,ppio) /*-------------------------------------------------------------*/ /* obtain the DLT needed to spoof at link level */ /* netwib_err f(netwib_io *pio, netwib_device_dlttype *pdlt); */ #define netwib_spoof_ctl_get_dlt(pio,pdlt) netwib_io_ctl_get(pio,NETWIB_IO_WAYTYPE_SUPPORTED,NETWIB_IO_CTLTYPE_SPOOF_DLT,NULL,(netwib_uint32*)pdlt) /*-------------------------------------------------------------*/ /*************************************************************** * This io permits to spoof at IP4/6 level (DLTTYPE_RAW). * ***************************************************************/ typedef enum { NETWIB_SPOOF_IP_INITTYPE_UNKNOWN = 0, NETWIB_SPOOF_IP_INITTYPE_RAW, /* use only IP4/6 level */ NETWIB_SPOOF_IP_INITTYPE_LINKF, /* add a link header and spoof at link level (source ad is filled) */ NETWIB_SPOOF_IP_INITTYPE_LINKB, /* add a link header and spoof at link level (source ad is blank (0:0:0:0:0:0)) */ NETWIB_SPOOF_IP_INITTYPE_LINKFB, /* add a link header and spoof at link level (source ad can be blank) */ NETWIB_SPOOF_IP_INITTYPE_RAWLINKF, /* try IP4/6 level. If doesn't work, use link */ NETWIB_SPOOF_IP_INITTYPE_RAWLINKB, NETWIB_SPOOF_IP_INITTYPE_RAWLINKFB, NETWIB_SPOOF_IP_INITTYPE_LINKFRAW, /* try link level. If doesn't work, use IP4/6 */ NETWIB_SPOOF_IP_INITTYPE_LINKBRAW, NETWIB_SPOOF_IP_INITTYPE_LINKFBRAW, NETWIB_SPOOF_IP_INITTYPE_LINK = NETWIB_SPOOF_IP_INITTYPE_LINKFB, NETWIB_SPOOF_IP_INITTYPE_RAWLINK = NETWIB_SPOOF_IP_INITTYPE_RAWLINKFB, NETWIB_SPOOF_IP_INITTYPE_LINKRAW = NETWIB_SPOOF_IP_INITTYPE_LINKFBRAW, NETWIB_SPOOF_IP_INITTYPE_BEST = NETWIB_SPOOF_IP_INITTYPE_LINKRAW } netwib_spoof_ip_inittype; netwib_err netwib_io_init_spoof_ip(netwib_spoof_ip_inittype inittype, netwib_io **ppio); #define netwib_io_init_spoof_ip_best(ppio) netwib_io_init_spoof_ip(NETWIB_SPOOF_IP_INITTYPE_BEST,NETWIB_PKT_FIELDTYPE_BEST,ppio) /*-------------------------------------------------------------*/ /* Name : netwib_buf_append_spoof_ip_inittype Description : Obtains the buf string corresponding to a type. Input parameter(s) : type : type Input/output parameter(s) : Output parameter(s) : *pbuf : netwib_buf set with the buf string Normal return values : NETWIB_ERR_OK : ok */ netwib_err netwib_buf_append_spoof_ip_inittype(netwib_spoof_ip_inittype type, netwib_buf *pbuf); /*-------------------------------------------------------------*/ /* Name : netwib_spoof_ip_inittype_init_kbd Description : Initialize a netwib_spoof_ip_inittype with data entered through keyboard. Input parameter(s) : *pmessage : message to print before defaulttype : default type to use if user enters nothing (if NETWIB_SPOOF_IP_INITTYPE_UNKNOWN, means no default) Input/output parameter(s) : Output parameter(s) : *phwtype : netwib_hwtype initialized Normal return values : NETWIB_ERR_OK : ok */ netwib_err netwib_spoof_ip_inittype_init_kbd(netwib_constbuf *pmessage, netwib_spoof_ip_inittype defaulttype, netwib_spoof_ip_inittype *ptype); #define NETWIB_SPOOF_IP_INITTYPE_INIT_KBD_NODEF NETWIB_SPOOF_IP_INITTYPE_UNKNOWN