diff --git a/quic/qbone/qbone_packet_processor.cc b/quic/qbone/qbone_packet_processor.cc
index 39b622b..3bfb97a 100644
--- a/quic/qbone/qbone_packet_processor.cc
+++ b/quic/qbone/qbone_packet_processor.cc
@@ -75,7 +75,7 @@
   switch (result) {
     case ProcessingResult::OK:
       switch (direction) {
-        case Direction::FROM_CLIENT:
+        case Direction::FROM_OFF_NETWORK:
           output_->SendPacketToNetwork(*packet);
           break;
         case Direction::FROM_NETWORK:
@@ -184,7 +184,7 @@
   uint8_t address_reject_code;
   bool ip_parse_result;
   switch (direction) {
-    case Direction::FROM_CLIENT:
+    case Direction::FROM_OFF_NETWORK:
       // Expect the source IP to match the client.
       ip_parse_result = address_to_check.FromPackedString(
           reinterpret_cast<const char*>(&header->ip6_src),
@@ -257,7 +257,7 @@
 void QbonePacketProcessor::SendResponse(Direction original_direction,
                                         QuicStringPiece packet) {
   switch (original_direction) {
-    case Direction::FROM_CLIENT:
+    case Direction::FROM_OFF_NETWORK:
       output_->SendPacketToClient(packet);
       break;
     case Direction::FROM_NETWORK:
diff --git a/quic/qbone/qbone_packet_processor.h b/quic/qbone/qbone_packet_processor.h
index 4476771..04b7412 100644
--- a/quic/qbone/qbone_packet_processor.h
+++ b/quic/qbone/qbone_packet_processor.h
@@ -28,7 +28,7 @@
  public:
   enum class Direction {
     // Packet is going from the QBONE client into the network behind the QBONE.
-    FROM_CLIENT = 0,
+    FROM_OFF_NETWORK = 0,
     // Packet is going from the network begin QBONE to the client.
     FROM_NETWORK = 1
   };
diff --git a/quic/qbone/qbone_packet_processor_test.cc b/quic/qbone/qbone_packet_processor_test.cc
index f7e642a..a2b0201 100644
--- a/quic/qbone/qbone_packet_processor_test.cc
+++ b/quic/qbone/qbone_packet_processor_test.cc
@@ -146,7 +146,7 @@
 
   void SendPacketFromClient(QuicStringPiece packet) {
     string packet_buffer(packet.data(), packet.size());
-    processor_->ProcessPacket(&packet_buffer, Direction::FROM_CLIENT);
+    processor_->ProcessPacket(&packet_buffer, Direction::FROM_OFF_NETWORK);
   }
 
   void SendPacketFromNetwork(QuicStringPiece packet) {
@@ -164,7 +164,7 @@
 };
 
 TEST_F(QbonePacketProcessorTest, EmptyPacket) {
-  EXPECT_CALL(stats_, OnPacketDroppedSilently(Direction::FROM_CLIENT));
+  EXPECT_CALL(stats_, OnPacketDroppedSilently(Direction::FROM_OFF_NETWORK));
   SendPacketFromClient("");
 
   EXPECT_CALL(stats_, OnPacketDroppedSilently(Direction::FROM_NETWORK));
@@ -172,7 +172,7 @@
 }
 
 TEST_F(QbonePacketProcessorTest, RandomGarbage) {
-  EXPECT_CALL(stats_, OnPacketDroppedSilently(Direction::FROM_CLIENT));
+  EXPECT_CALL(stats_, OnPacketDroppedSilently(Direction::FROM_OFF_NETWORK));
   SendPacketFromClient(string(1280, 'a'));
 
   EXPECT_CALL(stats_, OnPacketDroppedSilently(Direction::FROM_NETWORK));
@@ -184,19 +184,19 @@
   packet[4] = 0;
   packet[5] = 0;
 
-  EXPECT_CALL(stats_, OnPacketDroppedWithIcmp(Direction::FROM_CLIENT));
+  EXPECT_CALL(stats_, OnPacketDroppedWithIcmp(Direction::FROM_OFF_NETWORK));
   EXPECT_CALL(output_, SendPacketToClient(IsIcmpMessage(ICMP6_DST_UNREACH)));
   SendPacketFromClient(packet);
 }
 
 TEST_F(QbonePacketProcessorTest, GoodPacketFromClient) {
-  EXPECT_CALL(stats_, OnPacketForwarded(Direction::FROM_CLIENT));
+  EXPECT_CALL(stats_, OnPacketForwarded(Direction::FROM_OFF_NETWORK));
   EXPECT_CALL(output_, SendPacketToNetwork(_));
   SendPacketFromClient(kReferenceClientPacket);
 }
 
 TEST_F(QbonePacketProcessorTest, GoodPacketFromClientSubnet) {
-  EXPECT_CALL(stats_, OnPacketForwarded(Direction::FROM_CLIENT));
+  EXPECT_CALL(stats_, OnPacketForwarded(Direction::FROM_OFF_NETWORK));
   EXPECT_CALL(output_, SendPacketToNetwork(_));
   SendPacketFromClient(kReferenceClientSubnetPacket);
 }
@@ -208,7 +208,7 @@
 }
 
 TEST_F(QbonePacketProcessorTest, GoodPacketFromNetworkWrongDirection) {
-  EXPECT_CALL(stats_, OnPacketDroppedWithIcmp(Direction::FROM_CLIENT));
+  EXPECT_CALL(stats_, OnPacketDroppedWithIcmp(Direction::FROM_OFF_NETWORK));
   EXPECT_CALL(output_, SendPacketToClient(IsIcmpMessage(ICMP6_DST_UNREACH)));
   SendPacketFromClient(kReferenceNetworkPacket);
 }
@@ -237,7 +237,7 @@
       .WillRepeatedly(Return(ProcessingResult::SILENT_DROP));
   processor_->set_filter(std::move(filter));
 
-  EXPECT_CALL(stats_, OnPacketDroppedSilently(Direction::FROM_CLIENT));
+  EXPECT_CALL(stats_, OnPacketDroppedSilently(Direction::FROM_OFF_NETWORK));
   SendPacketFromClient(kReferenceClientPacket);
 }
 
@@ -275,7 +275,7 @@
   TestFilter* filter = filter_owned.get();
   processor_->set_filter(std::move(filter_owned));
 
-  EXPECT_CALL(stats_, OnPacketDroppedSilently(Direction::FROM_CLIENT));
+  EXPECT_CALL(stats_, OnPacketDroppedSilently(Direction::FROM_OFF_NETWORK));
   SendPacketFromClient(kReferenceClientPacket);
   ASSERT_EQ(1, filter->called());
 }
diff --git a/quic/qbone/qbone_server_session.cc b/quic/qbone/qbone_server_session.cc
index 2b4a736..1360e6d 100644
--- a/quic/qbone/qbone_server_session.cc
+++ b/quic/qbone/qbone_server_session.cc
@@ -80,7 +80,7 @@
 void QboneServerSession::ProcessPacketFromPeer(QuicStringPiece packet) {
   string buffer = string(packet);
   processor_.ProcessPacket(&buffer,
-                           QbonePacketProcessor::Direction::FROM_CLIENT);
+                           QbonePacketProcessor::Direction::FROM_OFF_NETWORK);
 }
 
 void QboneServerSession::SendPacketToClient(QuicStringPiece packet) {
