Showing with 20 additions and 17 deletions.
  1. +4 −2 net/euca-to-mido.c
  2. +2 −1 net/euca-to-mido.h
  3. +12 −12 net/eucanetd.c
  4. +2 −2 net/eucanetd_vpc.c
@@ -1741,7 +1741,7 @@ int do_midonet_update_pass3_insts(globalNetworkInfo * gni, mido_config * mido) {
in_rulepos = 1;

// anti-spoof
{
if (!mido->disable_l2_isolation) {
// block any source mac that isn't the registered instance mac
hex2mac(gniinstance->macAddress, &instMac);
for (int i = 0; i < strlen(instMac); i++) {
@@ -2986,7 +2986,7 @@ int delete_mido_vpc_instance(mido_vpc_instance * vpcinstance)
//!
//! @note
//!
int initialize_mido(mido_config * mido, char *eucahome, int flushmode, char *ext_eucanetdhostname, char *ext_rthosts, char *ext_pubnw,
int initialize_mido(mido_config * mido, char *eucahome, int flushmode, int disable_l2_isolation, char *ext_eucanetdhostname, char *ext_rthosts, char *ext_pubnw,
char *ext_pubgwip, char *int_rtnetwork, char *int_rtslashnet)
{
int ret = 0;
@@ -3008,6 +3008,8 @@ int initialize_mido(mido_config * mido, char *eucahome, int flushmode, char *ext
mido->eucahome = strdup(eucahome);

mido->flushmode = flushmode;

mido->disable_l2_isolation = disable_l2_isolation;

mido->ext_eucanetdhostname = strdup(ext_eucanetdhostname);

@@ -231,6 +231,7 @@ typedef struct mido_config_t {
u32 enabledCLCIp;
int int_rtsn;
int flushmode;
int disable_l2_isolation;

midoname *hosts;
midoname *routers;
@@ -297,7 +298,7 @@ int set_router_id(mido_config * mido, int id);
int cidr_split(char *cidr, char *outnet, char *outslashnet, char *outgw, char *outplustwo);
int isMidoVpcPlusTwo(mido_config *mido, char *iptocheck);

int initialize_mido(mido_config * mido, char *eucahome, int flushmode, char *ext_eucanetdhostname, char *ext_rthosts, char *ext_pubnw,
int initialize_mido(mido_config * mido, char *eucahome, int flushmode, int disable_l2_isolation, char *ext_eucanetdhostname, char *ext_rthosts, char *ext_pubnw,
char *ext_pubgwip, char *int_rtnetwork, char *int_rtslashnet);
int discover_mido_resources(mido_config * mido);

@@ -393,9 +393,6 @@ int main(int argc, char **argv)
gIsRunning = TRUE;
eucanetd_install_signal_handlers();

// temporary
// system("cp /opt/eucalyptus/var/run/eucalyptus/global_network_info.xml /opt/eucalyptus/var/lib/eucalyptus/global_network_info.xml");

// spin here until we get the latest config from active CC
rc = 1;
while (rc) {
@@ -979,13 +976,20 @@ static int eucanetd_read_config(void)
// search for the global state file from eucalyptue
snprintf(sourceuri, EUCA_MAX_PATH, EUCALYPTUS_RUN_DIR "/global_network_info.xml", home);
if (check_file(sourceuri)) {
snprintf(sourceuri, EUCA_MAX_PATH, EUCALYPTUS_STATE_DIR "/global_network_info.xml", home);
snprintf(sourceuri, EUCA_MAX_PATH, EUCALYPTUS_RUN_DIR "/cc_global_network_info.xml", home);
if (check_file(sourceuri)) {
LOGWARN("cannot find global_network_info.xml state file in $EUCALYPTUS/var/lib/eucalyptus or $EUCALYPTUS/var/run/eucalyptus yet.\n");
return (1);
snprintf(sourceuri, EUCA_MAX_PATH, EUCALYPTUS_STATE_DIR "/global_network_info.xml", home);
if (check_file(sourceuri)) {
LOGWARN("cannot find global_network_info.xml state file in $EUCALYPTUS/var/lib/eucalyptus or $EUCALYPTUS/var/run/eucalyptus yet.\n");
return (1);
} else {
snprintf(sourceuri, EUCA_MAX_PATH, "file://" EUCALYPTUS_STATE_DIR "/global_network_info.xml", home);
snprintf(destfile, EUCA_MAX_PATH, EUCALYPTUS_STATE_DIR "/eucanetd_global_network_info.xml", home);
LOGDEBUG("found global_network_info.xml state file: setting source URI to '%s'\n", sourceuri);
}
} else {
snprintf(sourceuri, EUCA_MAX_PATH, "file://" EUCALYPTUS_STATE_DIR "/global_network_info.xml", home);
snprintf(destfile, EUCA_MAX_PATH, EUCALYPTUS_STATE_DIR "/eucanetd_global_network_info.xml", home);
snprintf(sourceuri, EUCA_MAX_PATH, "file://" EUCALYPTUS_RUN_DIR "/cc_global_network_info.xml", home);
snprintf(destfile, EUCA_MAX_PATH, EUCALYPTUS_RUN_DIR "/eucanetd_global_network_info.xml", home);
LOGDEBUG("found global_network_info.xml state file: setting source URI to '%s'\n", sourceuri);
}
} else {
@@ -994,10 +998,6 @@ static int eucanetd_read_config(void)
LOGDEBUG("found global_network_info.xml state file: setting source URI to '%s'\n", sourceuri);
}

// TODO: tmp
// snprintf(sourceuri, EUCA_MAX_PATH, "file:///tmp/meh.xml");


// initialize and populate data from global_network_info.xml file
atomic_file_init(&(config->global_network_info_file), sourceuri, destfile, 0);

@@ -290,7 +290,7 @@ static int network_driver_init(eucanetdConfig * pConfig)
return (1);
}

rc = initialize_mido(pMidoConfig, pConfig->eucahome, pConfig->flushmode, pConfig->midoeucanetdhost, pConfig->midogwhosts,
rc = initialize_mido(pMidoConfig, pConfig->eucahome, pConfig->flushmode, pConfig->disable_l2_isolation, pConfig->midoeucanetdhost, pConfig->midogwhosts,
pConfig->midopubnw, pConfig->midopubgwip, "169.254.0.0", "17");
if (rc) {
LOGERROR("could not initialize mido: please ensure that all required config options for MIDOVPC mode are set in eucalyptus.conf\n");
@@ -425,7 +425,7 @@ static u32 network_driver_system_scrub(globalNetworkInfo * pGni, lni_t * pLni)
bzero(pMidoConfig, sizeof(mido_config));
}

rc = initialize_mido(pMidoConfig, config->eucahome, config->flushmode, config->midoeucanetdhost, config->midogwhosts,
rc = initialize_mido(pMidoConfig, config->eucahome, config->flushmode, config->disable_l2_isolation, config->midoeucanetdhost, config->midogwhosts,
config->midopubnw, config->midopubgwip, "169.254.0.0", "17");
if (rc) {
LOGERROR("could not initialize mido config\n");