New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 863260 link

Starred by 17 users

Issue metadata

Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: 30
NextAction: ----
OS: Chrome
Pri: 3
Type: Feature



Sign in to add a comment

IPv6 on Crostini

Project Member Reported by sigquit@google.com, Jul 13

Issue description

Tracking bug for Portier.

To enable IPv6 on Crostini, we are developing a multi-networked ND Proxy daemon (Portier).  Crostini and other services may use this to proxy between IPv6 enabled network interfaces.

 
Project Member

Comment 1 by bugdroid1@chromium.org, Jul 16

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/22eb7905b496bb6f91253ac41db237ef6fd39e1c

commit 22eb7905b496bb6f91253ac41db237ef6fd39e1c
Author: Alex Dale <sigquit@google.com>
Date: Mon Jul 16 08:18:09 2018

portier: Created unittest for LLAddress.

LLAddress is independant enough that a unittest is possible.

TEST=unittests
BUG=chromium:863260

Change-Id: I8fb5fde908453f562ce882d77f2ddee65dea2318
Reviewed-on: https://chromium-review.googlesource.com/1135935
Commit-Ready: Alex Dale <sigquit@google.com>
Tested-by: Alex Dale <sigquit@google.com>
Reviewed-by: Hugo Benichi <hugobenichi@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>

[modify] https://crrev.com/22eb7905b496bb6f91253ac41db237ef6fd39e1c/portier/portier.gyp
[add] https://crrev.com/22eb7905b496bb6f91253ac41db237ef6fd39e1c/portier/ll_address_unittest.cc

Project Member

Comment 2 by bugdroid1@chromium.org, Jul 18

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/de0da3e98cc95113a109bb5da4ff6dc2f3fbcf77

commit de0da3e98cc95113a109bb5da4ff6dc2f3fbcf77
Author: Alex Dale <sigquit@google.com>
Date: Wed Jul 18 04:53:03 2018

portier: Modification methods for ND Message.

Realized the ability to modify the proxy bit in Router Advertisements
was needed for ND proxy to work. The unittest has been extended to
test both the proxy bit modification and the source/target link-layer
address.

TEST=unittests
BUG=chromium:863260

Change-Id: Id6749db092e6b6674c4c572b6776b5401bbaca10
Reviewed-on: https://chromium-review.googlesource.com/1136890
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Alex Dale <sigquit@google.com>
Reviewed-by: Hugo Benichi <hugobenichi@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>

[modify] https://crrev.com/de0da3e98cc95113a109bb5da4ff6dc2f3fbcf77/portier/nd_msg_unittest.cc
[modify] https://crrev.com/de0da3e98cc95113a109bb5da4ff6dc2f3fbcf77/portier/nd_msg.h
[modify] https://crrev.com/de0da3e98cc95113a109bb5da4ff6dc2f3fbcf77/portier/nd_msg.cc

Project Member

Comment 3 by bugdroid1@chromium.org, Jul 18

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/194154fc594b6f3d922919e3c323318b41f80f46

commit 194154fc594b6f3d922919e3c323318b41f80f46
Author: Alex Dale <sigquit@google.com>
Date: Wed Jul 18 04:53:27 2018

portier: Status object for error handling.

This Status object is to help return meaningful debug information
from low level functions without cluttering the system logs for
errors that can be handled at run-time.

TEST=unittests
BUG=chromium:863260

Change-Id: I91bd0acfb3dfa63468f85fe4428d915985e2de5d
Reviewed-on: https://chromium-review.googlesource.com/1139047
Commit-Ready: Alex Dale <sigquit@google.com>
Tested-by: Alex Dale <sigquit@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>

[modify] https://crrev.com/194154fc594b6f3d922919e3c323318b41f80f46/portier/README.md
[modify] https://crrev.com/194154fc594b6f3d922919e3c323318b41f80f46/portier/portier.gyp
[add] https://crrev.com/194154fc594b6f3d922919e3c323318b41f80f46/portier/status.cc
[add] https://crrev.com/194154fc594b6f3d922919e3c323318b41f80f46/portier/status.h
[add] https://crrev.com/194154fc594b6f3d922919e3c323318b41f80f46/portier/status_unittest.cc

Project Member

Comment 4 by bugdroid1@chromium.org, Jul 25

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/8d2da6e390eeac8bf654502fec89a07e91c06990

commit 8d2da6e390eeac8bf654502fec89a07e91c06990
Author: Alex Dale <sigquit@google.com>
Date: Wed Jul 25 07:14:39 2018

