feature_config.c
Location: opensource-mi424wr-rev-ef/rg/pkg/build/feature_config.c
Intro and Actiontec's Backup Image
Since My first attempt at compiling the Actiontec code failed I thought about looking at feature_config.c file which showed up in the output of make. It looks like this file has the mapping for enabling and disabling different features. For example
ACTION_TEC_SMALL_IMG=y
that compilation_readme.txt says is for creating a small image/backup image, is checked in the feature_config.c using
if (!token_get("ACTION_TEC_SMALL_IMG"))
and it sets tokens for the rest of the toolchain. A few different pieces that it the small firmware varies on are:
/* ACTION_TEC */
if (!token_get("ACTION_TEC_SMALL_IMG"))
{
/* Dynamic DNS */
token_set_y("CONFIG_RG_DDNS");
/* MAC cloning */
token_set_y("CONFIG_RG_MAC_CLONING");
/* SSH */
/* Not set by default for flash size (footprint) reasons. */
if (token_get("CONFIG_RG_JPKG"))
token_set_y("CONFIG_RG_SSH");
/* SNTP Server */
token_set_y("CONFIG_RG_SNTPS");
/* DHCP Relay */
token_set_y("CONFIG_RG_DHCPR");
}
Limiting features for Verizon branded and Actiontec
While, looking through the file, I found a few interesting things There are a whole lot of stuff that are set with the flag for ACTION_TEC_VERISON:
such as
/* ACTION_TEC */
/* For Verizon, No IPIP/IPGRE need */
if (!token_get("ACTION_TEC_VERIZON") && !token_is_y("ACTION_TEC_VERIZON"))
token_set_y("CONFIG_RG_TUNNELS");
Looking just through the comments, I found out that:
Disabling Auto DST
/* ACTION_TEC */
if (!token_get("ACTION_TEC_VERIZON") && !token_is_y("ACTION_TEC_VERIZON"))
token_set_y("CONFIG_RG_AUTO_DST");
Let WPS (Wifi Protected Setup) use WEP
if (token_get("MODULE_RG_WPS"))
{
token_set_y("CONFIG_RG_WPS");
token_set_y("CONFIG_RG_WSC");
if (!token_is_y("ACTION_TEC_VERIZON") &&
!token_is_y("ACTION_TEC_NCS"))
token_set_y("CONFIG_RG_WPS_ONLY_WPA");
}
Crippling PPTP (PPTPC and L2TPC)
/* ACTION_TEC */
/*
* For Verizon & NCS, no PPTP connection in wizard is needed.
* MI424WR and MC524 has no MODULE_RG_PPTP, so disable here for PPTPC
*/
if (
(!token_get("ACTION_TEC_VERIZON") && !token_is_y("ACTION_TEC_VERIZON"))
&&
(!token_get("ACTION_TEC_NCS") && !token_is_y("ACTION_TEC_NCS"))
)
{
token_set_y("CONFIG_RG_PPTPC");
token_set_y("CONFIG_RG_L2TPC");
}
Don't use HTTP_AUTH
if (!token_get("ACTION_TEC_VERIZON") && !token_is_y("ACTION_TEC_VERIZON"))
token_set_y("CONFIG_RG_HTTP_AUTH");
Actiontec has no need for these
/*For Actiontec, no need these tools*/
/* ntfs-3g, libntfs-3g.so */
/* mkntfs */
Features that we don't want to market yet
/* This is the temporary location for new features which are yet not
* categorized into a marketing priced module - features should NOT
* live here forever!!
*/
if (token_get("CONFIG_NEW_NONE_PRICED_FEATURES"))
{
token_set_y("CONFIG_RG_PROXY_ARP");
token_set_y("CONFIG_RG_TFTP_UPGRADE");
token_set_y("CONFIG_RG_SSI_PAGES");
}
Verizon or Frontier?
/* ACTION_TEC */
if(token_get("ACTION_TEC_FRONTIER"))
token_set("ACTION_TEC_VENDOR_NAME", "FRONTIER");
else
token_set("ACTION_TEC_VENDOR_NAME", "VERIZON");
/* ACTION_TEC */
OpenSSL
I also found out this:
/* decide inside openssl what exactly we want:
* since PPP needs 4 header files from openssl */
token_set_y("CONFIG_RG_OPENSSL_COMMON");