/** * \file ipw.h * This is a wrapper definition for iproute2 package. * * \author Hamid Jafarian (hamid.jafarian@pdnsoft.com) * */ #ifndef _PTOOLS_IPW_H_ #define _PTOOLS_IPW_H_ #ifdef __cplusplus extern "C" { #endif #include #include "utils.h" #include "ip_common.h" /** * Initialize "ip" command environment. */ int ip_initialize(); /** * Finalize "ip" commnd environment. */ int ip_finalize(); /** * Set maximum loops of address flush process. */ int ip_setflushloop(int loop); /** * Add a vlan device on dev. * * Name of vlan device would be dev.vlan. */ int ip_nicAddVLAN(const char *dev, int vlanID); /** * Delete vlan device. * * \param dev is the name of vlan device. */ int ip_nicDelVLAN(const char *dev); /** * Add defined address to the interface. * * \param dev device name. * \param family address family, may be inet or inet6. * \param ifaddr target address. * \param broadcast broadcast address. * \param anycast any cast address. */ int ip_nicAddAddress(const char *dev, const char *family, const char *ifaddr, const char *broadcast, const char *anycast); /** * Delete specified address from device. * \see ip_nicAddAddress */ int ip_nicDelAddress(const char *dev, const char *family, const char *ifaddr, const char *broadcast, const char *anycast); /** * Delete all of the device addresses. */ int ip_nicFlushAddresses(const char *dev); /** * Set mtu of device. */ int ip_nicSetMTU(const char *dev, const char *mtu); /** * Set Muticast option of device. * * \param do_enable "1" means enable and "0" means disable. */ int ip_nicSetMulticast(const char *dev, unsigned short do_enable); /** * Set AllMuticast option of device. * * \param do_enable "1" means enable and "0" means disable. */ int ip_nicSetAllMulticast(const char *dev, unsigned short do_enable); /** * Set Arp option of device. * * \param do_enable "1" means enable and "0" means disable. */ int ip_nicSetARP(const char *dev, unsigned short do_enable); /** * Change device state. * * \param do_up "1" means up and "0" means down. */ int ip_nicChangeState(const char *dev, unsigned short do_up); /** * \struct RouteInfo * * Defines routing information to manage system routes. */ struct RouteInfo { const char *rt_type; const char *rt_prefix; const char *rt_tos; const char *rt_table; const char *rt_scope; const char *rt_metric; const char *rt_preference; const char *rt_via; const char *rt_dev; const char *rt_weight; const char *rt_mtu; unsigned short rt_mtu_lock; /* bool: 0:false, 1:true */ const char *rt_tcp_window; }; /** * Add defined route to system. */ int ip_rtAdd(const struct RouteInfo *ri); /** * Delete defined route to system. */ int ip_rtDel(const struct RouteInfo *ri); /** * Replace/Add defined route to system. */ int ip_rtRep(const struct RouteInfo *ri); /** * Fill ip-route command args. */ int _ip_rtArgv(const struct RouteInfo *ri, const char **argv); #ifdef __cplusplus } // extern "C" #endif #endif // _PTOOLS_IPW_HPP_