You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by ma...@apache.org on 2017/08/25 08:33:01 UTC
[trafficserver] 02/02: Print transport parameters
This is an automated email from the ASF dual-hosted git repository.
maskit pushed a commit to branch quic-latest
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
commit 6f1f8ae58ec06c64b674be0e84025c122ac2847e
Author: Masakazu Kitajo <ma...@apache.org>
AuthorDate: Fri Aug 25 17:32:34 2017 +0900
Print transport parameters
---
iocore/net/quic/QUICDebugNames.cc | 21 +++++++++++++++++++++
iocore/net/quic/QUICDebugNames.h | 2 ++
iocore/net/quic/QUICTransportParameters.cc | 27 +++++++++++++++++++++++++++
iocore/net/quic/QUICTransportParameters.h | 6 +++---
4 files changed, 53 insertions(+), 3 deletions(-)
diff --git a/iocore/net/quic/QUICDebugNames.cc b/iocore/net/quic/QUICDebugNames.cc
index b3c738c..dae5885 100644
--- a/iocore/net/quic/QUICDebugNames.cc
+++ b/iocore/net/quic/QUICDebugNames.cc
@@ -156,3 +156,24 @@ QUICDebugNames::vc_event(int event)
return "UNKNOWN";
}
}
+
+const char *
+QUICDebugNames::transport_parameter_id(QUICTransportParameterId id)
+{
+ switch (id) {
+ case QUICTransportParameterId::INITIAL_MAX_STREAM_DATA:
+ return "INITIAL_MAX_STREAM_DATA";
+ case QUICTransportParameterId::INITIAL_MAX_DATA:
+ return "INITIAL_MAX_DATA";
+ case QUICTransportParameterId::INITIAL_MAX_STREAM_ID:
+ return "INITIAL_MAX_STREAM_ID";
+ case QUICTransportParameterId::IDLE_TIMEOUT:
+ return "IDLE_TIMEOUT";
+ case QUICTransportParameterId::TRUNCATE_CONNECTION_ID:
+ return "TRUNCATE_CONNECTION_ID";
+ case QUICTransportParameterId::MAX_PACKET_SIZE:
+ return "MAX_PACKET_SIZE";
+ default:
+ return "UNKNOWN";
+ }
+}
diff --git a/iocore/net/quic/QUICDebugNames.h b/iocore/net/quic/QUICDebugNames.h
index fabd076..20fcc71 100644
--- a/iocore/net/quic/QUICDebugNames.h
+++ b/iocore/net/quic/QUICDebugNames.h
@@ -24,6 +24,7 @@
#pragma once
#include "QUICTypes.h"
+#include "QUICTransportParameters.h"
class QUICDebugNames
{
@@ -32,6 +33,7 @@ public:
static const char *frame_type(QUICFrameType type);
static const char *error_class(QUICErrorClass cls);
static const char *error_code(QUICErrorCode code);
+ static const char *transport_parameter_id(QUICTransportParameterId id);
// TODO: move to somewhere
static const char *vc_event(int event);
diff --git a/iocore/net/quic/QUICTransportParameters.cc b/iocore/net/quic/QUICTransportParameters.cc
index 97e0427..c3ce09c 100644
--- a/iocore/net/quic/QUICTransportParameters.cc
+++ b/iocore/net/quic/QUICTransportParameters.cc
@@ -22,9 +22,11 @@
*/
#include <cstdlib>
+#include "ts/Diags.h"
#include "QUICGlobals.h"
#include "QUICTransportParameters.h"
#include "QUICConnection.h"
+#include "QUICDebugNames.h"
#include "../P_QUICNetVConnection.h"
static constexpr int TRANSPORT_PARAMETERS_MAXIMUM_SIZE = 65535;
@@ -160,6 +162,31 @@ QUICTransportParameters::store(uint8_t *buf, uint16_t *len) const
// QUICTransportParametersInClientHello
//
+QUICTransportParametersInClientHello::QUICTransportParametersInClientHello(const uint8_t *buf, size_t len) : QUICTransportParameters(buf, len)
+{
+ // Print all parameters
+ const uint8_t *p = this->_buf.get() + this->_parameters_offset();
+ uint16_t n = (p[0] << 8) + p[1];
+ p += 2;
+ while (n > 0) {
+ uint16_t _id = (p[0] << 8) + p[1];
+ p += 2;
+ n -= 2;
+ uint16_t _value_len = (p[0] << 8) + p[1];
+ p += 2;
+ n -= 2;
+ if (_value_len == 0) {
+ Debug("quic_handsahke", "%s: (no value)", QUICDebugNames::transport_parameter_id(_id));
+ } else if (_value_len <= 8) {
+ Debug("quic_handsahke", "%s: 0x%" PRIx64 " (%" PRIu64 ")", QUICDebugNames::transport_parameter_id(_id), QUICTypeUtil::read_nbytes_as_uint(p, _value_len), QUICTypeUtil::read_nbytes_as_uint(p, _value_len));
+ } else {
+ Debug("quic_handsahke", "%s: (long data)", QUICDebugNames::transport_parameter_id(_id));
+ }
+ p += _value_len;
+ n -= _value_len;
+ }
+}
+
void
QUICTransportParametersInClientHello::_store(uint8_t *buf, uint16_t *len) const
{
diff --git a/iocore/net/quic/QUICTransportParameters.h b/iocore/net/quic/QUICTransportParameters.h
index a84aba8..c5239f2 100644
--- a/iocore/net/quic/QUICTransportParameters.h
+++ b/iocore/net/quic/QUICTransportParameters.h
@@ -99,9 +99,9 @@ protected:
class QUICTransportParametersInClientHello : public QUICTransportParameters
{
public:
- QUICTransportParametersInClientHello(QUICVersion negotiated_version, QUICVersion initial_version)
- : QUICTransportParameters(), _negotiated_version(negotiated_version), _initial_version(initial_version){};
- QUICTransportParametersInClientHello(const uint8_t *buf, size_t len) : QUICTransportParameters(buf, len){};
+ QUICTransportParametersInClientHello(QUICVersion negotiated_version, QUICVersion initial_version) : QUICTransportParameters(), _negotiated_version(negotiated_version), _initial_version(initial_version)
+{};
+ QUICTransportParametersInClientHello(const uint8_t *buf, size_t len);
QUICVersion negotiated_version() const;
QUICVersion initial_version() const;
--
To stop receiving notification emails like this one, please contact
"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>.