diff --git a/include/polarssl/net.h b/include/polarssl/net.h
index 1860b3d..a8fcdca 100644
--- a/include/polarssl/net.h
+++ b/include/polarssl/net.h
@@ -1,19 +1,19 @@
 /**
  * \file net.h
  */
-#ifndef XYSSL_NET_H
-#define XYSSL_NET_H
+#ifndef POLARSSL_NET_H
+#define POLARSSL_NET_H
 
-#define XYSSL_ERR_NET_UNKNOWN_HOST                      -0x0F00
-#define XYSSL_ERR_NET_SOCKET_FAILED                     -0x0F10
-#define XYSSL_ERR_NET_CONNECT_FAILED                    -0x0F20
-#define XYSSL_ERR_NET_BIND_FAILED                       -0x0F30
-#define XYSSL_ERR_NET_LISTEN_FAILED                     -0x0F40
-#define XYSSL_ERR_NET_ACCEPT_FAILED                     -0x0F50
-#define XYSSL_ERR_NET_RECV_FAILED                       -0x0F60
-#define XYSSL_ERR_NET_SEND_FAILED                       -0x0F70
-#define XYSSL_ERR_NET_CONN_RESET                        -0x0F80
-#define XYSSL_ERR_NET_TRY_AGAIN                         -0x0F90
+#define POLARSSL_ERR_NET_UNKNOWN_HOST                      -0x0F00
+#define POLARSSL_ERR_NET_SOCKET_FAILED                     -0x0F10
+#define POLARSSL_ERR_NET_CONNECT_FAILED                    -0x0F20
+#define POLARSSL_ERR_NET_BIND_FAILED                       -0x0F30
+#define POLARSSL_ERR_NET_LISTEN_FAILED                     -0x0F40
+#define POLARSSL_ERR_NET_ACCEPT_FAILED                     -0x0F50
+#define POLARSSL_ERR_NET_RECV_FAILED                       -0x0F60
+#define POLARSSL_ERR_NET_SEND_FAILED                       -0x0F70
+#define POLARSSL_ERR_NET_CONN_RESET                        -0x0F80
+#define POLARSSL_ERR_NET_TRY_AGAIN                         -0x0F90
 
 #ifdef __cplusplus
 extern "C" {
@@ -23,9 +23,9 @@
  * \brief          Initiate a TCP connection with host:port
  *
  * \return         0 if successful, or one of:
- *                      XYSSL_ERR_NET_SOCKET_FAILED,
- *                      XYSSL_ERR_NET_UNKNOWN_HOST,
- *                      XYSSL_ERR_NET_CONNECT_FAILED
+ *                      POLARSSL_ERR_NET_SOCKET_FAILED,
+ *                      POLARSSL_ERR_NET_UNKNOWN_HOST,
+ *                      POLARSSL_ERR_NET_CONNECT_FAILED
  */
 int net_connect( int *fd, char *host, int port );
 
@@ -34,17 +34,17 @@
  *                 If bind_ip == NULL, all interfaces are binded.
  *
  * \return         0 if successful, or one of:
- *                      XYSSL_ERR_NET_SOCKET_FAILED,
- *                      XYSSL_ERR_NET_BIND_FAILED,
- *                      XYSSL_ERR_NET_LISTEN_FAILED
+ *                      POLARSSL_ERR_NET_SOCKET_FAILED,
+ *                      POLARSSL_ERR_NET_BIND_FAILED,
+ *                      POLARSSL_ERR_NET_LISTEN_FAILED
  */
 int net_bind( int *fd, char *bind_ip, int port );
 
 /**
  * \brief          Accept a connection from a remote client
  *
- * \return         0 if successful, XYSSL_ERR_NET_ACCEPT_FAILED, or
- *                 XYSSL_ERR_NET_WOULD_BLOCK is bind_fd was set to
+ * \return         0 if successful, POLARSSL_ERR_NET_ACCEPT_FAILED, or
+ *                 POLARSSL_ERR_NET_WOULD_BLOCK is bind_fd was set to
  *                 non-blocking and accept() is blocking.
  */
 int net_accept( int bind_fd, int *client_fd, void *client_ip );
@@ -76,7 +76,7 @@
  *                 reflect the actual number of characters read.
  *
  * \return         This function returns the number of bytes received,
- *                 or a negative error code; XYSSL_ERR_NET_TRY_AGAIN
+ *                 or a negative error code; POLARSSL_ERR_NET_TRY_AGAIN
  *                 indicates read() is blocking.
  */
 int net_recv( void *ctx, unsigned char *buf, int len );
@@ -86,7 +86,7 @@
  *                 reflect the number of characters _not_ written.
  *
  * \return         This function returns the number of bytes sent,
- *                 or a negative error code; XYSSL_ERR_NET_TRY_AGAIN
+ *                 or a negative error code; POLARSSL_ERR_NET_TRY_AGAIN
  *                 indicates write() is blocking.
  */
 int net_send( void *ctx, unsigned char *buf, int len );
