# #
###############################################################################
-. /lib/network/header-port
+. /lib/network/header-config
HOOK_SETTINGS="HOOK ADDRESS PREFIX GATEWAY"
PREFIX=$(ipv4_mask_to_cidr ${NETMASK})
fi
- config_write $(zone_dir ${zone})/config.${HOOK}.$(uuid) ${HOOK_SETTINGS}
+ # XXX maybe we can add some hashing to identify a configuration again
+ config_write $(zone_dir ${zone})/configs/${HOOK}.$(uuid) ${HOOK_SETTINGS}
exit ${EXIT_OK}
}
error "Zone '${zone}' doesn't exist."
exit ${EXIT_ERROR}
fi
-
- config_read $(zone_dir ${zone})/${config}
+
+ config_read $(zone_dir ${zone})/configs/${config}
if ! zone_has_ipv4 ${zone} ${ADDRESS}/${PREFIX}; then
+ if ipv4_detect_duplicate ${zone} ${ADDRESS}; then
+ error_log "Duplicate address detected on zone '${zone}' (${address})."
+ error_log "Cannot continue."
+ exit ${EXIT_ERROR}
+ fi
+
ip addr add ${ADDRESS}/${PREFIX} dev ${zone}
- else
- warning "Do not set IPv4 address '${ADDRESS}/${PREFIX}' because it was already configured on zone '${zone}'."
+
+ # Announce our new address to the neighbours
+ ipv4_update_neighbours ${zone} ${ADDRESS}
fi
if zone_is_nonlocal ${zone} && [ -n "${GATEWAY}" ]; then
- : # XXX to be done
+ # Save configuration
+ red_db_set ${zone} type "${HOOK}"
+ red_db_set ${zone} local-ip-address ${ADDRESS}/${PREFIX}
+ red_db_set ${zone} remote-ip-address ${GATEWAY}
+
+ red_db_set ${zone} active 1
+ red_routing_update ${zone}
fi
exit ${EXIT_OK}
exit ${EXIT_ERROR}
fi
- config_read $(zone_dir ${zone})/${config}
+ config_read $(zone_dir ${zone})/configs/${config}
if zone_has_ipv4 ${zone} ${ADDRESS}/${PREFIX}; then
ip addr del ${ADDRESS}/${PREFIX} dev ${zone}
exit ${EXIT_ERROR}
fi
- config_read $(zone_dir ${zone})/${config}
+ config_read $(zone_dir ${zone})/configs/${config}
printf " %10s - " "${HOOK}"
if zone_has_ipv4 ${zone} ${ADDRESS}/${PREFIX}; then
- echo -ne "${COLOUR_OK} OK ${COLOUR_NORMAL}"
+ echo -ne "${COLOUR_ENABLED}ENABLED ${COLOUR_NORMAL}"
else
- echo -ne "${COLOUR_ERROR}ERROR${COLOUR_NORMAL}"
+ echo -ne "${COLOUR_DISABLED}DISABLED${COLOUR_NORMAL}"
fi
echo " - ${ADDRESS}/${PREFIX}"