portier: Minor refactoring with testcases.

Made several code changes in response to comments to CL:1121325 made
post-merge.  The changes only effect LLAddress and NDMessage.

Summary:
 - Changing of `unsigned char' to `uint8_t'.
 - Use of `constexpr' instead of `const` where applicable.
 - Added testcase for leading and trailing white space for link-layer
   address validation.
 - Made LLAddress string acceptance more strict.  xx:xx format only.
 - Move some trivial getters to header file.
 - Changed `arpType' to `GetArpType` in LLAddres getter.
 - Renaming of LLAddress Type enumeration.
 - Removing of leading :: for unambiguous namespace.

TEST=unittests
BUG=chromium:863260

Change-Id: Ie3ebc1a9334b65dedecd9bf235d72aabc06b1cf4
Reviewed-on: https://chromium-review.googlesource.com/1142733
Commit-Ready: Alex Dale <sigquit@google.com>
Tested-by: Alex Dale <sigquit@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>

[modify] https://crrev.com/8d2da6e390eeac8bf654502fec89a07e91c06990/portier/ll_address.h
[modify] https://crrev.com/8d2da6e390eeac8bf654502fec89a07e91c06990/portier/ll_address_unittest.cc
[modify] https://crrev.com/8d2da6e390eeac8bf654502fec89a07e91c06990/portier/nd_msg.h
[modify] https://crrev.com/8d2da6e390eeac8bf654502fec89a07e91c06990/portier/nd_msg_unittest.cc
[modify] https://crrev.com/8d2da6e390eeac8bf654502fec89a07e91c06990/portier/nd_msg.cc
[modify] https://crrev.com/8d2da6e390eeac8bf654502fec89a07e91c06990/portier/ll_address.cc

Project Member

Comment 5 by bugdroid1@chromium.org, Jul 26

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/2a5520731210f4c7f3ff3c1f88b94677ce76077f

commit 2a5520731210f4c7f3ff3c1f88b94677ce76077f
Author: Alex Dale <sigquit@google.com>
Date: Thu Jul 26 11:07:44 2018

portier: Created an IPv6 ethernet socket.

This change provides a interface for network sockets.  The
NetworkSocket can get information about the network interface and
provides some generic functionality for configuring sockets.

EtherSocket is responsible for creating a raw packet socket which can
send/receive ethernet frames containing IPv6 packets.

TEST=none
BUG=chromium:863260

Change-Id: Id353efd5eaf5566181648bd9e63a2a2624a19e18
Reviewed-on: https://chromium-review.googlesource.com/1141442
Commit-Ready: Alex Dale <sigquit@google.com>
Tested-by: Alex Dale <sigquit@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>

[add] https://crrev.com/2a5520731210f4c7f3ff3c1f88b94677ce76077f/portier/network_socket.cc
[add] https://crrev.com/2a5520731210f4c7f3ff3c1f88b94677ce76077f/portier/network_socket.h
[add] https://crrev.com/2a5520731210f4c7f3ff3c1f88b94677ce76077f/portier/ether_socket.cc
[add] https://crrev.com/2a5520731210f4c7f3ff3c1f88b94677ce76077f/portier/ether_socket.h
[modify] https://crrev.com/2a5520731210f4c7f3ff3c1f88b94677ce76077f/portier/status.cc
[modify] https://crrev.com/2a5520731210f4c7f3ff3c1f88b94677ce76077f/portier/status.h
[modify] https://crrev.com/2a5520731210f4c7f3ff3c1f88b94677ce76077f/portier/portier.gyp

Project Member

Comment 6 by bugdroid1@chromium.org, Jul 26

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/3ab445de7665f1f72c2598294849fa8bdf5c2527

commit 3ab445de7665f1f72c2598294849fa8bdf5c2527
Author: Alex Dale <sigquit@google.com>
Date: Thu Jul 26 11:07:54 2018

portier: Neighbor Discovery message checksum accessors.

This change adds the ability to get and set the checksum component of
Neighbor Discover messages.  The unit tests have been updated to
test the change.

TEST=unittest
BUG=chromium:863260

Change-Id: I3470dec60a4a157c1b34f8bec327eaca92285827
Reviewed-on: https://chromium-review.googlesource.com/1150689
Commit-Ready: Alex Dale <sigquit@google.com>
Tested-by: Alex Dale <sigquit@google.com>
Reviewed-by: Hugo Benichi <hugobenichi@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>

