26 Commits

Author SHA1 Message Date
Noah Richards
2e266e9126 On iOS, detect pdp_ip networks as cellular.
BUG=
R=juberti@webrtc.org, tkchin@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/44009004

Cr-Commit-Position: refs/heads/master@{#8943}
2015-04-07 18:52:02 +00:00
guoweis@webrtc.org
b91d0f5130 1. Have IPIsPrivate calling IPIsLinkLocal
2. Also check the Mac based IPv6
3. move the ip filtering into createnetwork. It shouldn't be done in IsIgnoredNetwork as the IP inside that could change later.

BUG=
R=juberti@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/48509004

Cr-Commit-Position: refs/heads/master@{#8758}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8758 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-17 14:43:42 +00:00
kwiberg@webrtc.org
67186fe00c Fix clang style warnings in webrtc/base
Mostly this consists of marking functions with override when
applicable, and moving function bodies from .h to .cc files.

Not inlining virtual functions with simple bodies such as

  { return false; }

strikes me as probably losing more in readability than we gain in
binary size and compilation time, but I guess it's just like any other
case where enabling a generally good warning forces us to write
slightly worse code in a couple of places.

BUG=163
R=kjellander@webrtc.org, tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/47429004

Cr-Commit-Position: refs/heads/master@{#8656}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8656 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-09 22:24:25 +00:00
guoweis@webrtc.org
bbce5efaa6 Turn on IPv6 for WebRTC as default as required before ramping the experiment to 30%.
BUG=
R=juberti@webrtc.org

Committed: https://code.google.com/p/webrtc/source/detail?r=8582

Committed: https://code.google.com/p/webrtc/source/detail?r=8607

Review URL: https://webrtc-codereview.appspot.com/43529004

Cr-Commit-Position: refs/heads/master@{#8609}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8609 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-05 04:39:07 +00:00
guoweis@webrtc.org
d43b2c098d Revert "Turn on IPv6 for WebRTC as default as required before ramping the experiment to 30%."
This reverts commit 86c33e3a94f51f8e4b4f305708ec327786ad3794.

TBR=guoweis@webrtc.org

BUG=

Review URL: https://webrtc-codereview.appspot.com/47409004

Cr-Commit-Position: refs/heads/master@{#8608}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8608 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-05 04:03:44 +00:00
guoweis@webrtc.org
86c33e3a94 Turn on IPv6 for WebRTC as default as required before ramping the experiment to 30%.
BUG=
R=juberti@webrtc.org

Committed: https://code.google.com/p/webrtc/source/detail?r=8582

Review URL: https://webrtc-codereview.appspot.com/43529004

Cr-Commit-Position: refs/heads/master@{#8607}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8607 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-05 03:40:48 +00:00
aluebs@webrtc.org
07dcf60ee0 Revert 8532 "Ensure only temporary IPv6 address is selected as t..."
> Ensure only temporary IPv6 address is selected as the best IP.
> 
> The current logic of IPv6 selection could still have a small chance for non-temporary address to be selected for candidate. The scenario is that when there is no non-deprecated temporary IP, the global ones could be selected.
> 
> Global ones don't necessarily carry MAC. However, instead of comparing whether it has the MAC in it (sometimes 5 out of 6 elements from a MAC are the same, only one diffs), we should just err on the safe side.
> 
> BUG=4348
> R=juberti@webrtc.org, pthatcher@webrtc.org
> 
> Review URL: https://webrtc-codereview.appspot.com/38289004

TBR=guoweis@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/38319004

Cr-Commit-Position: refs/heads/master@{#8534}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8534 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-27 18:42:46 +00:00
guoweis@webrtc.org
385a7ceb1f Ensure only temporary IPv6 address is selected as the best IP.
The current logic of IPv6 selection could still have a small chance for non-temporary address to be selected for candidate. The scenario is that when there is no non-deprecated temporary IP, the global ones could be selected.

Global ones don't necessarily carry MAC. However, instead of comparing whether it has the MAC in it (sometimes 5 out of 6 elements from a MAC are the same, only one diffs), we should just err on the safe side.

BUG=4348
R=juberti@webrtc.org, pthatcher@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/38289004

Cr-Commit-Position: refs/heads/master@{#8532}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8532 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-27 18:10:43 +00:00
guoweis@webrtc.org
f358aea7bf Fix WebRTC IP leaks.
WebRTC binds to individual NICs and listens for incoming Stun packets. Sending stun through this specific NIC binding could make OS route the packet differently hence exposing non-VPN public IP.

The fix here is
1. to bind to any address (0:0:0:0) instead. This way, the routing will be the same as how chrome/http is.
2. also, remove the any all 0s addresses which happens when we bind to all 0s.

BUG=4276
R=juberti@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/39129004

Cr-Commit-Position: refs/heads/master@{#8418}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8418 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-18 18:44:14 +00:00
phoglund@webrtc.org
006521d5bd Makes libjingle_peerconnection_android_unittest run on networkless devices.
PeerConnectionTest.java currently works, but only on a device with
network interfaces up. This is not a problem for desktop, but it is a
problem when running on Android devices since the devices in the lab
generally don't have network (due to the chaotic radio environment in
the device labs, devices are simply kept in flight mode).

The test does work if one modifies this line in the file
webrtc/base/network.cc:

bool ignored = ((cursor->ifa_flags & IFF_LOOPBACK) ||
                IsIgnoredNetwork(*network));

If we remove the IFF_LOOPBACK clause, the test starts working on
an Android device in flight mode. This is nice - we're running the
call and packets interact with the OS network stack, which is good
for this end-to-end test. We can't just remove the clause though since
having loopback is undesirable for everyone except the test (right)?
so we need to make this behavior configurable.

This CL takes a stab at a complete solution where we pass a boolean
all the way through the Java PeerConnectionFactory down to the
BasicNetworkManager. This comes as a heavy price in interface
changes though. It's pretty out of proportion, but fundamentally we
need some way of telling the network manager that it is on Android
and in test mode. Passing the boolean all the way through is one way.

Another way might be to put the loopback filter behind an ifdef and
link a custom libjingle_peerconnection.so with the test. That is hacky
but doesn't pollute the interfaces. Not sure how to solve that in GYP
but it could mean some duplication between the production and
test .so files.

It would have been perfect to use flags here, but then we need to
hook up gflags parsing to some main() somewhere to make sure the
flag gets parsed, and make sure to pass that flag in our tests.
I'm not sure how that can be done.

Making the loopback filtering conditional is exactly how we solved the
equivalent problem in content_browsertests in Chrome, and it worked
great.

That's all I could think of.

BUG=4181
R=perkj@webrtc.org, pthatcher@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/36769004

Cr-Commit-Position: refs/heads/master@{#8344}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8344 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-12 09:24:25 +00:00
guoweis@webrtc.org
2444d9605a Control the max IPv6 Networks used by WebRTC.
BUG=
R=juberti@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/38589004

Cr-Commit-Position: refs/heads/master@{#8209}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8209 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-01-30 00:09:42 +00:00
guoweis@webrtc.org
a094cac11f Add stats for network merge.
Currently, in ipc_network_manager.cc, the UMA WebRTC.PeerConnection.IPv4Interfaces and its IPv6
counter part counts the addresses, instead of the interfaces as when
chromium delivers available networks to WebRTC, each address is wrapped
inside an individual network object.

The plan is to replace the current MergeNetworkList with the new one once it's rolled into chromium.

BUG=
R=pthatcher@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/36779004

Cr-Commit-Position: refs/heads/master@{#8188}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8188 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-01-28 19:34:17 +00:00
pthatcher@webrtc.org
dfef02824c Ignore virtual box interfaces.
BUG=3918
R=juberti@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/33779004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@8012 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-01-07 17:20:52 +00:00
guoweis@webrtc.org
55360ae402 Revert "Add adapter_type into Candidate object."
This reverts commit aaf02cc2d4f696345ce0e6d5715f2cfa22aea689.

BUG=
TBR=juberti@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/35539004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7908 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-12-16 05:28:10 +00:00
guoweis@webrtc.org
aaf02cc2d4 Add adapter_type into Candidate object.
Expose adapter_type from Candidate such that we could add jmidata on top of this.

Created a new type of report just for Ice candidate. The candidate's id is used as part of report identifier. This code change only reports the best connection's local candidate's adapter type. There should be cleaning later to move other candidate's attributes to the new report.

This is migrated from issue 32599004

BUG=
R=juberti@webrtc.org

Committed: https://code.google.com/p/webrtc/source/detail?r=7885

Review URL: https://webrtc-codereview.appspot.com/36379004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7906 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-12-15 23:03:10 +00:00
pbos@webrtc.org
fb108b5a28 Revert r7885.
Breaks compile step of other code where network name of
cricket::Candidate is used.

TBR=guoweis@webrtc.org,juberti@webrtc.org
BUG=

Review URL: https://webrtc-codereview.appspot.com/31229004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7892 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-12-15 08:04:50 +00:00
guoweis@webrtc.org
8c9d79a29d Add adapter_type into Candidate object.
Expose adapter_type from Candidate such that we could add jmidata on top of this.

Created a new type of report just for Ice candidate. The candidate's id is used as part of report identifier. This code change only reports the best connection's local candidate's adapter type. There should be cleaning later to move other candidate's attributes to the new report.

This is migrated from issue 32599004

BUG=
R=juberti@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/36379004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7885 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-12-12 19:21:14 +00:00
pthatcher@webrtc.org
5950b645b9 Use c++11 features in webrtc/base/network.cc as a test to see if we can use them.
R=kwiberg@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/25209005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7777 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-12-01 23:18:27 +00:00
guoweis@webrtc.org
369a637ac8 Implemented Network::GetBestIP() selection logic as following.
1) return the first global temporary and non-deprecrated ones.
2) if #1 not available, return global one.
3) if #2 not available, use ULA ipv6 as last resort.

ULA stands for unique local address. They are only useful in a private
WebRTC deployment. More detail: http://en.wikipedia.org/wiki/Unique_local_address

BUG=3808

At this point, rule #3 actually won't happen at current
implementation. The reason being that ULA address starting with 0xfc 0r 0xfd will be grouped into its own Network. The result of that is WebRTC will have one extra Network to generate candidates but the lack of rule #3 shouldn't prevent turning on IPv6 since ULA should only be tried in a close deployment anyway.

R=jiayl@webrtc.org

Committed: https://code.google.com/p/webrtc/source/detail?r=7200

Committed: https://code.google.com/p/webrtc/source/detail?r=7201

Review URL: https://webrtc-codereview.appspot.com/31369004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7216 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-17 22:37:29 +00:00
guoweis@webrtc.org
40c2aa36f2 Implemented Network::GetBestIP() selection logic as following.
1) return the first global temporary and non-deprecrated ones.
2) if #1 not available, return global one.
3) if #2 not available, use ULA ipv6 as last resort.

ULA stands for unique local address. They are only useful in a private
WebRTC deployment. More detail: http://en.wikipedia.org/wiki/Unique_local_address

BUG=3808

At this point, rule #3 actually won't happen at current
implementation. The reason being that ULA address starting with 0xfc 0r 0xfd will be grouped into its own Network. The result of that is WebRTC will have one extra Network to generate candidates but the lack of rule #3 shouldn't prevent turning on IPv6 since ULA should only be tried in a close deployment anyway.

R=jiayl@webrtc.org

Committed: https://code.google.com/p/webrtc/source/detail?r=7200

Review URL: https://webrtc-codereview.appspot.com/31369004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7201 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-16 20:29:41 +00:00
guoweis@webrtc.org
f8bff762d1 Implemented Network::GetBestIP() selection logic as following.
1) return the first global temporary and non-deprecrated ones.
2) if #1 not available, return global one.
3) if #2 not available, use ULA ipv6 as last resort.

ULA stands for unique local address. They are only useful in a private
WebRTC deployment. More detail: http://en.wikipedia.org/wiki/Unique_local_address

BUG=3808

At this point, rule #3 actually won't happen at current
implementation. The reason being that ULA address starting with 0xfc 0r 0xfd will be grouped into its own Network. The result of that is WebRTC will have one extra Network to generate candidates but the lack of rule #3 shouldn't prevent turning on IPv6 since ULA should only be tried in a close deployment anyway.

R=jiayl@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/31369004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7200 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-16 20:17:22 +00:00
guoweis@webrtc.org
fa603981f2 Add a new class InterfaceAddress inherited from IPAddress to keep track of IPv6 Address flags.
Skeleton put in place in Network::GetFilterIPs() which will be used to
filter addresses

BUG=3773
R=jiayl@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/23439004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7126 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-09 23:42:40 +00:00
guoweis@webrtc.org
4bbd3c83a8 fix a bug in the logic when new Networks are merged. This happens when
we have 2 networks with the same key

BUG=410554 in chromium

http://code.google.com/p/chromium/issues/detail?id=410554

Corresponding change in chromium is
https://codereview.chromium.org/536133003/

R=jiayl@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/19249005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7117 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-09 13:54:45 +00:00
henrike@webrtc.org
f048872e91 Adds a modified copy of talk/base to webrtc/base. It is the first step in
migrating talk/base to webrtc/base.

BUG=N/A
R=niklas.enbom@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/17479005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6129 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-05-13 18:00:26 +00:00
perkj@webrtc.org
e9a604accd Revert 6107 "Adds a modified copy of talk/base to webrtc/base. I..."
This breaks Chromium FYI builds and prevent roll of webrtc/libjingle to Chrome.

http://chromegw.corp.google.com/i/chromium.webrtc.fyi/builders/Win%20Builder/builds/457


> Adds a modified copy of talk/base to webrtc/base. It is the first step in migrating talk/base to webrtc/base.
> 
> BUG=N/A
> R=andrew@webrtc.org, wu@webrtc.org
> 
> Review URL: https://webrtc-codereview.appspot.com/12199004

TBR=henrike@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/14479004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6116 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-05-13 08:15:48 +00:00
henrike@webrtc.org
2c7d1b39b9 Adds a modified copy of talk/base to webrtc/base. It is the first step in migrating talk/base to webrtc/base.
BUG=N/A
R=andrew@webrtc.org, wu@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/12199004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6107 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-05-12 18:03:09 +00:00