From: Matthias Schiffer Date: Sat, 11 Jan 2014 11:47:58 +0100 Subject: Update odhcp6c to latest git master diff --git a/package/odhcp6c/Makefile b/package/odhcp6c/Makefile index e37b72e..ed51b98 100644 --- a/package/odhcp6c/Makefile +++ b/package/odhcp6c/Makefile @@ -8,26 +8,37 @@ include $(TOPDIR)/rules.mk PKG_NAME:=odhcp6c -PKG_VERSION:=2013-10-02 +PKG_VERSION:=2014-01-11 PKG_RELEASE=$(PKG_SOURCE_VERSION) PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) PKG_SOURCE_URL:=git://github.com/sbyx/odhcp6c.git PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=357ecc1f5163bc7f74c64f4bca387e8d44a2eac5 +PKG_SOURCE_VERSION:=8152153cb9c5b09862bf0c8a0d1005fa8dfdf262 PKG_MAINTAINER:=Steven Barth include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/cmake.mk +ifneq ($(CONFIG_PACKAGE_odhcp6c_ext_prefix_class),0) + CMAKE_OPTIONS += -DEXT_PREFIX_CLASS=$(CONFIG_PACKAGE_odhcp6c_ext_prefix_class) +endif + define Package/odhcp6c - SECTION:=ipv6 - CATEGORY:=IPv6 + SECTION:=net + CATEGORY:=Network TITLE:=Embedded DHCPv6-client for OpenWrt DEPENDS:=+kmod-ipv6 endef +define Package/odhcp6c/config + config PACKAGE_odhcp6c_ext_prefix_class + int "Prefix Class Extension ID (0 = disabled)" + depends on PACKAGE_odhcp6c + default 0 +endef + define Package/odhcp6c/install $(INSTALL_DIR) $(1)/usr/sbin/ $(INSTALL_BIN) $(PKG_BUILD_DIR)/odhcp6c $(1)/usr/sbin/ diff --git a/package/odhcp6c/files/dhcpv6.script b/package/odhcp6c/files/dhcpv6.script index 324a823..8bcf766 100755 --- a/package/odhcp6c/files/dhcpv6.script +++ b/package/odhcp6c/files/dhcpv6.script @@ -64,23 +64,28 @@ setup_interface () { entry="${entry#*,}" local metric="${entry%%,*}" - proto_add_ipv6_route "$addr" "$mask" "$gw" "$metric" "$valid" + if [ -z "$SOURCE_ROUTING" -o -z "$gw" ]; then + proto_add_ipv6_route "$addr" "$mask" "$gw" "$metric" "$valid" + else + proto_add_ipv6_route "$addr" "$mask" "$gw" "$metric" "$valid" "::/128" + for prefix in $PREFIXES; do + local paddr="${prefix%%,*}" + proto_add_ipv6_route "$addr" "$mask" "$gw" "$metric" "$valid" "$paddr" + done + fi done proto_send_update "$INTERFACE" if [ -n "$AFTR_IP " -a -n "$IFACE_DSLITE" ]; then -uci -q batch <<-EOF >/dev/null -set network.$IFACE_DSLITE.proto=dslite -set network.$IFACE_DSLITE.auto=0 -set network.$IFACE_DSLITE.peeraddr=$AFTR_IP -set network.$IFACE_DSLITE.tunlink=$INTERFACE -commit network -EOF - - ifdown "$IFACE_DSLITE" - /etc/init.d/network reload - ifup "$IFACE_DSLITE" + json_init + json_add_string name "$IFACE_DSLITE" + json_add_string ifname "@$INTERFACE" + json_add_string proto "dslite" + json_add_string peeraddr "$AFTR_IP" + json_add_string tunlink "$INTERFACE" + json_close_object + ubus call network add_dynamic "$(json_dump)" fi # TODO: $SNTP_IP $SIP_IP $SNTP_FQDN $SIP_DOMAIN diff --git a/package/odhcp6c/files/dhcpv6.sh b/package/odhcp6c/files/dhcpv6.sh index bf6cd9a..0638d28 100755 --- a/package/odhcp6c/files/dhcpv6.sh +++ b/package/odhcp6c/files/dhcpv6.sh @@ -10,18 +10,20 @@ proto_dhcpv6_init_config() { proto_config_add_string "clientid" proto_config_add_string "reqopts" proto_config_add_string "noslaaconly" + proto_config_add_string "forceprefix" proto_config_add_string "norelease" proto_config_add_string "ip6prefix" proto_config_add_string "iface_dslite" proto_config_add_string "ifaceid" + proto_config_add_string "sourcerouting" } proto_dhcpv6_setup() { local config="$1" local iface="$2" - local reqaddress reqprefix clientid reqopts noslaaconly norelease ip6prefix iface_dslite ifaceid - json_get_vars reqaddress reqprefix clientid reqopts noslaaconly norelease ip6prefix iface_dslite ifaceid + local reqaddress reqprefix clientid reqopts noslaaconly forceprefix norelease ip6prefix iface_dslite ifaceid sourcerouting + json_get_vars reqaddress reqprefix clientid reqopts noslaaconly forceprefix norelease ip6prefix iface_dslite ifaceid sourcerouting # Configure @@ -35,6 +37,8 @@ proto_dhcpv6_setup() { [ "$noslaaconly" = "1" ] && append opts "-S" + [ "$forceprefix" = "1" ] && append opts "-F" + [ "$norelease" = "1" ] && append opts "-k" [ -n "$ifaceid" ] && append opts "-i$ifaceid" @@ -45,6 +49,7 @@ proto_dhcpv6_setup() { [ -n "$ip6prefix" ] && proto_export "USERPREFIX=$ip6prefix" [ -n "$iface_dslite" ] && proto_export "IFACE_DSLITE=$iface_dslite" + [ "$sourcerouting" = "1" ] && proto_export "SOURCE_ROUTING=1" proto_export "INTERFACE=$config" proto_run_command "$config" odhcp6c \