/*-------------------------------------------------------------*/ typedef struct netwib_conf_routes_index netwib_conf_routes_index; /*-------------------------------------------------------------*/ typedef struct { netwib_uint32 devnum; netwib_ip dst; netwib_ip mask; /* set for IPv4 */ netwib_uint32 prefix; /* set for IPv6 */ netwib_bool srcset; netwib_ip src; netwib_bool gwset; netwib_ip gw; netwib_uint32 metric; } netwib_conf_routes; /* srcunset and gwunset : dst is a local device srcset and gwunset : dst in on LAN srcunset and gwset : error srcset and gwset : dst is through gw */ /*-------------------------------------------------------------*/ /* Name : netwib_conf_routes_index_init Description : Initialize a netwib_conf_routes_index used to loop through a netwib_conf_routes. Input parameter(s) : pitem : address of netwib_conf_routes which will be set on each call of netwib_conf_routes_next Input/output parameter(s) : Output parameter(s) : **ppindex : netwib_conf_routes_index allocated and initialized Normal return values : NETWIB_ERR_OK : ok */ netwib_err netwib_conf_routes_index_init(netwib_conf_routes *pitem, netwib_conf_routes_index **ppindex); /*-------------------------------------------------------------*/ /* Name : netwib_conf_routes_index_close Description : Close a netwib_conf_routes_index. Input parameter(s) : Input/output parameter(s) : **ppindex : netwib_conf_routes_index to close Output parameter(s) : Normal return values : NETWIB_ERR_OK : ok */ netwib_err netwib_conf_routes_index_close(netwib_conf_routes_index **ppindex); /*-------------------------------------------------------------*/ /* Name : netwib_conf_routes_index_next Description : Get next entry. Input parameter(s) : Input/output parameter(s) : *pindex : netwib_conf_routes_index to work on Output parameter(s) : Normal return values : NETWIB_ERR_OK : ok NETWIB_ERR_DATAEND : end reached */ netwib_err netwib_conf_routes_index_next(netwib_conf_routes_index *pindex); /*-------------------------------------------------------------*/ /* Name : netwib_conf_routes_display Description : Print routes configuration. Input parameter(s) : Input/output parameter(s) : Output parameter(s) : *pbuf : netwib_buf receiving data Normal return values : NETWIB_ERR_OK : ok */ netwib_err netwib_conf_routes_display(void); netwib_err netwib_buf_append_conf_routes(netwib_buf *pbuf); /*-------------------------------------------------------------*/ /* Name : netwib_conf_routes_reach_eth Description : Determine device, sources addresses and destination Ethernet address to use to send an IP packet to a host. Input parameter(s) : dstip : host to reach Input/output parameter(s) : Output parameter(s) : *pdevice : device to use *psrceth : Ethernet source address to use *pdsteth : Ethernet destination address to use *psrcip : IP source address to use Normal return values : NETWIB_ERR_OK : ok (set: all) NETWIB_ERR_ROUTELOCALDEV : hostip is the address of a local device (set : device) NETWIB_ERR_ROUTENOTETHER : Ethernet is not used to reach destination (set : none) NETWIB_ERR_ROUTENOTFOUND : the routing table doesn't contain a route to hostip (set : none) */ netwib_err netwib_conf_routes_reach_eth(netwib_constip *pdstip, netwib_buf *pdevice, netwib_eth *psrceth, netwib_eth *pdsteth, netwib_ip *psrcip); /*-------------------------------------------------------------*/ /* Name : netwib_conf_routes_reach_ip Description : Determine device and addresses to use to send an IP packet to a host. Input parameter(s) : dstip : host to reach Input/output parameter(s) : Output parameter(s) : *pdevice : device to use (for example to sniff) *psrcip : IP source address to use Normal return values : NETWIB_ERR_OK : ok (set: all) NETWIB_ERR_ROUTELOCALDEV : hostip is the address of a local device (set : *pdevice) NETWIB_ERR_ROUTENOTFOUND : the routing table doesn't contain a route to hostip (set : none) */ netwib_err netwib_conf_routes_reach_ip(netwib_constip *pdstip, netwib_buf *pdevice, netwib_ip *psrcip);