-$(eval $(call library,luanet,LuCI luanet library,+libiw))
-$(eval $(call library,lucid,LuCId Full-Stack Webserver,+luci-nixio +luci-web +luci-px5g))
-$(eval $(call library,nixio,NIXIO POSIX library,+PACKAGE_luci-nixio_openssl:libopenssl +PACKAGE_luci-nixio_cyassl:libcyassl))
-$(eval $(call library,px5g,RSA/X.509 Key Generator (required for LuCId SSL support),+luci-nixio))
-$(eval $(call library,sys,LuCI Linux/POSIX system library,+libiwinfo))
-$(eval $(call library,web,MVC Webframework,+luci-sys +luci-nixio +luci-core +luci-sgi-cgi +luci-lmo))
-$(eval $(call library,uvl,UVL - UCI Validation Layer,+luci-sys +luci-core))
+$(eval $(call library,lucid,LuCId Full-Stack Webserver,+luci-lib-nixio +luci-lib-web +luci-lib-px5g))
+$(eval $(call library,lucid-http,LuCId HTTP Backend,+luci-lib-lucid))
+$(eval $(call library,lucid-rpc,LuCId RPC Backend,+luci-lib-lucid))
+$(eval $(call library,nixio,NIXIO POSIX library,+PACKAGE_luci-lib-nixio_openssl:libopenssl +PACKAGE_luci-lib-nixio_cyassl:libcyassl))
+$(eval $(call library,px5g,RSA/X.509 Key Generator (required for LuCId SSL support),+luci-lib-nixio))
+$(eval $(call library,sys,LuCI Linux/POSIX system library))
+$(eval $(call library,web,MVC Webframework,+luci-lib-sys +luci-lib-nixio +luci-lib-core +luci-sgi-cgi +luci-lib-lmo))
+
+
+### Protocols ###
+define protocol
+ define Package/luci-proto-$(1)
+ SECTION:=luci
+ CATEGORY:=LuCI
+ TITLE:=LuCI - Lua Configuration Interface
+ URL:=http://luci.subsignal.org/
+ MAINTAINER:=LuCI Development Team <luci@lists.subsignal.org>
+ SUBMENU:=6. Protocols
+ TITLE:=$(if $(2),$(2),LuCI $(1) protocol support)
+ DEPENDS:=$(3)
+ endef
+
+ define Package/luci-proto-$(1)/install
+ $(call Package/luci/install/template,$$(1),protocols/$(1))
+ endef
+
+ ifneq ($(CONFIG_PACKAGE_luci-proto-$(1)),)
+ LUCI_SELECTED_MODULES+=protocols/$(1)
+ endif
+
+ LUCI_BUILD_PACKAGES += luci-proto-$(1)
+endef
+
+$(eval $(call protocol,core,Support for static/dhcp/none))
+$(eval $(call protocol,ppp,Support for PPP/PPPoE/PPPoA))
+$(eval $(call protocol,pptp,Support for PPtP,+pptp))
+$(eval $(call protocol,6x4,Support for 6in4/6to4,+6in4 +6to4))
+$(eval $(call protocol,3g,Support for 3G,+comgt))
+$(eval $(call protocol,relay,Support for relayd pseudo bridges,+relayd))