Add build options for tethering.

Dun-required bool and list of allowed upstream ifaces.
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index 19f4b8a..71f80d9 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -66,6 +66,7 @@
 
 
     private Tethering mTethering;
+    private boolean mTetheringConfigValid = false;
 
     /**
      * Sometimes we want to refer to the individual network state
@@ -320,6 +321,12 @@
         }
 
         mTethering = new Tethering(mContext);
+        mTetheringConfigValid = (((mNetTrackers[ConnectivityManager.TYPE_MOBILE_DUN] != null) ||
+                                  !mTethering.isDunRequired()) &&
+                                 (mTethering.getTetherableUsbRegexs().length != 0 ||
+                                  mTethering.getTetherableWifiRegexs().length != 0) &&
+                                 mTethering.getUpstreamIfaceRegexs().length != 0);
+
     }
 
 
@@ -1498,8 +1505,8 @@
     public boolean isTetheringSupported() {
         enforceTetherAccessPermission();
         int defaultVal = (SystemProperties.get("ro.tether.denied").equals("true") ? 0 : 1);
-        return ((Settings.Secure.getInt(mContext.getContentResolver(),
-                Settings.Secure.TETHER_SUPPORTED, defaultVal) != 0) &&
-                (mNetTrackers[ConnectivityManager.TYPE_MOBILE_DUN] != null));
+        boolean tetherEnabledInSettings = (Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.TETHER_SUPPORTED, defaultVal) != 0);
+        return tetherEnabledInSettings && mTetheringConfigValid;
     }
 }