shill: Assign unique metrics to non-default interfaces

Assign a metric based on the interface index to routes
for interfaces that are not default.  As a result even
if the gateway address is the same (e.g, if you're connected
to a home AP via both wireless and wired) that the routes
do not conflict with each other.

BUG=chromium-os:23917
TEST=Manual: As above, connect to a home AP over Ethernet
and WiFi, and ensure that both gateway routes appear.

Change-Id: I85ffad74ec53dda535578367242114b30846b7ac
Reviewed-on: https://gerrit.chromium.org/gerrit/12651
Commit-Ready: Paul Stewart <pstew@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
3 files changed
tree: 6473d3e142edda37f13d5b8b97814bab167676ad
  1. dbus_bindings/
  2. accessor_interface.h
  3. adaptor_interfaces.h
  4. async_connection.cc
  5. async_connection.h
  6. async_connection_unittest.cc
  7. byte_string.cc
  8. byte_string.h
  9. byte_string_unittest.cc
  10. cellular.cc
  11. cellular.h
  12. cellular_capability.cc
  13. cellular_capability.h
  14. cellular_capability_cdma.cc
  15. cellular_capability_cdma.h
  16. cellular_capability_cdma_unittest.cc
  17. cellular_capability_gsm.cc
  18. cellular_capability_gsm.h
  19. cellular_capability_gsm_unittest.cc
  20. cellular_service.cc
  21. cellular_service.h
  22. cellular_service_unittest.cc
  23. cellular_unittest.cc
  24. connection.cc
  25. connection.h
  26. connection_unittest.cc
  27. control_interface.h
  28. crypto_des_cbc.cc
  29. crypto_des_cbc.h
  30. crypto_des_cbc_unittest.cc
  31. crypto_interface.h
  32. crypto_provider.cc
  33. crypto_provider.h
  34. crypto_provider_unittest.cc
  35. crypto_rot47.cc
  36. crypto_rot47.h
  37. crypto_rot47_unittest.cc
  38. dbus_adaptor.cc
  39. dbus_adaptor.h
  40. dbus_adaptor_unittest.cc
  41. dbus_control.cc
  42. dbus_control.h
  43. dbus_properties.cc
  44. dbus_properties.h
  45. dbus_properties_proxy.cc
  46. dbus_properties_proxy.h
  47. dbus_properties_proxy_interface.h
  48. dbus_properties_unittest.cc
  49. default_profile.cc
  50. default_profile.h
  51. default_profile_unittest.cc
  52. device.cc
  53. device.h
  54. device_dbus_adaptor.cc
  55. device_dbus_adaptor.h
  56. device_info.cc
  57. device_info.h
  58. device_info_unittest.cc
  59. device_stub.h
  60. device_unittest.cc
  61. dhcp_config.cc
  62. dhcp_config.h
  63. dhcp_config_unittest.cc
  64. dhcp_provider.cc
  65. dhcp_provider.h
  66. dhcp_provider_unittest.cc
  67. dhcp_proxy_interface.h
  68. dhcpcd_proxy.cc
  69. dhcpcd_proxy.h
  70. dns_client.cc
  71. dns_client.h
  72. dns_client_unittest.cc
  73. endpoint.cc
  74. endpoint.h
  75. ephemeral_profile.cc
  76. ephemeral_profile.h
  77. error.cc
  78. error.h
  79. error_unittest.cc
  80. ethernet.cc
  81. ethernet.h
  82. ethernet_service.cc
  83. ethernet_service.h
  84. event_dispatcher.cc
  85. event_dispatcher.h
  86. glib.cc
  87. glib.h
  88. glib_io_input_handler.cc
  89. glib_io_input_handler.h
  90. glib_io_ready_handler.cc
  91. glib_io_ready_handler.h
  92. HACKING
  93. http_proxy.cc
  94. http_proxy.h
  95. http_proxy_unittest.cc
  96. ieee80211.h
  97. io_handler.h
  98. ip_address.cc
  99. ip_address.h
  100. ip_address_unittest.cc
  101. ipconfig.cc
  102. ipconfig.h
  103. ipconfig_dbus_adaptor.cc
  104. ipconfig_dbus_adaptor.h
  105. ipconfig_unittest.cc
  106. key_file_store.cc
  107. key_file_store.h
  108. key_file_store_unittest.cc
  109. key_value_store.cc
  110. key_value_store.h
  111. LICENSE
  112. Makefile
  113. manager.cc
  114. manager.h
  115. manager_dbus_adaptor.cc
  116. manager_dbus_adaptor.h
  117. manager_unittest.cc
  118. mock_adaptors.cc
  119. mock_adaptors.h
  120. mock_ares.cc
  121. mock_ares.h
  122. mock_async_connection.cc
  123. mock_async_connection.h
  124. mock_control.cc
  125. mock_control.h
  126. mock_dbus_properties_proxy.cc
  127. mock_dbus_properties_proxy.h
  128. mock_device.cc
  129. mock_device.h
  130. mock_device_info.cc
  131. mock_device_info.h
  132. mock_dhcp_config.cc
  133. mock_dhcp_config.h
  134. mock_dhcp_provider.cc
  135. mock_dhcp_provider.h
  136. mock_dhcp_proxy.cc
  137. mock_dhcp_proxy.h
  138. mock_dns_client.cc
  139. mock_dns_client.h
  140. mock_event_dispatcher.cc
  141. mock_event_dispatcher.h
  142. mock_glib.cc
  143. mock_glib.h
  144. mock_ipconfig.cc
  145. mock_ipconfig.h
  146. mock_manager.cc
  147. mock_manager.h
  148. mock_modem_cdma_proxy.cc
  149. mock_modem_cdma_proxy.h
  150. mock_modem_gsm_card_proxy.cc
  151. mock_modem_gsm_card_proxy.h
  152. mock_modem_gsm_network_proxy.cc
  153. mock_modem_gsm_network_proxy.h
  154. mock_modem_manager_proxy.cc
  155. mock_modem_manager_proxy.h
  156. mock_modem_proxy.cc
  157. mock_modem_proxy.h
  158. mock_modem_simple_proxy.cc
  159. mock_modem_simple_proxy.h
  160. mock_power_manager_proxy.cc
  161. mock_power_manager_proxy.h
  162. mock_profile.cc
  163. mock_profile.h
  164. mock_property_store.cc
  165. mock_property_store.h
  166. mock_resolver.cc
  167. mock_resolver.h
  168. mock_routing_table.cc
  169. mock_routing_table.h
  170. mock_rtnl_handler.cc
  171. mock_rtnl_handler.h
  172. mock_service.cc
  173. mock_service.h
  174. mock_sockets.cc
  175. mock_sockets.h
  176. mock_store.cc
  177. mock_store.h
  178. mock_supplicant_interface_proxy.cc
  179. mock_supplicant_interface_proxy.h
  180. mock_supplicant_process_proxy.cc
  181. mock_supplicant_process_proxy.h
  182. mock_time.cc
  183. mock_time.h
  184. mock_wifi.cc
  185. mock_wifi.h
  186. mock_wifi_service.cc
  187. mock_wifi_service.h
  188. modem.cc
  189. modem.h
  190. modem_cdma_proxy.cc
  191. modem_cdma_proxy.h
  192. modem_cdma_proxy_interface.h
  193. modem_gsm_card_proxy.cc
  194. modem_gsm_card_proxy.h
  195. modem_gsm_card_proxy_interface.h
  196. modem_gsm_network_proxy.cc
  197. modem_gsm_network_proxy.h
  198. modem_gsm_network_proxy_interface.h
  199. modem_info.cc
  200. modem_info.h
  201. modem_info_unittest.cc
  202. modem_manager.cc
  203. modem_manager.h
  204. modem_manager_proxy.cc
  205. modem_manager_proxy.h
  206. modem_manager_proxy_interface.h
  207. modem_manager_unittest.cc
  208. modem_proxy.cc
  209. modem_proxy.h
  210. modem_proxy_interface.h
  211. modem_simple_proxy.cc
  212. modem_simple_proxy.h
  213. modem_simple_proxy_interface.h
  214. modem_unittest.cc
  215. nice_mock_control.cc
  216. nice_mock_control.h
  217. power_manager_proxy.cc
  218. power_manager_proxy.h
  219. power_manager_proxy_interface.h
  220. profile.cc
  221. profile.h
  222. profile_dbus_adaptor.cc
  223. profile_dbus_adaptor.h
  224. profile_unittest.cc
  225. property_accessor.h
  226. property_accessor_unittest.cc
  227. property_iterator.h
  228. property_store.cc
  229. property_store.h
  230. property_store_unittest.cc
  231. property_store_unittest.h
  232. provider_db_unittest.bfd
  233. proxy_factory.cc
  234. proxy_factory.h
  235. refptr_types.h
  236. resolver.cc
  237. resolver.h
  238. resolver_unittest.cc
  239. routing_table.cc
  240. routing_table.h
  241. routing_table_entry.h
  242. routing_table_unittest.cc
  243. rtnl_handler.cc
  244. rtnl_handler.h
  245. rtnl_handler_unittest.cc
  246. rtnl_listener.cc
  247. rtnl_listener.h
  248. rtnl_listener_unittest.cc
  249. rtnl_message.cc
  250. rtnl_message.h
  251. rtnl_message_unittest.cc
  252. service.cc
  253. service.h
  254. service_dbus_adaptor.cc
  255. service_dbus_adaptor.h
  256. service_sorter.h
  257. service_under_test.cc
  258. service_under_test.h
  259. service_unittest.cc
  260. shill.conf
  261. shill_ares.cc
  262. shill_ares.h
  263. shill_config.cc
  264. shill_config.h
  265. shill_daemon.cc
  266. shill_daemon.h
  267. shill_main.cc
  268. shill_test_config.cc
  269. shill_test_config.h
  270. shill_time.cc
  271. shill_time.h
  272. shill_unittest.cc
  273. sockets.cc
  274. sockets.h
  275. store_interface.h
  276. supplicant_interface_proxy.cc
  277. supplicant_interface_proxy.h
  278. supplicant_interface_proxy_interface.h
  279. supplicant_process_proxy.cc
  280. supplicant_process_proxy.h
  281. supplicant_process_proxy_interface.h
  282. technology.cc
  283. technology.h
  284. TESTING
  285. testrunner.cc
  286. wifi.cc
  287. wifi.h
  288. wifi_endpoint.cc
  289. wifi_endpoint.h
  290. wifi_endpoint_unittest.cc
  291. wifi_service.cc
  292. wifi_service.h
  293. wifi_service_unittest.cc
  294. wifi_unittest.cc
  295. wpa_supplicant.cc
  296. wpa_supplicant.h