in reply to libdnet make fails

Libdnet.xs:46: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘TunHandle’

If you can fix that, the other errors will also be fixed. Unfortunately, it's not apparent to me what the problem is. The relevant section of Libdnet.xs is:
39: typedef blob_t Blob; 40: typedef eth_addr_t EthAddr; 41: typedef eth_t EthHandle; 42: typedef intf_t IntfHandle; 43: typedef arp_t ArpHandle; 44: typedef fw_t FwHandle; 45: typedef route_t RouteHandle; 46: typedef tun_t TunHandle; 47: typedef ip_t IpHandle; 48: typedef struct intf_entry IntfEntry; 49: typedef struct arp_entry ArpEntry; 50: typedef struct fw_rule FwRule; 51: typedef struct route_entry RouteEntry;
So, why does it pick on line 46 ?
Could it be that the run_t type is unknown ? (Perhaps your version of libdnet does not define the type.) But if that were the case, I would have also expected a warning along the lines of "data definition has no type or storage class". Yet I don't see any such warning.

Were there any warnings issued prior to the excerpt you've quoted above ?
Does your dnet.h (or one of the header files included by it) define the run_t type ?

Cheers,
Rob