IPIP: IP in IP package support
The package supports IP in IP by registering the ipip protocol handler
Following options are configurable
    -peeraddr (IPv4 remote address)
    -ipaddr (IPv4 local address)
    -ttl (time to live of encapsulating packet)
    -tos (type of service of encapsulating packet either inherit (outer header inherits the value of the inner header) or hex value)
    -df (don't fragment flag of encapsulating packet)
    -mtu (IPIP tunnel mtu)
    -tunlink (bind tunnel to this interface)
    -zone (firewall zone to which the IPIP tunnel will be added)
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
SVN-Revision: 42746
			
			
This commit is contained in:
		
							
								
								
									
										39
									
								
								package/network/config/ipip/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								package/network/config/ipip/Makefile
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
#
 | 
			
		||||
# Copyright (C) 2014 OpenWrt.org
 | 
			
		||||
#
 | 
			
		||||
# This is free software, licensed under the GNU General Public License v2.
 | 
			
		||||
# See /LICENSE for more information.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
include $(TOPDIR)/rules.mk
 | 
			
		||||
 | 
			
		||||
PKG_NAME:=ipip
 | 
			
		||||
PKG_VERSION:=1
 | 
			
		||||
PKG_RELEASE:=1
 | 
			
		||||
 | 
			
		||||
include $(INCLUDE_DIR)/package.mk
 | 
			
		||||
 | 
			
		||||
define Package/ipip
 | 
			
		||||
  SECTION:=net
 | 
			
		||||
  CATEGORY:=Network
 | 
			
		||||
  MAINTAINER:=Hans Dedecker <dedeckeh@gmail.com>
 | 
			
		||||
  TITLE:=IP in IP Tunnel config support
 | 
			
		||||
  DEPENDS:= +kmod-ipip
 | 
			
		||||
endef
 | 
			
		||||
 | 
			
		||||
define Package/ipip/description
 | 
			
		||||
 IP in IP Tunnel config support in /etc/config/network.
 | 
			
		||||
endef
 | 
			
		||||
 | 
			
		||||
define Build/Compile
 | 
			
		||||
endef
 | 
			
		||||
 | 
			
		||||
define Build/Configure
 | 
			
		||||
endef
 | 
			
		||||
 | 
			
		||||
define Package/ipip/install
 | 
			
		||||
	$(INSTALL_DIR) $(1)/lib/netifd/proto
 | 
			
		||||
	$(INSTALL_BIN) ./files/ipip.sh $(1)/lib/netifd/proto/ipip.sh
 | 
			
		||||
endef
 | 
			
		||||
 | 
			
		||||
$(eval $(call BuildPackage,ipip))
 | 
			
		||||
							
								
								
									
										80
									
								
								package/network/config/ipip/files/ipip.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										80
									
								
								package/network/config/ipip/files/ipip.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,80 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
[ -n "$INCLUDE_ONLY" ] || {
 | 
			
		||||
	. /lib/functions.sh
 | 
			
		||||
	. /lib/functions/network.sh
 | 
			
		||||
	. ../netifd-proto.sh
 | 
			
		||||
	init_proto "$@"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
proto_ipip_setup() {
 | 
			
		||||
	local cfg="$1"
 | 
			
		||||
 | 
			
		||||
	local df ipaddr peeraddr tunlink ttl tos zone mtu
 | 
			
		||||
	json_get_vars df ipaddr peeraddr tunlink ttl tos zone mtu
 | 
			
		||||
 | 
			
		||||
	[ -z "$peeraddr" ] && {
 | 
			
		||||
		proto_notify_error "$cfg" "MISSING_ADDRESS"
 | 
			
		||||
		proto_block_restart "$cfg"
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	( proto_add_host_dependency "$cfg" "$peeraddr" "$tunlink" )
 | 
			
		||||
 | 
			
		||||
	[ -z "$ipaddr" ] && {
 | 
			
		||||
		local wanif="$tunlink"
 | 
			
		||||
		if [ -z $wanif ] && ! network_find_wan wanif; then
 | 
			
		||||
			proto_notify_error "$cfg" "NO_WAN_LINK"
 | 
			
		||||
			return
 | 
			
		||||
		fi
 | 
			
		||||
 | 
			
		||||
		if ! network_get_ipaddr ipaddr "$wanif"; then
 | 
			
		||||
			proto_notify_error "$cfg" "NO_WAN_LINK"
 | 
			
		||||
			return
 | 
			
		||||
		fi
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	[ -z "$zone" ] && zone="wan"
 | 
			
		||||
 | 
			
		||||
	proto_init_update "ipip-$cfg" 1
 | 
			
		||||
 | 
			
		||||
	proto_add_tunnel
 | 
			
		||||
	json_add_string mode "ipip"
 | 
			
		||||
	json_add_int mtu "${mtu:-1280}"
 | 
			
		||||
	json_add_int ttl "${ttl:-64}"
 | 
			
		||||
	[ -n "$tos" ] && json_add_string tos "$tos"
 | 
			
		||||
	json_add_string local "$ipaddr"
 | 
			
		||||
	json_add_string remote "$peeraddr"
 | 
			
		||||
	[ -n "$tunlink" ] && json_add_string link "$tunlink"
 | 
			
		||||
	json_add_boolean df "${df:-1}"
 | 
			
		||||
 | 
			
		||||
	proto_close_tunnel
 | 
			
		||||
 | 
			
		||||
	proto_add_data
 | 
			
		||||
	[ -n "$zone" ] && json_add_string zone "$zone"
 | 
			
		||||
	proto_close_data
 | 
			
		||||
 | 
			
		||||
	proto_send_update "$cfg"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
proto_ipip_teardown() {
 | 
			
		||||
	local cfg="$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
proto_ipip_init_config() {
 | 
			
		||||
	no_device=1
 | 
			
		||||
	available=1
 | 
			
		||||
 | 
			
		||||
	proto_config_add_int "mtu"
 | 
			
		||||
	proto_config_add_int "ttl"
 | 
			
		||||
	proto_config_add_string "tos"
 | 
			
		||||
	proto_config_add_string "tunlink"
 | 
			
		||||
	proto_config_add_string "zone"
 | 
			
		||||
	proto_config_add_string "ipaddr"
 | 
			
		||||
	proto_config_add_string "peeraddr"
 | 
			
		||||
	proto_config_add_boolean "df"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[ -n "$INCLUDE_ONLY" ] || {
 | 
			
		||||
	add_protocol ipip
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user