[modify] https://crrev.com/3ab445de7665f1f72c2598294849fa8bdf5c2527/portier/nd_msg_unittest.cc
[modify] https://crrev.com/3ab445de7665f1f72c2598294849fa8bdf5c2527/portier/nd_msg.h
[modify] https://crrev.com/3ab445de7665f1f72c2598294849fa8bdf5c2527/portier/nd_msg.cc

Project Member

Comment 7 by bugdroid1@chromium.org, Jul 31

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/8974eaeeb60e086ee4ea9659aed764c12e371648

commit 8974eaeeb60e086ee4ea9659aed764c12e371648
Author: Alex Dale <sigquit@google.com>
Date: Tue Jul 31 23:37:14 2018

portier: IPv6 checksum function.

This change adds functions for calculating checksums for IPv6 packets.
This follows the protocol for generating IPv6 checksums in RFC 8200
section 8.1.  The algorithm follows the tips for calculating the
16-bit Internet checksum published in RFC 1071.

TEST=unittests
BUG=chromium:863260

Change-Id: I6ed92e40cd8b75ab8bc809122b6f453362a767dc
Reviewed-on: https://chromium-review.googlesource.com/1141441
Commit-Ready: Alex Dale <sigquit@google.com>
Tested-by: Alex Dale <sigquit@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>

[modify] https://crrev.com/8974eaeeb60e086ee4ea9659aed764c12e371648/portier/portier.gyp
[add] https://crrev.com/8974eaeeb60e086ee4ea9659aed764c12e371648/portier/ipv6_util.h
[add] https://crrev.com/8974eaeeb60e086ee4ea9659aed764c12e371648/portier/ipv6_util_unittest.cc
[add] https://crrev.com/8974eaeeb60e086ee4ea9659aed764c12e371648/portier/ipv6_util.cc

Project Member

Comment 8 by bugdroid1@chromium.org, Jul 31

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/1a799a06edfa89c8aa409459243d29e7dbbc3751

commit 1a799a06edfa89c8aa409459243d29e7dbbc3751
Author: Alex Dale <sigquit@google.com>
Date: Tue Jul 31 23:37:25 2018

portier: Extending IPv6 ethernet socket for IO

The change extends the capabilities of the EtherSocket class to
receive and send IPv6 packets.  Several header fields in the ethernet
frame and IPv6 packet are processed to and from their respective
objects within the Portier library.

TEST=none
BUG=chromium:863260

Change-Id: Ib1bc7150e5cb1e1f5bda650cb8591e0d5bb9e37c
Reviewed-on: https://chromium-review.googlesource.com/1144535
Commit-Ready: Alex Dale <sigquit@google.com>
Tested-by: Alex Dale <sigquit@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>

[modify] https://crrev.com/1a799a06edfa89c8aa409459243d29e7dbbc3751/portier/status_unittest.cc
[modify] https://crrev.com/1a799a06edfa89c8aa409459243d29e7dbbc3751/portier/ether_socket.cc
[modify] https://crrev.com/1a799a06edfa89c8aa409459243d29e7dbbc3751/portier/network_socket.cc

Components: OS>Systems>Containers
Project Member

Comment 10 by bugdroid1@chromium.org, Aug 8

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/d3319f7fda53295240e32a4ccc80acfaeb88652e

commit d3319f7fda53295240e32a4ccc80acfaeb88652e
Author: Alex Dale <sigquit@google.com>
Date: Wed Aug 08 01:08:55 2018

portier: Proxy group manager class.

This change adds a GroupManager class for managing the memberships of
interfaces to proxy groups.  Proxy groups are simply names.  Interfaces
are identified by interface name as well to reduce coupling and make
testing easier.

TEST=unittest
BUG=chromium:863260

Change-Id: Iea3043bc50a29cf2277c8a6e8d7a77b55495cb1f
Reviewed-on: https://chromium-review.googlesource.com/1159476
Commit-Ready: Alex Dale <sigquit@google.com>
Tested-by: Alex Dale <sigquit@google.com>
Reviewed-by: Hugo Benichi <hugobenichi@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>

[add] https://crrev.com/d3319f7fda53295240e32a4ccc80acfaeb88652e/portier/group_mgr.h
[modify] https://crrev.com/d3319f7fda53295240e32a4ccc80acfaeb88652e/portier/status_unittest.cc
[modify] https://crrev.com/d3319f7fda53295240e32a4ccc80acfaeb88652e/portier/status.cc
[modify] https://crrev.com/d3319f7fda53295240e32a4ccc80acfaeb88652e/portier/status.h
[modify] https://crrev.com/d3319f7fda53295240e32a4ccc80acfaeb88652e/portier/portier.gyp
[add] https://crrev.com/d3319f7fda53295240e32a4ccc80acfaeb88652e/portier/group_mgr_unittest.cc
[add] https://crrev.com/d3319f7fda53295240e32a4ccc80acfaeb88652e/portier/group_mgr.cc

