Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' of /home/cero1/src/openwrt
- Loading branch information
Showing
127 changed files
with
2,667 additions
and
2,109 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
# | ||
# Copyright (C) 2010-2012 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:=6rd | ||
PKG_VERSION:=2 | ||
PKG_RELEASE:=1 | ||
|
||
include $(INCLUDE_DIR)/package.mk | ||
|
||
define Package/6rd | ||
SECTION:=ipv6 | ||
CATEGORY:=IPv6 | ||
DEPENDS:=+kmod-ipv6 +kmod-sit | ||
TITLE:=6rd configuration support | ||
MAINTAINER:=Stéphan Kochen <stephan@kochen.nl> | ||
PKGARCH:=all | ||
endef | ||
|
||
define Package/6rd/description | ||
Provides support for 6rd tunnels in /etc/config/network. | ||
Refer to http://wiki.openwrt.org/doc/uci/network for | ||
configuration details. | ||
endef | ||
|
||
define Build/Prepare | ||
mkdir -p $(PKG_BUILD_DIR) | ||
$(CP) ./src/* $(PKG_BUILD_DIR)/ | ||
endef | ||
|
||
define Build/Configure | ||
endef | ||
|
||
define Build/Compile | ||
$(MAKE) -C $(PKG_BUILD_DIR) \ | ||
CC="$(TARGET_CC)" \ | ||
CFLAGS="$(TARGET_CFLAGS) -Wall" \ | ||
LDFLAGS="$(TARGET_LDFLAGS)" | ||
endef | ||
|
||
define Package/6rd/install | ||
$(INSTALL_DIR) $(1)/usr/sbin | ||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/6rdcalc $(1)/usr/sbin/ | ||
$(INSTALL_DIR) $(1)/lib/netifd/proto | ||
$(INSTALL_BIN) ./files/6rd.sh $(1)/lib/netifd/proto/6rd.sh | ||
endef | ||
|
||
$(eval $(call BuildPackage,6rd)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
#!/bin/sh | ||
# 6rd.sh - IPv6-in-IPv4 tunnel backend | ||
# Copyright (c) 2010-2012 OpenWrt.org | ||
|
||
[ -n "$INCLUDE_ONLY" ] || { | ||
. /lib/functions.sh | ||
. /lib/functions/network.sh | ||
. ../netifd-proto.sh | ||
init_proto "$@" | ||
} | ||
|
||
proto_6rd_setup() { | ||
local cfg="$1" | ||
local iface="$2" | ||
local link="6rd-$cfg" | ||
|
||
local mtu ttl ipaddr peeraddr ip6prefix ip6prefixlen ip4prefixlen | ||
json_get_vars mtu ttl ipaddr peeraddr ip6prefix ip6prefixlen ip4prefixlen | ||
|
||
[ -z "$ip6prefix" -o -z "$peeraddr" ] && { | ||
proto_notify_error "$cfg" "MISSING_ADDRESS" | ||
proto_block_restart "$cfg" | ||
return | ||
} | ||
|
||
( proto_add_host_dependency "$cfg" 0.0.0.0 ) | ||
|
||
[ -z "$ipaddr" ] && { | ||
local wanif | ||
if ! network_find_wan wanif || ! network_get_ipaddr ipaddr "$wanif"; then | ||
proto_notify_error "$cfg" "NO_WAN_LINK" | ||
return | ||
fi | ||
} | ||
|
||
# Determine the relay prefix. | ||
local ip4prefixlen="${ip4prefixlen:-0}" | ||
local ip4prefix=$(ipcalc.sh "$ipaddr/$ip4prefixlen" | grep NETWORK) | ||
ip4prefix="${ip4prefix#NETWORK=}" | ||
|
||
# Determine our IPv6 address. | ||
local ip6subnet=$(6rdcalc "$ip6prefix/$ip6prefixlen" "$ipaddr/$ip4prefixlen") | ||
local ip6addr="${ip6subnet%%::*}::1" | ||
|
||
proto_init_update "$link" 1 | ||
proto_add_ipv6_address "$ip6addr" "$ip6prefixlen" | ||
proto_add_ipv6_route "::" 0 "::$peeraddr" | ||
|
||
proto_add_tunnel | ||
json_add_string mode sit | ||
json_add_int mtu "${mtu:-1280}" | ||
json_add_int ttl "${ttl:-64}" | ||
json_add_string local "$ipaddr" | ||
json_add_string 6rd-prefix "$ip6prefix/$ip6prefixlen" | ||
json_add_string 6rd-relay-prefix "$ip4prefix/$ip4prefixlen" | ||
proto_close_tunnel | ||
|
||
proto_send_update "$cfg" | ||
} | ||
|
||
proto_6rd_teardown() { | ||
local cfg="$1" | ||
} | ||
|
||
proto_6rd_init_config() { | ||
no_device=1 | ||
available=1 | ||
|
||
proto_config_add_int "mtu" | ||
proto_config_add_int "ttl" | ||
proto_config_add_string "peeraddr" | ||
proto_config_add_string "ip6prefix" | ||
proto_config_add_string "ip6prefixlen" | ||
proto_config_add_string "ip4prefixlen" | ||
} | ||
|
||
[ -n "$INCLUDE_ONLY" ] || { | ||
add_protocol 6rd | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,126 @@ | ||
/* | ||
* Utility used to calculate the 6rd subnet. | ||
* | ||
* Copyright 2012, Stéphan Kochen <stephan@kochen.nl> | ||
* | ||
* This program is free software; you can redistribute it and/or | ||
* modify it under the terms of the GNU General Public License | ||
* as published by the Free Software Foundation; either version 2 | ||
* of the License, or (at your option) any later version. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with this program; if not, write to the Free Software | ||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
*/ | ||
|
||
#include <stdio.h> | ||
#include <stdlib.h> | ||
#include <string.h> | ||
#include <sys/errno.h> | ||
#include <arpa/inet.h> | ||
#include <netinet/in.h> | ||
|
||
#define INET_PREFIXSTRLEN (INET_ADDRSTRLEN+3) | ||
#define INET6_PREFIXSTRLEN (INET6_ADDRSTRLEN+4) | ||
|
||
static void print_usage() | ||
{ | ||
fprintf(stderr, "Usage: 6rdcalc <v6 prefix>/<mask> <v4 address>/<mask>\n"); | ||
exit(1); | ||
} | ||
|
||
static void print_error() | ||
{ | ||
fprintf(stderr, "%s", strerror(errno)); | ||
exit(1); | ||
} | ||
|
||
static void parse_str(int af, char *str, void *addr, unsigned long *mask) | ||
{ | ||
int ret; | ||
char *slash; | ||
|
||
/* Split the address at the slash. */ | ||
if ((slash = strchr(str, '/')) == NULL) | ||
print_usage(); | ||
*slash = '\0'; | ||
|
||
/* Parse the address. */ | ||
if ((ret = inet_pton(af, str, addr)) != 1) { | ||
if (ret == 0) | ||
print_usage(); | ||
else | ||
print_error(); | ||
} | ||
|
||
/* Parse the mask. */ | ||
*mask = strtoul(slash+1, NULL, 10); | ||
if ((af == AF_INET && *mask > 32) || | ||
(af == AF_INET6 && *mask > 128)) | ||
print_usage(); | ||
} | ||
|
||
int main(int argc, const char **argv) | ||
{ | ||
char v6str[INET6_PREFIXSTRLEN], v4str[INET_PREFIXSTRLEN]; | ||
struct in6_addr v6; | ||
struct in_addr v4; | ||
unsigned long v6it, v4it, mask; | ||
unsigned char *byte4, *byte6; | ||
unsigned char bit4, bit6; | ||
|
||
/* Check parameters. */ | ||
if (argc != 3) | ||
print_usage(); | ||
|
||
/* Parse the v6 address. */ | ||
strncpy(v6str, argv[1], INET6_PREFIXSTRLEN); | ||
v6str[INET6_PREFIXSTRLEN-1] = '\0'; | ||
parse_str(AF_INET6, v6str, &v6, &v6it); | ||
|
||
/* Parse the v4 address */ | ||
strncpy(v4str, argv[2], INET_PREFIXSTRLEN); | ||
v6str[INET_PREFIXSTRLEN-1] = '\0'; | ||
parse_str(AF_INET, v4str, &v4, &v4it); | ||
|
||
/* Check if the combined mask is within bounds. */ | ||
mask = (32 - v4it) + v6it; | ||
if (mask > 128) | ||
print_usage(); | ||
|
||
/* Combine the addresses. */ | ||
while (v4it < 32) { | ||
byte6 = (unsigned char *)(&v6.s6_addr) + (v6it >> 3); | ||
byte4 = (unsigned char *)(&v4.s_addr) + (v4it >> 3); | ||
bit6 = 128 >> (v6it & 0x07); | ||
bit4 = 128 >> (v4it & 0x07); | ||
|
||
if (*byte4 & bit4) | ||
*byte6 |= bit6; | ||
else | ||
*byte6 &= ~bit6; | ||
|
||
v4it++; v6it++; | ||
} | ||
|
||
/* Clear remaining bits. */ | ||
while (v6it < 128) { | ||
byte6 = (unsigned char *)(&v6.s6_addr) + (v6it >> 2); | ||
bit6 = 128 >> (v6it & 0x07); | ||
|
||
*byte6 &= ~bit6; | ||
|
||
v6it++; | ||
} | ||
|
||
/* Print the subnet prefix. */ | ||
if (inet_ntop(AF_INET6, &v6, v6str, sizeof(v6str)) == NULL) | ||
print_error(); | ||
printf("%s/%lu\n", v6str, mask); | ||
return 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
all: 6rdcalc | ||
|
||
6rdcalc: 6rdcalc.c | ||
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< | ||
|
||
clean: | ||
rm -f 6rdcalc |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.