#include <unistd.h>
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <string.h>
#include <iostream>
#include <iomanip>
#include <sstream>
#include <errno.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <net/if.h>
#include <linux/if_tun.h>
#include <net/route.h>
#include <netinet/in.h>
#include "creator-utils.h"
Go to the source code of this file.
Macros | |
#define | PLANETLAB_MAGIC 75867 |
#define | VSYS_TUNTAP "/vsys/fd_tuntap.control" |
#define | VSYS_VIFUP_IN "/vsys/vif_up.in" |
#define | VSYS_VIFUP_OUT "/vsys/vif_up.out" |
Functions | |
int | ReceiveVifFd (int fd, char *vif_name) |
Reads vif FD from "fd", writes interface name to vif_name, and returns vif FD. More... | |
void | SetTunUp (const char *ip, const char *prefix, const char *if_name) |
Sets the TAP/TUN interface up. More... | |
int | TunAlloc (int iftype, char *if_name) |
Creates a TUN/TAP device on a PlanetLab virtual machine (sliver). More... | |
#define PLANETLAB_MAGIC 75867 |
Definition at line 46 of file planetlab-tap-creator.cc.
#define VSYS_TUNTAP "/vsys/fd_tuntap.control" |
Definition at line 48 of file planetlab-tap-creator.cc.
#define VSYS_VIFUP_IN "/vsys/vif_up.in" |
Definition at line 49 of file planetlab-tap-creator.cc.
#define VSYS_VIFUP_OUT "/vsys/vif_up.out" |
Definition at line 50 of file planetlab-tap-creator.cc.
int ReceiveVifFd | ( | int | fd, |
char * | vif_name | ||
) |
Reads vif FD from "fd", writes interface name to vif_name, and returns vif FD.
vif_name should be IFNAMSIZ chars long.
Definition at line 61 of file planetlab-tap-creator.cc.
References ABORT_IF.
Referenced by TunAlloc().
void SetTunUp | ( | const char * | ip, |
const char * | prefix, | ||
const char * | if_name | ||
) |
Sets the TAP/TUN interface up.
When a TAP/TUN device is created on PlanetLab it must be set up writing some configuration information to the vsys fifo at /vsys/vif_up.in
Definition at line 140 of file planetlab-tap-creator.cc.
References ABORT_IF, VSYS_VIFUP_IN, and VSYS_VIFUP_OUT.
int TunAlloc | ( | int | iftype, |
char * | if_name | ||
) |
Creates a TUN/TAP device on a PlanetLab virtual machine (sliver).
PlanetLab provides the Vsys API to enable privileged operating system calls in an environment with restricted privileges. To create a TUN/TAP device the it is necessary to connect to the /vsys/fd_tuntap.control socket, and send the device initialization parameters.
Definition at line 105 of file planetlab-tap-creator.cc.
References ABORT_IF, ReceiveVifFd(), and VSYS_TUNTAP.