Project Member

Comment 11 by bugdroid1@chromium.org, Aug 8

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/496a948f5e4af868a6f2e45b4e984a24156d6fca

commit 496a948f5e4af868a6f2e45b4e984a24156d6fca
Author: Alex Dale <sigquit@google.com>
Date: Wed Aug 08 04:45:08 2018

portier: IPv6 classifiers and multicast LL generator.

This change creates functions for classifying IPv6 address and for
generating multicast link-layer addresses from multicast IPv6
addresses.  These functions will be used by the ND Proxy logic for
deciding how to handle incoming Neighbor discovery packets based on the
address class.  The classes are defined in RFC4291, and the multicast
link-layer address format is defined in RFC 7042.

TEST=unittests
BUG=chromium:863260

Change-Id: I86e6a25a09b6e82df52e34662c2ae4491506c078
Reviewed-on: https://chromium-review.googlesource.com/1163885
Commit-Ready: Alex Dale <sigquit@google.com>
Tested-by: Alex Dale <sigquit@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>

[modify] https://crrev.com/496a948f5e4af868a6f2e45b4e984a24156d6fca/portier/ipv6_util.h
[modify] https://crrev.com/496a948f5e4af868a6f2e45b4e984a24156d6fca/portier/ipv6_util_unittest.cc
[modify] https://crrev.com/496a948f5e4af868a6f2e45b4e984a24156d6fca/portier/ipv6_util.cc

Project Member

Comment 12 by bugdroid1@chromium.org, Aug 9

The following revision refers to this bug:
  https://chromium.googlesource.com/aosp/platform/system/connectivity/shill/+/57703b8e8af6da7c342ec0775afdab48cc01fad7

commit 57703b8e8af6da7c342ec0775afdab48cc01fad7
Author: Alex Dale <sigquit@google.com>
Date: Thu Aug 09 03:46:13 2018

shill: IP Address less than operator.

This change introduces a less than operator for both ByteString and IPAddress.
The ByteString less than operator is based on the static IsLessThan method.
IPAddress uses the ByteString less than operator to implement its own.

The IPAddress less than operator is to allow binary searching of IP address
with some of the C++ standard library containers.

TEST=unittest
BUG=chromium:863260

Change-Id: I8a689d12d16440c0744e882bef0186b490fa5bb8
Reviewed-on: https://chromium-review.googlesource.com/1162973
Commit-Ready: Alex Dale <sigquit@google.com>
Tested-by: Alex Dale <sigquit@google.com>
Reviewed-by: Chirantan Ekbote <chirantan@chromium.org>

[modify] https://crrev.com/57703b8e8af6da7c342ec0775afdab48cc01fad7/net/ip_address.h
[modify] https://crrev.com/57703b8e8af6da7c342ec0775afdab48cc01fad7/net/byte_string.h
[modify] https://crrev.com/57703b8e8af6da7c342ec0775afdab48cc01fad7/net/byte_string_unittest.cc
[modify] https://crrev.com/57703b8e8af6da7c342ec0775afdab48cc01fad7/net/ip_address.cc
[modify] https://crrev.com/57703b8e8af6da7c342ec0775afdab48cc01fad7/net/ip_address_unittest.cc

Project Member

Comment 13 by bugdroid1@chromium.org, Aug 9

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/a0d3dc43f6f3db320e29a32a22173c235459e887

commit a0d3dc43f6f3db320e29a32a22173c235459e887
Author: Alex Dale <sigquit@google.com>
Date: Thu Aug 09 03:46:02 2018

portier: Neighbor cache entry manager.

This change contains the first iteration of the NeighborCacheEntry
(which represents a Neighbor ARP entry) and the NeighborCacheManager
(which helps manage table look ups).

TEST=unittest
BUG=chromium:863260

Change-Id: Ie3397de5106f6ff4702d6ad2aee2578564ad5fba
Reviewed-on: https://chromium-review.googlesource.com/1161612
Commit-Ready: Alex Dale <sigquit@google.com>
Tested-by: Alex Dale <sigquit@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>

