*
* The protocol works like this. Messages begin with a request code which is
* a single @unsigned int@. The server sends a request @PS_TUNRQ@ to the
- * helper, followed by a @const tunnel_ops *@ referring to the tunnel driver
- * of interest. The server responds with a sequence of @PS_TRACE@ and/or
- * @PS_WARN@ messages, followed by either a @PS_TUNFD@ carrying a file
- * descriptor, or a @PS_TUNERR@ followed by an integer @errno@ code.
+ * helper, followed by a strin naming the tunnel driver of interest. The
+ * server responds with a sequence of @PS_TRACE@ and/or @PS_WARN@ messages,
+ * followed by either a @PS_TUNFD@ carrying a file descriptor, or a
+ * @PS_TUNERR@ followed by an integer @errno@ code.
+ *
+ * Simple data items are sent as native representations. A string is sent as
+ * a @size_t@ giving the string's length in bytes followed by that many
+ * characters. There is no padding for alignment.
*
* If all else fails, the helper process will just quit.
*/
enum {
- PS_TUNRQ, /* Request (@tunnel_ops *@) */
- PS_TUNFD, /* Tunnel descriptor (string) */
+ PS_TUNRQ, /* Request (string) */
+ PS_TUNFD, /* Tunnel descriptor (nothing) */
PS_TUNERR, /* Error (@int errno@) */
#ifndef NTRACE
PS_TRACE, /* Trace (@unsigned mask@, string) */
_(uint, unsigned int) \
_(sz, size_t)
-/* --- @put@ --- *
+/* --- @pc_put@ --- *
*
* Arguments: @const void *p@ = pointer to buffer
* @size_t sz@ = size of the buffer
extern int pc_put(const void */*p*/, size_t /*sz*/);
-/* --- @puterr@, @putuint@, @putsz@, @puttops@ --- *
+/* --- @pc_puterr@, @pc_putuint@, @pc_putsz@ --- *
*
* Arguments: @int err@ = error number to write
* @uint u@ = unsigned integer to write
* @size_t sz@ = size to write
- * @const tunnel_ops *tops@ = tunnel pointer to write
*
* Returns: Zero on success, @-1@ on error (and @errno@ set).
*
- * Use: Sends an error/integer/size/tunnel-ops pointer.
+ * Use: Sends an error/integer/size.
*/
#define DECL(abbr, type) extern int pc_put##abbr(type /*x*/);
COMM_TYPES(DECL)
#undef DECL
-/* --- @putstring@ --- *
+/* --- @pc_putstring@ --- *
*
* Arguments: @const char *s@ = pointer to string to write
*
* Returns: Zero on success, @-1@ on error (and @errno@ set).
*
- * Use: Sends a string/error/integer/tunnel-ops pointer.
+ * Use: Sends a string.
*/
extern int pc_putstring(const char */*s*/);
-/* --- @get@ --- *
+/* --- @pc_get@ --- *
*
* Arguments: @void *p@ = pointer to buffer
* @size_t sz@ = size of the buffer
extern int pc_get(void */*p*/, size_t /*sz*/);
-/* --- @geterr@, @getuint@, @getsz@, @getops@ --- *
+/* --- @pc_geterr@, @pc_getuint@, @pc_getsz@ --- *
*
* Arguments: @int *err@ = where to put the error number
* @uint *u@ = where to put the unsigned integer
* @size_t *sz@ = where to put the size
- * @const tunnel_ops **tops@ = where to put the tunnel pointer
*
* Returns: Zero on success, @-1@ on error (and @errno@ set).
*
- * Use: Receives an error/integer/size/tunnel-ops pointer.
+ * Use: Receives an error/integer/size.
*/
#define DECL(abbr, type) extern int pc_get##abbr(type */*x*/);
COMM_TYPES(DECL)
#undef DECL
-/* --- @gettring@ --- *
+/* --- @pc_getstring@ --- *
*
* Arguments: @dstr *d@ = where to put the string
*