20
20
#include <vnetwork.h>
23
void vnetInit(vnetConfig *vnetconfig, char *mode, char *eucahome, char *path, int role, char *pubInterface, char *privInterface, char *numberofaddrs, char *network, char *netmask, char *broadcast, char *nameserver, char *router, char *daemon, char *dhcpuser, char *bridgedev) {
23
void vnetInit(vnetConfig *vnetconfig, char *mode, char *eucahome, char *path, int role, char *pubInterface, char *privInterface, char *numberofaddrs, char *network, char *netmask, char *broadcast, char *nameserver, char *router, char *daemon, char *dhcpuser, char *bridgedev, char *localIp) {
24
24
uint32_t nw=0, nm=0, unw=0, unm=0, dns=0, bc=0, rt=0, rc=0, slashnet=0;
25
25
int vlan=0, numaddrs=1;
914
930
rc = system(cmd);
917
// snprintf(cmd, 1024, "%s/usr/lib/eucalyptus/euca_rootwrap ip addr add 0.0.0.0 dev %s", vnetconfig->eucahome, newbrname);
919
933
snprintf(cmd, 1024, "%s/usr/lib/eucalyptus/euca_rootwrap ip link set dev %s up", vnetconfig->eucahome, newbrname);
920
934
rc = system(cmd);
923
// snprintf(cmd, 1024, "%s/usr/lib/eucalyptus/euca_rootwrap ip addr add 0.0.0.0 dev %s", vnetconfig->eucahome, newdevname);
925
937
snprintf(cmd, 1024, "%s/usr/lib/eucalyptus/euca_rootwrap ip link set dev %s up", vnetconfig->eucahome, newdevname);
926
938
rc = system(cmd);
929
snprintf(cmd, 1024, "%s/usr/lib/eucalyptus/euca_rootwrap ifconfig %s 0.0.0.0 up", vnetconfig->eucahome, newbrname);
931
snprintf(cmd, 1024, "%s/usr/lib/eucalyptus/euca_rootwrap ifconfig %s up", vnetconfig->eucahome, newdevname);
936
940
snprintf(newbrname, 32, "%s", vnetconfig->bridgedev);
1004
int vnetTeardownTunnels(vnetConfig *vnetconfig) {
1007
for (j=2; j<NUMBER_OF_VLANS; j++) {
1008
if (vnetconfig->networks[j].active) {
1010
for (i=0; i<NUMBER_OF_CCS && !done; i++) {
1011
if (vnetconfig->ccs[i] == 0) {
1014
char cmd[1024], gredev[32];
1016
snprintf(gredev, 32, "gretun%d.%d", i, j);
1018
logprintfl(EUCADEBUG, "tearing down tunnel: %s\n", gredev);
1019
rc = check_device(gredev);
1021
snprintf(cmd, 1024, "%s/usr/lib/eucalyptus/euca_rootwrap ip link del dev %s", vnetconfig->eucahome, gredev);
1022
logprintfl(EUCADEBUG, "running cmd '%s'\n", cmd);
1025
logprintfl(EUCADEBUG, "done: %d\n", rc);
1033
int vnetSetupTunnelsVTUN(vnetConfig *vnetconfig) {
1034
return(vnetSetupTunnelsVTUN(vnetconfig));
1036
int vnetSetupTunnelsVTUN(vnetConfig *vnetconfig) {
1039
snprintf(cmd, 1024, "%s/usr/lib/eucalyptus/euca_rootwrap vtund -s -f %s/var/lib/CC/vtunall.conf", vnetconfig->eucahome, vnetconfig->eucahome);
1040
logprintfl(EUCADEBUG, "running cmd '%s'\n", cmd);
1043
logprintfl(EUCADEBUG, "done: %d\n", rc);
1045
for (j=2; j<NUMBER_OF_VLANS; j++) {
1047
snprintf(brdev, 32, "eucabr%d", j);
1049
if (vnetconfig->networks[j].active && !check_device(brdev)) {
1051
for (i=0; i<NUMBER_OF_CCS && !done; i++) {
1052
if (vnetconfig->ccs[i] == 0) {
1055
char cmd[1024], tundev[32], *remoteIp=NULL;
1056
remoteIp = hex2dot(vnetconfig->ccs[i]);
1058
if (strcmp(remoteIp, vnetconfig->localIp)) {
1059
logprintfl(EUCADEBUG, "setting up tunnel for endpoint: %s\n", remoteIp);
1060
snprintf(tundev, 32, "vtun%d.%d", i, j);
1061
rc = check_device(tundev);
1063
snprintf(cmd, 1024, "%s/usr/lib/eucalyptus/euca_rootwrap vtund -f %s/var/lib/CC/vtunall.conf -p tun-%d-%d %s", vnetconfig->eucahome, vnetconfig->eucahome, i, j, remoteIp);
1064
logprintfl(EUCADEBUG, "running cmd '%s'\n", cmd);
1067
logprintfl(EUCADEBUG, "done: %d\n", rc);
1069
//vtund -f /tmp/vtun.lespaul -p tun10 sg
1071
snprintf(cmd, 1024, "%s/usr/lib/eucalyptus/euca_rootwrap ip link add %s type gretap remote %s local %s ttl 15", vnetconfig->eucahome, tundev, remoteIp, vnetconfig->localIp);
1074
snprintf(cmd, 1024, "%s/usr/lib/eucalyptus/euca_rootwrap brctl addif %s %s", vnetconfig->eucahome, brdev, tundev);
1075
logprintfl(EUCADEBUG, "running cmd '%s'\n", cmd);
1078
logprintfl(EUCADEBUG, "done: %d\n", rc);
1080
snprintf(cmd, 1024, "%s/usr/lib/eucalyptus/euca_rootwrap ip link set up dev %s", vnetconfig->eucahome, tundev);
1081
logprintfl(EUCADEBUG, "running cmd '%s'\n", cmd);
1084
logprintfl(EUCADEBUG, "done: %d\n", rc);
1086
if (remoteIp) free(remoteIp);
1096
int vnetSetupTunnelsGRE(vnetConfig *vnetconfig) {
1099
for (j=2; j<NUMBER_OF_VLANS; j++) {
1101
snprintf(brdev, 32, "eucabr%d", j);
1103
if (vnetconfig->networks[j].active && !check_device(brdev)) {
1105
for (i=0; i<NUMBER_OF_CCS && !done; i++) {
1106
if (vnetconfig->ccs[i] == 0) {
1109
char cmd[1024], tundev[32], *remoteIp=NULL;
1110
remoteIp = hex2dot(vnetconfig->ccs[i]);
1112
if (strcmp(remoteIp, vnetconfig->localIp)) {
1113
logprintfl(EUCADEBUG, "setting up tunnel for endpoint: %s\n", remoteIp);
1114
snprintf(tundev, 32, "gretun%d.%d", i, j);
1115
rc = check_device(tundev);
1117
snprintf(cmd, 1024, "%s/usr/lib/eucalyptus/euca_rootwrap ip link add %s type gretap remote %s local %s ttl 15", vnetconfig->eucahome, tundev, remoteIp, vnetconfig->localIp);
1118
logprintfl(EUCADEBUG, "running cmd '%s'\n", cmd);
1121
logprintfl(EUCADEBUG, "done: %d\n", rc);
1123
snprintf(cmd, 1024, "%s/usr/lib/eucalyptus/euca_rootwrap brctl addif %s %s", vnetconfig->eucahome, brdev, tundev);
1124
logprintfl(EUCADEBUG, "running cmd '%s'\n", cmd);
1127
logprintfl(EUCADEBUG, "done: %d\n", rc);
1129
snprintf(cmd, 1024, "%s/usr/lib/eucalyptus/euca_rootwrap ip link set up dev %s", vnetconfig->eucahome, tundev);
1130
logprintfl(EUCADEBUG, "running cmd '%s'\n", cmd);
1133
logprintfl(EUCADEBUG, "done: %d\n", rc);
1135
if (remoteIp) free(remoteIp);
1004
1145
int vnetAddGatewayIP(vnetConfig *vnetconfig, int vlan, char *devname) {
1005
1146
char *newip, *broadcast;
1006
1147
int rc, slashnet;