[modify] https://crrev.com/a0d3dc43f6f3db320e29a32a22173c235459e887/portier/portier.gyp
[add] https://crrev.com/a0d3dc43f6f3db320e29a32a22173c235459e887/portier/neighbor_cache.h
[add] https://crrev.com/a0d3dc43f6f3db320e29a32a22173c235459e887/portier/neighbor_cache.cc
[add] https://crrev.com/a0d3dc43f6f3db320e29a32a22173c235459e887/portier/neighbor_cache_unittest.cc

Project Member

Comment 14 by bugdroid1@chromium.org, Aug 9

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/d649009736248245386361c57844018a8257392c

commit d649009736248245386361c57844018a8257392c
Author: Alex Dale <sigquit@google.com>
Date: Thu Aug 09 03:46:14 2018

portier: Initial BPF filter.

This change introduces the BPF filter used to separate IPv6 ND packets
and other IPv6 packets.  This filter does not handle IPv6 extension
headers.

The filter has been manually tested, attaching to a raw packet socket
and scanning for ND messages and non-ND messages.

TEST=manual
BUG=chromium:863260

Change-Id: I19f4f2f42440cd7091bddab7de29742cd3c972e7
Reviewed-on: https://chromium-review.googlesource.com/1164414
Commit-Ready: Alex Dale <sigquit@google.com>
Tested-by: Alex Dale <sigquit@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>

[modify] https://crrev.com/d649009736248245386361c57844018a8257392c/portier/portier.gyp
[add] https://crrev.com/d649009736248245386361c57844018a8257392c/portier/nd_bpf.cc
[add] https://crrev.com/d649009736248245386361c57844018a8257392c/portier/nd_bpf.h

Project Member

Comment 15 by bugdroid1@chromium.org, Aug 10

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/97ac11034f1be44e917bb0313f63ee70d7153b7d

commit 97ac11034f1be44e917bb0313f63ee70d7153b7d
Author: Alex Dale <sigquit@google.com>
Date: Fri Aug 10 12:08:36 2018

portier: Create a socket for ICMPv6 messages.

This change introduces a socket wrapper for ICMPv6 messages.  Focus is
on the ability to send ICMPv6 messages.  The ability to receive
messages is available, not intended to be used outside of testing.

The 2 types of ICMPv6 messages that are are expected to be generated
by Portier are Destination Unreachable and Packet Too Big error
messages.

TEST=none
BUG=chromium:863260

Change-Id: Ib53ac45040ccbf6434213d1a8db5c8a265cb6ee6
Reviewed-on: https://chromium-review.googlesource.com/1167990
Commit-Ready: Alex Dale <sigquit@google.com>
Tested-by: Alex Dale <sigquit@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>

[modify] https://crrev.com/97ac11034f1be44e917bb0313f63ee70d7153b7d/portier/network_socket.cc
[modify] https://crrev.com/97ac11034f1be44e917bb0313f63ee70d7153b7d/portier/network_socket.h
[modify] https://crrev.com/97ac11034f1be44e917bb0313f63ee70d7153b7d/portier/ether_socket.cc
[modify] https://crrev.com/97ac11034f1be44e917bb0313f63ee70d7153b7d/portier/portier.gyp
[add] https://crrev.com/97ac11034f1be44e917bb0313f63ee70d7153b7d/portier/icmpv6_socket.cc
[add] https://crrev.com/97ac11034f1be44e917bb0313f63ee70d7153b7d/portier/icmpv6_socket.h

Project Member

Comment 16 by bugdroid1@chromium.org, Aug 11

The following revision refers to this bug:
  https://chromium.googlesource.com/aosp/platform/system/connectivity/shill/+/6a1d40f2c04f10e9f48a8d1a92470d374d3d3358

commit 6a1d40f2c04f10e9f48a8d1a92470d374d3d3358
Author: Alex Dale <sigquit@google.com>
Date: Sat Aug 11 05:44:15 2018

shill: Added move operators to ByteString and IPAddress.

This change address move assignment operator and move constructor to
ByteString and to IPAddress.

ByteStrings can become very large and copying them can become expensive
operations.  IPAddress can similarly benefit.  By providing move
operators to them, they can be efficiently passed.

TEST=unittest
BUG=chromium:863260

Change-Id: I8faf0e06d5cadabd6407bb544ff25e73ee0a9321
Reviewed-on: https://chromium-review.googlesource.com/1170562
Commit-Ready: Alex Dale <sigquit@google.com>
Tested-by: Alex Dale <sigquit@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>

