diff --git a/src/core/transport/transport.h b/src/core/transport/transport.h
index 80d842b..d4cee03 100644
--- a/src/core/transport/transport.h
+++ b/src/core/transport/transport.h
@@ -50,8 +50,7 @@
 typedef struct grpc_stream grpc_stream;
 
 /* Represents the send/recv closed state of a stream. */
-typedef enum grpc_stream_state
-{
+typedef enum grpc_stream_state {
   /* the stream is open for sends and receives */
   GRPC_STREAM_OPEN,
   /* the stream is closed for sends, but may still receive data */
@@ -64,8 +63,7 @@
 
 /* Transport stream op: a set of operations to perform on a transport
    against a single stream */
-typedef struct grpc_transport_stream_op
-{
+typedef struct grpc_transport_stream_op {
   grpc_closure *on_consumed;
 
   grpc_stream_op_buffer *send_ops;
@@ -95,8 +93,7 @@
 } grpc_transport_stream_op;
 
 /** Transport op: a set of operations to perform on a transport as a whole */
-typedef struct grpc_transport_op
-{
+typedef struct grpc_transport_op {
   /** called when processing of this op is done */
   grpc_closure *on_consumed;
   /** connectivity monitoring */
@@ -113,7 +110,8 @@
   gpr_slice *goaway_message;
   /** set the callback for accepting new streams;
       this is a permanent callback, unlike the other one-shot closures */
-  void (*set_accept_stream) (void *user_data, grpc_transport * transport, const void *server_data);
+  void (*set_accept_stream)(void *user_data, grpc_transport *transport,
+                            const void *server_data);
   void *set_accept_stream_user_data;
   /** add this transport to a pollset */
   grpc_pollset *bind_pollset;
@@ -125,7 +123,7 @@
 
 /* Returns the amount of memory required to store a grpc_stream for this
    transport */
-size_t grpc_transport_stream_size (grpc_transport * transport);
+size_t grpc_transport_stream_size(grpc_transport *transport);
 
 /* Initialize transport data for a stream.
 
@@ -136,7 +134,10 @@
      stream      - a pointer to uninitialized memory to initialize
      server_data - either NULL for a client initiated stream, or a pointer
                    supplied from the accept_stream callback function */
-int grpc_transport_init_stream (grpc_exec_ctx * exec_ctx, grpc_transport * transport, grpc_stream * stream, const void *server_data, grpc_transport_stream_op * initial_op);
+int grpc_transport_init_stream(grpc_exec_ctx *exec_ctx,
+                               grpc_transport *transport, grpc_stream *stream,
+                               const void *server_data,
+                               grpc_transport_stream_op *initial_op);
 
 /* Destroy transport data for a stream.
 
@@ -148,15 +149,21 @@
      transport - the transport on which to create this stream
      stream    - the grpc_stream to destroy (memory is still owned by the
                  caller, but any child memory must be cleaned up) */
-void grpc_transport_destroy_stream (grpc_exec_ctx * exec_ctx, grpc_transport * transport, grpc_stream * stream);
+void grpc_transport_destroy_stream(grpc_exec_ctx *exec_ctx,
+                                   grpc_transport *transport,
+                                   grpc_stream *stream);
 
-void grpc_transport_stream_op_finish_with_failure (grpc_exec_ctx * exec_ctx, grpc_transport_stream_op * op);
+void grpc_transport_stream_op_finish_with_failure(grpc_exec_ctx *exec_ctx,
+                                                  grpc_transport_stream_op *op);
 
-void grpc_transport_stream_op_add_cancellation (grpc_transport_stream_op * op, grpc_status_code status);
+void grpc_transport_stream_op_add_cancellation(grpc_transport_stream_op *op,
+                                               grpc_status_code status);
 
-void grpc_transport_stream_op_add_close (grpc_transport_stream_op * op, grpc_status_code status, gpr_slice * optional_message);
+void grpc_transport_stream_op_add_close(grpc_transport_stream_op *op,
+                                        grpc_status_code status,
+                                        gpr_slice *optional_message);
 
-char *grpc_transport_stream_op_string (grpc_transport_stream_op * op);
+char *grpc_transport_stream_op_string(grpc_transport_stream_op *op);
 
 /* Send a batch of operations on a transport
 
@@ -167,25 +174,32 @@
      stream    - the stream on which to send the operations. This must be
                  non-NULL and previously initialized by the same transport.
      op        - a grpc_transport_stream_op specifying the op to perform */
-void grpc_transport_perform_stream_op (grpc_exec_ctx * exec_ctx, grpc_transport * transport, grpc_stream * stream, grpc_transport_stream_op * op);
+void grpc_transport_perform_stream_op(grpc_exec_ctx *exec_ctx,
+                                      grpc_transport *transport,
+                                      grpc_stream *stream,
+                                      grpc_transport_stream_op *op);
 
-void grpc_transport_perform_op (grpc_exec_ctx * exec_ctx, grpc_transport * transport, grpc_transport_op * op);
+void grpc_transport_perform_op(grpc_exec_ctx *exec_ctx,
+                               grpc_transport *transport,
+                               grpc_transport_op *op);
 
 /* Send a ping on a transport
 
    Calls cb with user data when a response is received. */
-void grpc_transport_ping (grpc_transport * transport, grpc_closure * cb);
+void grpc_transport_ping(grpc_transport *transport, grpc_closure *cb);
 
 /* Advise peer of pending connection termination. */
-void grpc_transport_goaway (grpc_transport * transport, grpc_status_code status, gpr_slice debug_data);
+void grpc_transport_goaway(grpc_transport *transport, grpc_status_code status,
+                           gpr_slice debug_data);
 
 /* Close a transport. Aborts all open streams. */
-void grpc_transport_close (grpc_transport * transport);
+void grpc_transport_close(grpc_transport *transport);
 
 /* Destroy the transport */
-void grpc_transport_destroy (grpc_exec_ctx * exec_ctx, grpc_transport * transport);
+void grpc_transport_destroy(grpc_exec_ctx *exec_ctx, grpc_transport *transport);
 
 /* Get the transports peer */
-char *grpc_transport_get_peer (grpc_exec_ctx * exec_ctx, grpc_transport * transport);
+char *grpc_transport_get_peer(grpc_exec_ctx *exec_ctx,
+                              grpc_transport *transport);
 
 #endif /* GRPC_INTERNAL_CORE_TRANSPORT_TRANSPORT_H */
