// SoftEther VPN Source Code - Developer Edition Master Branch // Cedar Communication Module // VLanUnix.h // Header of VLanUnix.c #ifdef OS_UNIX #ifndef VLANUNIX_H #define VLANUNIX_H #include "CedarType.h" #include "VLan.h" #include "Mayaqua/MayaType.h" // Constant #define TAP_READ_BUF_SIZE 1600 #ifndef NO_VLAN // VLAN structure struct VLAN { volatile bool Halt; // Halt flag char *InstanceName; // Instance name int fd; // File }; // Function prototype VLAN *NewVLan(char *instance_name, VLAN_PARAM *param); VLAN *NewBridgeTap(char *name, char *mac_address, bool create_up); void FreeVLan(VLAN *v); void FreeBridgeTap(VLAN *v); CANCEL *VLanGetCancel(VLAN *v); bool VLanGetNextPacket(VLAN *v, void **buf, UINT *size); bool VLanPutPacket(VLAN *v, void *buf, UINT size); PACKET_ADAPTER *VLanGetPacketAdapter(); bool VLanPaInit(SESSION *s); CANCEL *VLanPaGetCancel(SESSION *s); UINT VLanPaGetNextPacket(SESSION *s, void **data); bool VLanPaPutPacket(SESSION *s, void *data, UINT size); void VLanPaFree(SESSION *s); #else // NO_VLAN #define VLanGetPacketAdapter NullGetPacketAdapter #endif // NO_VLAN struct UNIX_VLAN_LIST { char Name[MAX_SIZE]; // Device name int fd; // fd }; int UnixCreateTapDevice(char *name, UCHAR *mac_address, bool create_up); int UnixCreateTapDeviceEx(char *name, char *prefix, UCHAR *mac_address, bool create_up); void UnixCloseTapDevice(int fd); void UnixDestroyBridgeTapDevice(char *name); void UnixDestroyClientTapDevice(char *name); void UnixSetIfGroup(int fd, const char *name, const char *group_name); void UnixVLanInit(); void UnixVLanFree(); bool UnixVLanCreate(char *name, UCHAR *mac_address, bool create_up); bool UnixVLanCreateEx(char *name, char *prefix, UCHAR *mac_address, bool create_up); TOKEN_LIST *UnixVLanEnum(); void UnixVLanDelete(char *name); bool UnixVLanSetState(char* name, bool state_up); int UnixVLanGet(char *name); int UnixCompareVLan(void *p1, void *p2); #endif // VLANUNIX_H #endif // OS_UNIX