[modify] https://crrev.com/6a1d40f2c04f10e9f48a8d1a92470d374d3d3358/net/ip_address.h
[modify] https://crrev.com/6a1d40f2c04f10e9f48a8d1a92470d374d3d3358/net/byte_string.h
[modify] https://crrev.com/6a1d40f2c04f10e9f48a8d1a92470d374d3d3358/net/byte_string_unittest.cc
[modify] https://crrev.com/6a1d40f2c04f10e9f48a8d1a92470d374d3d3358/net/ip_address_unittest.cc

Project Member

Comment 17 by bugdroid1@chromium.org, Aug 11

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/4c1344a57d9070dc79b579d517ba70f5ad2cee5c

commit 4c1344a57d9070dc79b579d517ba70f5ad2cee5c
Author: Alex Dale <sigquit@google.com>
Date: Sat Aug 11 08:29:10 2018

portier: Fixed the include order of various files.

After reviewing the C++ code style guide, I've fixed all the currently
commited Portier source files.  Also removed comments which are not
needed.

Compiled and unittest were run to ensure that no unintended behaviour
had arose.

TEST=unittest
BUG=chromium:863260

Change-Id: Idc85c8956605c0e742e2fd31da113ebb0aa7a7e5
Reviewed-on: https://chromium-review.googlesource.com/1171813
Commit-Ready: Alex Dale <sigquit@google.com>
Tested-by: Alex Dale <sigquit@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>

[modify] https://crrev.com/4c1344a57d9070dc79b579d517ba70f5ad2cee5c/portier/status_unittest.cc
[modify] https://crrev.com/4c1344a57d9070dc79b579d517ba70f5ad2cee5c/portier/ipv6_util.cc
[modify] https://crrev.com/4c1344a57d9070dc79b579d517ba70f5ad2cee5c/portier/ll_address.h
[modify] https://crrev.com/4c1344a57d9070dc79b579d517ba70f5ad2cee5c/portier/nd_bpf.cc
[modify] https://crrev.com/4c1344a57d9070dc79b579d517ba70f5ad2cee5c/portier/status.h
[modify] https://crrev.com/4c1344a57d9070dc79b579d517ba70f5ad2cee5c/portier/ll_address_unittest.cc
[modify] https://crrev.com/4c1344a57d9070dc79b579d517ba70f5ad2cee5c/portier/nd_msg.h
[modify] https://crrev.com/4c1344a57d9070dc79b579d517ba70f5ad2cee5c/portier/ether_socket.cc
[modify] https://crrev.com/4c1344a57d9070dc79b579d517ba70f5ad2cee5c/portier/nd_msg_unittest.cc
[modify] https://crrev.com/4c1344a57d9070dc79b579d517ba70f5ad2cee5c/portier/ipv6_util_unittest.cc
[modify] https://crrev.com/4c1344a57d9070dc79b579d517ba70f5ad2cee5c/portier/neighbor_cache.cc
[modify] https://crrev.com/4c1344a57d9070dc79b579d517ba70f5ad2cee5c/portier/status.cc
[modify] https://crrev.com/4c1344a57d9070dc79b579d517ba70f5ad2cee5c/portier/neighbor_cache_unittest.cc
[modify] https://crrev.com/4c1344a57d9070dc79b579d517ba70f5ad2cee5c/portier/nd_msg.cc
[modify] https://crrev.com/4c1344a57d9070dc79b579d517ba70f5ad2cee5c/portier/ll_address.cc
[modify] https://crrev.com/4c1344a57d9070dc79b579d517ba70f5ad2cee5c/portier/group_mgr_unittest.cc
[modify] https://crrev.com/4c1344a57d9070dc79b579d517ba70f5ad2cee5c/portier/group_mgr.cc
[modify] https://crrev.com/4c1344a57d9070dc79b579d517ba70f5ad2cee5c/portier/icmpv6_socket.cc
[modify] https://crrev.com/4c1344a57d9070dc79b579d517ba70f5ad2cee5c/portier/network_socket.cc

Project Member

Comment 18 by bugdroid1@chromium.org, Aug 15

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/6f74e0a33fce340a19aa9d97a2352e6620c139d5

commit 6f74e0a33fce340a19aa9d97a2352e6620c139d5
Author: Alex Dale <sigquit@google.com>
Date: Wed Aug 15 23:37:22 2018

portier: Created proxy interface wrapper.

The proxy interface class is a wrapper around network interfaces that are
to be used in the ND Proxy program.  It initializes several network sockets
to the specification of the neighbor discovery proxy protocol.

