/branches/gl-inet/package/network/services/relayd/Makefile |
@@ -0,0 +1,42 @@ |
# |
# Copyright (C) 2010-2011 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:=relayd |
PKG_RELEASE:=2 |
|
PKG_SOURCE_URL=$(PROJECT_GIT)/project/relayd.git |
PKG_SOURCE_PROTO:=git |
PKG_SOURCE_DATE:=2016-02-07 |
PKG_SOURCE_VERSION:=ad0b25ad74345d367c62311e14b279f5ccb8ef13 |
PKG_MIRROR_HASH:=8818e9da8cc056961f21f1569e06e63b840965d1453dfcef70a8d84ea76f84d7 |
|
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name> |
PKG_LICENSE:=GPL-2.0 |
|
include $(INCLUDE_DIR)/package.mk |
include $(INCLUDE_DIR)/cmake.mk |
|
define Package/relayd |
SECTION:=net |
CATEGORY:=Network |
SUBMENU:=Routing and Redirection |
TITLE:=Transparent routing / relay daemon |
DEPENDS:=+libubox |
endef |
|
TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include |
|
define Package/relayd/install |
$(INSTALL_DIR) $(1)/usr/sbin |
$(INSTALL_BIN) $(PKG_BUILD_DIR)/relayd $(1)/usr/sbin/relayd |
$(INSTALL_DIR) $(1)/etc/init.d |
$(INSTALL_BIN) ./files/relay.init $(1)/etc/init.d/relayd |
endef |
|
$(eval $(call BuildPackage,relayd)) |
/branches/gl-inet/package/network/services/relayd/files/relay.init |
@@ -0,0 +1,109 @@ |
#!/bin/sh /etc/rc.common |
# Copyright (c) 2011-2012 OpenWrt.org |
|
START=80 |
|
USE_PROCD=1 |
PROG=/usr/sbin/relayd |
|
validate_proto_relayd() |
{ |
uci_validate_section network "interface" "${1}" \ |
'network:list(string)' \ |
'expiry:uinteger:30' \ |
'retry:uinteger:5' \ |
'table:range(0, 65535):16800' \ |
'forward_bcast:bool:1' \ |
'forward_dhcp:bool:1' |
} |
|
resolve_ifname() { |
grep -qs "^ *$1:" /proc/net/dev && { |
append resolved_ifnames "$1" |
} |
} |
|
resolve_network() { |
local ifn |
fixup_interface "$1" |
config_get ifn "$1" ifname |
[ -z "$ifn" ] && return 1 |
resolve_ifname "$ifn" |
} |
|
start_relay() { |
local cfg="$1" |
local proto disabled |
|
config_get proto "$cfg" proto |
[ "$proto" = "relay" ] || return 0 |
|
config_get_bool disabled "$cfg" disabled 0 |
[ "$disabled" -gt 0 ] && return 0 |
|
local resolved_ifnames |
local net networks |
config_get networks "$cfg" network |
for net in $networks; do |
resolve_network "$net" || { |
return 1 |
} |
done |
|
local ifn ifnames |
config_get ifnames "$cfg" ifname |
for ifn in $ifnames; do |
resolve_ifname "$ifn" || { |
return 1 |
} |
done |
|
procd_open_instance |
procd_set_param command "$PROG" |
|
for ifn in $resolved_ifnames; do |
procd_append_param command -I "$ifn" |
procd_append_param netdev "$ifn" |
done |
local ipaddr |
config_get ipaddr "$cfg" ipaddr |
[ -n "$ipaddr" ] && procd_append_param command -L "$ipaddr" |
|
local gateway |
config_get gateway "$cfg" gateway |
[ -n "$gateway" ] && procd_append_param command -G "$gateway" |
|
local expiry # = 30 |
config_get expiry "$cfg" expiry |
[ -n "$expiry" ] && procd_append_param command -t "$expiry" |
|
local retry # = 5 |
config_get retry "$cfg" retry |
[ -n "$retry" ] && procd_append_param command -p "$retry" |
|
local table # = 16800 |
config_get table "$cfg" table |
[ -n "$table" ] && procd_append_param command -T "$table" |
|
local fwd_bcast # = 1 |
config_get_bool fwd_bcast "$cfg" forward_bcast 1 |
[ $fwd_bcast -eq 1 ] && procd_append_param command "-B" |
|
local fwd_dhcp # = 1 |
config_get_bool fwd_dhcp "$cfg" forward_dhcp 1 |
[ $fwd_dhcp -eq 1 ] && procd_append_param command "-D" |
|
procd_close_instance |
} |
|
service_triggers() |
{ |
procd_add_reload_trigger "network" |
procd_add_raw_trigger "interface.*" 2000 /etc/init.d/relayd reload |
} |
|
start_service() { |
include /lib/network |
config_load network |
config_foreach start_relay interface |
} |