The class also handles some of the lower-level ND proxy functions.
This includes:
- Link-layer address substitution in the Neighbor Discovery Message.
- Calculating the ICMPv6 checksums on modified messages.
- Setting of Proxy Bit on Router Advertisements.
- Setting Hop-Limit to 255.

TEST=manual
BUG=chromium:863260

Change-Id: I2f14c9f7a7371c43341da85fbc0d20aa3c857abf
Reviewed-on: https://chromium-review.googlesource.com/1171678
Commit-Ready: Alex Dale <sigquit@google.com>
Tested-by: Alex Dale <sigquit@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>

[modify] https://crrev.com/6f74e0a33fce340a19aa9d97a2352e6620c139d5/portier/portier.gyp
[add] https://crrev.com/6f74e0a33fce340a19aa9d97a2352e6620c139d5/portier/proxy_interface.cc
[add] https://crrev.com/6f74e0a33fce340a19aa9d97a2352e6620c139d5/portier/proxy_interface.h

Project Member

Comment 19 by bugdroid1@chromium.org, Aug 17

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/55c581d1e2c64dae9822af4316c028445bdddb6e

commit 55c581d1e2c64dae9822af4316c028445bdddb6e
Author: Alex Dale <sigquit@google.com>
Date: Fri Aug 17 18:17:40 2018

portier: Proxy Group class.

This change introduces a Proxy Group class which can contain / manage
a set of group members (known as ProxyGroupMember).  The ProxyGroup
class and ProxyGroupMember interface work together to maintain a bi-
directional relationship between the two classes.  ProxyGroup is aware
of its members and ProxyGroupMember is aware of which group it is a
member of.

The ProxyGroupMember provides API hooks for the class implementing the
class to be notified when being added or removed from a Proxy Group.
It is intended that the ProxyInterface class to inherit from
ProxyGroupMember.

This change will replace much of the functionality of the GroupManager
class.

After some testing, it was found that the GroupManager class creates
difficulties for adding and removing elements from the group, which
then requires many function calls.  This new ProxyGroup-
ProxyGroupMember pattern addresses the issues that were faced before,
while still providing the ability to effectively unittest the
components.

TEST=unittest
BUG=chromium:863260

Change-Id: Ie1e5a08847de149e58104cea7357cc0b7b3d244d
Reviewed-on: https://chromium-review.googlesource.com/1175552
Commit-Ready: Alex Dale <sigquit@google.com>
Tested-by: Alex Dale <sigquit@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>

[delete] https://crrev.com/9ce47d071137e31a67e1901990acf564d5eea034/portier/group_mgr.h
[add] https://crrev.com/55c581d1e2c64dae9822af4316c028445bdddb6e/portier/mock_group.h
[add] https://crrev.com/55c581d1e2c64dae9822af4316c028445bdddb6e/portier/group.cc
[add] https://crrev.com/55c581d1e2c64dae9822af4316c028445bdddb6e/portier/group_manager.h
[add] https://crrev.com/55c581d1e2c64dae9822af4316c028445bdddb6e/portier/group_unittest.cc
[add] https://crrev.com/55c581d1e2c64dae9822af4316c028445bdddb6e/portier/group.h
[modify] https://crrev.com/55c581d1e2c64dae9822af4316c028445bdddb6e/portier/portier.gyp
[delete] https://crrev.com/9ce47d071137e31a67e1901990acf564d5eea034/portier/group_mgr_unittest.cc
[delete] https://crrev.com/9ce47d071137e31a67e1901990acf564d5eea034/portier/group_mgr.cc
[add] https://crrev.com/55c581d1e2c64dae9822af4316c028445bdddb6e/portier/group_manager_unittest.cc

Project Member

Comment 20 by bugdroid1@chromium.org, Aug 17

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/b24688c63ed7c0f9e65c1f2c184041547ea35a2a

commit b24688c63ed7c0f9e65c1f2c184041547ea35a2a
Author: Alex Dale <sigquit@google.com>
Date: Fri Aug 17 18:17:53 2018

portier: Neighbor cache expiry mechanism.

This changes provides the NeighborCache class the ability to discard
any cache entries that are older than a specified time frame.  This is
necessary as RTNetlink may not signal the process on entries being
deleted.

This also allows for the discarding of locally generated cache entries
which are not managed by the kernel.  These entries are generated when
a downstream interface perform neighbor discovery, requiring the ND
Proxy to cache the entry for two-way traffic to be established.  The
Linux kernel will not cache entries for non-solicited neighbor
advertisement if they were not self initiated.

TEST=unittest
BUG=chromium:863260

Change-Id: I3e8839ca0eecb46f5f1a85bc840cf5a8c7138a86
Reviewed-on: https://chromium-review.googlesource.com/1176393
Commit-Ready: Alex Dale <sigquit@google.com>
Tested-by: Alex Dale <sigquit@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>

[modify] https://crrev.com/b24688c63ed7c0f9e65c1f2c184041547ea35a2a/portier/neighbor_cache.h
[modify] https://crrev.com/b24688c63ed7c0f9e65c1f2c184041547ea35a2a/portier/neighbor_cache.cc
[modify] https://crrev.com/b24688c63ed7c0f9e65c1f2c184041547ea35a2a/portier/neighbor_cache_unittest.cc

Project Member

Comment 21 by bugdroid1@chromium.org, Aug 17

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/34048acff722c35a0093c2b09aa124476fbd80b7

commit 34048acff722c35a0093c2b09aa124476fbd80b7
Author: Alex Dale <sigquit@google.com>
Date: Fri Aug 17 18:18:05 2018

portier: use of sendmsg in EtherSocket instead of sendto.

This change attempts to add a small performance post to EtherSocket by
removing the need to excessively copy data.  After a review of
ICMPSocket (in cl:1167990), it was suggested to use sendmsg() instead
of sendto() system call.  This removes the need for heap allocated
header fields and copying of packet payload in to a temporary buffer.

TEST=none
BUG=chromium:863260

Change-Id: I094d4c6c489f3926086cc10ccffba258da4f0f23
Reviewed-on: https://chromium-review.googlesource.com/1176464
Commit-Ready: Alex Dale <sigquit@google.com>
Tested-by: Alex Dale <sigquit@google.com>
Reviewed-by: Hugo Benichi <hugobenichi@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>

[modify] https://crrev.com/34048acff722c35a0093c2b09aa124476fbd80b7/portier/ether_socket.cc

Project Member

Comment 22 by bugdroid1@chromium.org, Aug 17

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/7e6dd601251befdbaa141f2b2353a38ef55b6dc6

commit 7e6dd601251befdbaa141f2b2353a38ef55b6dc6
Author: Alex Dale <sigquit@google.com>
Date: Fri Aug 17 18:18:07 2018

portier: Updated project description to include "Multi-Network"

After some discussion, it was determined to dub the portier service as
the "Multi-Network Neighbor Discovery Proxy".

TEST=none
BUG=chromium:863260

Change-Id: I21a6f736b44ccdf8c7c200c75934924f0704ed18
Reviewed-on: https://chromium-review.googlesource.com/1176476
Commit-Ready: Alex Dale <sigquit@google.com>
Tested-by: Alex Dale <sigquit@google.com>
Reviewed-by: Hugo Benichi <hugobenichi@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>

[modify] https://crrev.com/7e6dd601251befdbaa141f2b2353a38ef55b6dc6/portier/README.md
[modify] https://crrev.com/7e6dd601251befdbaa141f2b2353a38ef55b6dc6/README.md

Project Member

Comment 23 by bugdroid1@chromium.org, Aug 17

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/79db6f53eae84d2229a01d7a4cb6673450aeb7b4

commit 79db6f53eae84d2229a01d7a4cb6673450aeb7b4
Author: Alex Dale <sigquit@google.com>
Date: Fri Aug 17 18:17:40 2018

portier: ProxyInterface extends GroupMember

The change adds GroupMember as a parent class of ProxyInterface.  By
adding it as a parent, the interface can ba automatically notified when
joining or leaving a group.  This will be used to determine when to
enable or disable the interface.

CQ-DEPEND=CL:1175552

TEST=none
BUG=chromium:863260

Change-Id: Ia2362103b62512688c84be0fb4ec2d1d4080e4c4
Reviewed-on: https://chromium-review.googlesource.com/1177196
Commit-Ready: Alex Dale <sigquit@google.com>
Tested-by: Alex Dale <sigquit@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>

[modify] https://crrev.com/79db6f53eae84d2229a01d7a4cb6673450aeb7b4/portier/proxy_interface.cc
[modify] https://crrev.com/79db6f53eae84d2229a01d7a4cb6673450aeb7b4/portier/proxy_interface.h

Cc: sigquit@google.com
Labels: Proj-Containers
Owner: ----
Status: Available (was: Started)
Cc: reve...@chromium.org

Sign in to add a comment