diff options
| -rw-r--r-- | include/sdp.h | 126 | ||||
| -rw-r--r-- | src/sdp.c | 160 | 
2 files changed, 179 insertions, 107 deletions
diff --git a/include/sdp.h b/include/sdp.h index 712e42e7..8f832ea6 100644 --- a/include/sdp.h +++ b/include/sdp.h @@ -54,26 +54,27 @@ extern "C" {   * Protocol UUIDs   */  #define SDP_UUID	0x0001 -#define RFCOMM_UUID	0x0003 -#define TCS_BIN_UUID	0x0005 -#define L2CAP_UUID	0x0100 -#define IP_UUID		0x0009  #define UDP_UUID	0x0002 +#define RFCOMM_UUID	0x0003  #define TCP_UUID	0x0004  #define TCS_BIN_UUID	0x0005  #define TCS_AT_UUID	0x0006  #define OBEX_UUID	0x0008 -#define FTP_UUID	0x000A -#define HTTP_UUID	0x000C -#define WSP_UUID	0x000E -#define BNEP_UUID	0x000F +#define IP_UUID		0x0009 +#define FTP_UUID	0x000a +#define HTTP_UUID	0x000c +#define WSP_UUID	0x000e +#define BNEP_UUID	0x000f +#define UPNP_UUID	0x0010  #define HIDP_UUID	0x0011  #define HCRP_CTRL_UUID	0x0012  #define HCRP_DATA_UUID	0x0014  #define HCRP_NOTE_UUID	0x0016  #define AVCTP_UUID	0x0017  #define AVDTP_UUID	0x0019 -#define CMTP_UUID	0x001B +#define CMTP_UUID	0x001b +#define UDI_UUID	0x001d +#define L2CAP_UUID	0x0100  /*   * Service class identifiers of standard services and service groups @@ -92,6 +93,10 @@ extern "C" {  #define CORDLESS_TELEPHONY_SVCLASS_ID	0x1109  #define AUDIO_SOURCE_SVCLASS_ID		0x110a  #define AUDIO_SINK_SVCLASS_ID		0x110b +#define AV_REMOTE_TARGET_SVCLASS_ID	0x110c +#define ADVANCED_AUDIO_SVCLASS_ID	0x110d +#define AV_REMOTE_SVCLASS_ID		0x110e +#define VIDEO_CONF_SVCLASS_ID		0x110f  #define INTERCOM_SVCLASS_ID		0x1110  #define FAX_SVCLASS_ID			0x1111  #define HEADSET_AGW_SVCLASS_ID		0x1112 @@ -100,21 +105,38 @@ extern "C" {  #define PANU_SVCLASS_ID			0x1115  #define NAP_SVCLASS_ID			0x1116  #define GN_SVCLASS_ID			0x1117 +#define DIRECT_PRINTING_SVCLASS_ID	0x1118 +#define REFERENCE_PRINTING_SVCLASS_ID	0x1119  #define IMAGING_SVCLASS_ID		0x111a  #define IMAGING_RESPONDER_SVCLASS_ID	0x111b +#define IMAGING_ARCHIVE_SVCLASS_ID	0x111c +#define IMAGING_REFOBJS_SVCLASS_ID	0x111d  #define HANDSFREE_SVCLASS_ID		0x111e -#define HANDSFREE_AUDIO_GW_SVCLASS_ID	0x111f +#define HANDSFREE_AGW_SVCLASS_ID	0x111f +#define DIRECT_PRT_REFOBJS_SVCLASS_ID	0x1120 +#define REFLECTED_UI_SVCLASS_ID		0x1121 +#define BASIC_PRINTING_SVCLASS_ID	0x1122 +#define PRINTING_STATUS_SVCLASS_ID	0x1123  #define HID_SVCLASS_ID			0x1124  #define HCR_SVCLASS_ID			0x1125  #define HCR_PRINT_SVCLASS_ID		0x1126  #define HCR_SCAN_SVCLASS_ID		0x1127  #define CIP_SVCLASS_ID			0x1128 +#define VIDEO_CONF_GW_SVCLASS_ID	0x1129 +#define UDI_MT_SVCLASS_ID		0x112a +#define UDI_TA_SVCLASS_ID		0x112b +#define AV_SVCLASS_ID			0x112c  #define SAP_SVCLASS_ID			0x112d  #define PNP_INFO_SVCLASS_ID		0x1200  #define GENERIC_NETWORKING_SVCLASS_ID	0x1201  #define GENERIC_FILETRANS_SVCLASS_ID	0x1202  #define GENERIC_AUDIO_SVCLASS_ID	0x1203  #define GENERIC_TELEPHONY_SVCLASS_ID	0x1204 +#define UPNP_SVCLASS_ID			0x1205 +#define UPNP_IP_SVCLASS_ID		0x1206 +#define UPNP_PAN_SVCLASS_ID		0x1300 +#define UPNP_LAP_SVCLASS_ID		0x1301 +#define UPNP_L2CAP_SVCLASS_ID		0x1302  #define VIDEO_SOURCE_SVCLASS_ID		0x1303  #define VIDEO_SINK_SVCLASS_ID		0x1304 @@ -122,31 +144,65 @@ extern "C" {   * Standard profile descriptor identifiers; note these   * may be identical to some of the service classes defined above   */ -#define SERIAL_PORT_PROFILE_ID		0x1101 -#define LAN_ACCESS_PROFILE_ID		0x1102 -#define DIALUP_NET_PROFILE_ID		0x1103 -#define IRMC_SYNC_PROFILE_ID		0x1104 -#define OBEX_OBJPUSH_PROFILE_ID		0x1105 -#define OBEX_FILETRANS_PROFILE_ID	0x1106 -#define IRMC_SYNC_CMD_PROFILE_ID	0x1107 -#define HEADSET_PROFILE_ID		0x1108 -#define CORDLESS_TELEPHONY_PROFILE_ID	0x1109 -#define ADVANCED_AUDIO_PROFILE_ID	0x110d -#define INTERCOM_PROFILE_ID		0x1110 -#define FAX_PROFILE_ID			0x1111 -#define HEADSET_AGW_PROFILE_ID		0x1112 -#define WAP_PROFILE_ID			0x1113 -#define WAP_CLIENT_PROFILE_ID		0x1114 -#define PANU_PROFILE_ID			0x1115 -#define NAP_PROFILE_ID			0x1116 -#define GN_PROFILE_ID			0x1117 -#define IMAGING_PROFILE_ID		0x111a -#define IMAGING_RESPONDER_PROFILE_ID	0x111b -#define HANDSFREE_PROFILE_ID		0x111e -#define HID_PROFILE_ID			0x1124 -#define HCR_PROFILE_ID			0x1125 -#define CIP_PROFILE_ID			0x1128 -#define SAP_PROFILE_ID			0x112d +#define SDP_SERVER_PROFILE_ID		SDP_SERVER_SVCLASS_ID +#define BROWSE_GRP_DESC_PROFILE_ID	BROWSE_GRP_DESC_SVCLASS_ID +#define SERIAL_PORT_PROFILE_ID		SERIAL_PORT_SVCLASS_ID +#define LAN_ACCESS_PROFILE_ID		LAN_ACCESS_SVCLASS_ID +#define DIALUP_NET_PROFILE_ID		DIALUP_NET_SVCLASS_ID +#define IRMC_SYNC_PROFILE_ID		IRMC_SYNC_SVCLASS_ID +#define OBEX_OBJPUSH_PROFILE_ID		OBEX_OBJPUSH_SVCLASS_ID +#define OBEX_FILETRANS_PROFILE_ID	OBEX_FILETRANS_SVCLASS_ID +#define IRMC_SYNC_CMD_PROFILE_ID	IRMC_SYNC_CMD_SVCLASS_ID +#define HEADSET_PROFILE_ID		HEADSET_SVCLASS_ID +#define CORDLESS_TELEPHONY_PROFILE_ID	CORDLESS_TELEPHONY_SVCLASS_ID +#define AUDIO_SOURCE_PROFILE_ID		AUDIO_SOURCE_SVCLASS_ID +#define AUDIO_SINK_PROFILE_ID		AUDIO_SINK_SVCLASS_ID +#define AV_REMOTE_TARGET_PROFILE_ID	AV_REMOTE_TARGET_SVCLASS_ID +#define ADVANCED_AUDIO_PROFILE_ID	ADVANCED_AUDIO_SVCLASS_ID +#define AV_REMOTE_PROFILE_ID		AV_REMOTE_SVCLASS_ID +#define VIDEO_CONF_PROFILE_ID		VIDEO_CONF_SVCLASS_ID +#define INTERCOM_PROFILE_ID		INTERCOM_SVCLASS_ID +#define FAX_PROFILE_ID			FAX_SVCLASS_ID +#define HEADSET_AGW_PROFILE_ID		HEADSET_AGW_SVCLASS_ID +#define WAP_PROFILE_ID			WAP_SVCLASS_ID +#define WAP_CLIENT_PROFILE_ID		WAP_CLIENT_SVCLASS_ID +#define PANU_PROFILE_ID			PANU_SVCLASS_ID +#define NAP_PROFILE_ID			NAP_SVCLASS_ID +#define GN_PROFILE_ID			GN_SVCLASS_ID +#define DIRECT_PRINTING_PROFILE_ID	DIRECT_PRINTING_SVCLASS_ID +#define REFERENCE_PRINTING_PROFILE_ID	REFERENCE_PRINTING_SVCLASS_ID +#define IMAGING_PROFILE_ID		IMAGING_SVCLASS_ID +#define IMAGING_RESPONDER_PROFILE_ID	IMAGING_RESPONDER_SVCLASS_ID +#define IMAGING_ARCHIVE_PROFILE_ID	IMAGING_ARCHIVE_SVCLASS_ID +#define IMAGING_REFOBJS_PROFILE_ID	IMAGING_REFOBJS_SVCLASS_ID +#define HANDSFREE_PROFILE_ID		HANDSFREE_SVCLASS_ID +#define HANDSFREE_AGW_PROFILE_ID	HANDSFREE_AGW_SVCLASS_ID +#define DIRECT_PRT_REFOBJS_PROFILE_ID	DIRECT_PRT_REFOBJS_SVCLASS_ID +#define REFLECTED_UI_PROFILE_ID		REFLECTED_UI_SVCLASS_ID +#define BASIC_PRINTING_PROFILE_ID	BASIC_PRINTING_SVCLASS_ID +#define PRINTING_STATUS_PROFILE_ID	PRINTING_STATUS_SVCLASS_ID +#define HID_PROFILE_ID			HID_SVCLASS_ID +#define HCR_PROFILE_ID			HCR_SCAN_SVCLASS_ID +#define HCR_PRINT_PROFILE_ID		HCR_PRINT_SVCLASS_ID +#define HCR_SCAN_PROFILE_ID		HCR_SCAN_SVCLASS_ID +#define CIP_PROFILE_ID			CIP_SVCLASS_ID +#define VIDEO_CONF_GW_PROFILE_ID	VIDEO_CONF_GW_SVCLASS_ID +#define UDI_MT_PROFILE_ID		UDI_MT_SVCLASS_ID +#define UDI_TA_PROFILE_ID		UDI_TA_SVCLASS_ID +#define AV_PROFILE_ID			AV_SVCLASS_ID +#define SAP_PROFILE_ID			SAP_SVCLASS_ID +#define PNP_INFO_PROFILE_ID		PNP_INFO_SVCLASS_ID +#define GENERIC_NETWORKING_PROFILE_ID	GENERIC_NETWORKING_SVCLASS_ID +#define GENERIC_FILETRANS_PROFILE_ID	GENERIC_FILETRANS_SVCLASS_ID +#define GENERIC_AUDIO_PROFILE_ID	GENERIC_AUDIO_SVCLASS_ID +#define GENERIC_TELEPHONY_PROFILE_ID	GENERIC_TELEPHONY_SVCLASS_ID +#define UPNP_PROFILE_ID			UPNP_SVCLASS_ID +#define UPNP_IP_PROFILE_ID		UPNP_IP_SVCLASS_ID +#define UPNP_PAN_PROFILE_ID		UPNP_PAN_SVCLASS_ID +#define UPNP_LAP_PROFILE_ID		UPNP_LAP_SVCLASS_ID +#define UPNP_L2CAP_PROFILE_ID		UPNP_L2CAP_SVCLASS_ID +#define VIDEO_SOURCE_PROFILE_ID		VIDEO_SOURCE_SVCLASS_ID +#define VIDEO_SINK_PROFILE_ID		VIDEO_SINK_SVCLASS_ID  /*   * Attribute identifier codes @@ -60,91 +60,105 @@ struct tupla {  };  static struct tupla Protocol[] = { -	{ SDP_UUID,     "SDP"     }, -	{ RFCOMM_UUID,  "RFCOMM"  }, -	{ TCS_BIN_UUID, "TCS-BIN" }, -	{ L2CAP_UUID,   "L2CAP"   }, -	{ IP_UUID,      "IP"      }, -	{ UDP_UUID,     "UDP"     }, -	{ TCP_UUID,     "TCP"     }, -	{ TCS_AT_UUID,  "TCS-AT"  }, -	{ OBEX_UUID,    "OBEX"    }, -	{ FTP_UUID,     "FTP"     }, -	{ HTTP_UUID,    "HTTP"    }, -	{ WSP_UUID,     "WSP"     }, -	{ BNEP_UUID,    "BNEP"    }, -	{ HIDP_UUID,    "HIDP"    }, -	{ AVCTP_UUID,   "AVCTP"   }, -	{ AVDTP_UUID,   "AVDTP"   }, -	{ CMTP_UUID,    "CMTP"    }, +	{ SDP_UUID,		"SDP"		}, +	{ UDP_UUID,		"UDP"		}, +	{ RFCOMM_UUID,		"RFCOMM"	}, +	{ TCP_UUID,		"TCP"		}, +	{ TCS_BIN_UUID,		"TCS-BIN"	}, +	{ TCS_AT_UUID,		"TCS-AT"	}, +	{ OBEX_UUID,		"OBEX"		}, +	{ IP_UUID,		"IP"		}, +	{ FTP_UUID,		"FTP"		}, +	{ HTTP_UUID,		"HTTP"		}, +	{ WSP_UUID,		"WSP"		}, +	{ BNEP_UUID,		"BNEP"		}, +	{ UPNP_UUID,		"UPNP"		}, +	{ HIDP_UUID,		"HIDP"		}, +	{ HCRP_CTRL_UUID,	"HCRP-Ctrl"	}, +	{ HCRP_DATA_UUID,	"HCRP-Data"	}, +	{ HCRP_NOTE_UUID,	"HCRP-Notify"	}, +	{ AVCTP_UUID,		"AVCTP"		}, +	{ AVDTP_UUID,		"AVDTP"		}, +	{ CMTP_UUID,		"CMTP"		}, +	{ UDI_UUID,		"UDI"		}, +	{ L2CAP_UUID,		"L2CAP"		},  	{ 0 }  };  static struct tupla ServiceClass[] = { -	{ SDP_SERVER_SVCLASS_ID,        "SDP Server" }, -	{ BROWSE_GRP_DESC_SVCLASS_ID,   "Browse Group Descriptor" }, -	{ PUBLIC_BROWSE_GROUP,          "Public Browse Group" }, -	{ SERIAL_PORT_SVCLASS_ID,       "Serial Port" }, -	{ LAN_ACCESS_SVCLASS_ID,        "LAN Access Using PPP" }, -	{ DIALUP_NET_SVCLASS_ID,        "Dialup Networking" }, -	{ IRMC_SYNC_SVCLASS_ID,	        "IrMCSync" }, -	{ OBEX_OBJPUSH_SVCLASS_ID,      "OBEX Object Push" }, -	{ OBEX_FILETRANS_SVCLASS_ID,    "OBEX File Transfer" }, -	{ IRMC_SYNC_CMD_SVCLASS_ID,     "IrMCSync Command" }, -	{ HEADSET_SVCLASS_ID,           "Headset" }, -	{ CORDLESS_TELEPHONY_SVCLASS_ID,"Cordless Telephony" }, -	{ AUDIO_SOURCE_SVCLASS_ID,      "Audio Source" }, -	{ AUDIO_SINK_SVCLASS_ID,        "Audio Sink" }, -	{ INTERCOM_SVCLASS_ID,          "Intercom" }, -	{ FAX_SVCLASS_ID,               "Fax" }, -	{ HEADSET_AGW_SVCLASS_ID,       "Headset Audio Gateway" }, -	{ WAP_SVCLASS_ID,               "WAP" }, -	{ WAP_CLIENT_SVCLASS_ID,        "WAP Client" }, -	{ PNP_INFO_SVCLASS_ID,          "PnP Information" }, -	{ GENERIC_NETWORKING_SVCLASS_ID,"Generic Networking" }, -	{ GENERIC_FILETRANS_SVCLASS_ID, "Generic File Transfer" }, -	{ GENERIC_AUDIO_SVCLASS_ID,     "Generic Audio" }, -	{ GENERIC_TELEPHONY_SVCLASS_ID, "Generic Telephony" }, -	{ PANU_SVCLASS_ID,              "PAN user" }, -	{ NAP_SVCLASS_ID,               "Network access point" }, -	{ GN_SVCLASS_ID,                "PAN group network" }, -	{ HID_SVCLASS_ID,               "Human Interface Device" }, -	{ CIP_SVCLASS_ID,               "Common ISDN Access" }, -	{ SAP_SVCLASS_ID,               "SIM Access" }, +	{ SDP_SERVER_SVCLASS_ID,		"SDP Server"			}, +	{ BROWSE_GRP_DESC_SVCLASS_ID,		"Browse Group Descriptor"	}, +	{ PUBLIC_BROWSE_GROUP,			"Public Browse Group"		}, +	{ SERIAL_PORT_SVCLASS_ID,		"Serial Port"			}, +	{ LAN_ACCESS_SVCLASS_ID,		"LAN Access Using PPP"		}, +	{ DIALUP_NET_SVCLASS_ID,		"Dialup Networking"		}, +	{ IRMC_SYNC_SVCLASS_ID,			"IrMC Sync"			}, +	{ OBEX_OBJPUSH_SVCLASS_ID,		"OBEX Object Push"		}, +	{ OBEX_FILETRANS_SVCLASS_ID,		"OBEX File Transfer"		}, +	{ IRMC_SYNC_CMD_SVCLASS_ID,		"IrMC Sync Command"		}, +	{ HEADSET_SVCLASS_ID,			"Headset"			}, +	{ CORDLESS_TELEPHONY_SVCLASS_ID,	"Cordless Telephony"		}, +	{ AUDIO_SOURCE_SVCLASS_ID,		"Audio Source"			}, +	{ AUDIO_SINK_SVCLASS_ID,		"Audio Sink"			}, +	{ AV_REMOTE_TARGET_SVCLASS_ID,		"AV Remote Target"		}, +	{ ADVANCED_AUDIO_SVCLASS_ID,		"Advanced Audio"		}, +	{ AV_REMOTE_SVCLASS_ID,			"AV Remote"			}, +	{ VIDEO_CONF_SVCLASS_ID,		"Video Conferencing"		}, +	{ INTERCOM_SVCLASS_ID,			"Intercom"			}, +	{ FAX_SVCLASS_ID,			"Fax"				}, +	{ HEADSET_AGW_SVCLASS_ID,		"Headset Audio Gateway"		}, +	{ WAP_SVCLASS_ID,			"WAP"				}, +	{ WAP_CLIENT_SVCLASS_ID,		"WAP Client"			}, +	{ PANU_SVCLASS_ID,			"PAN User"			}, +	{ NAP_SVCLASS_ID,			"Network Access Point"		}, +	{ GN_SVCLASS_ID,			"PAN Group Network"		}, +	{ DIRECT_PRINTING_SVCLASS_ID,		"Direct Printing"		}, +	{ REFERENCE_PRINTING_SVCLASS_ID,	"Reference Printing"		}, +	{ IMAGING_SVCLASS_ID,			"Imaging"			}, +	{ IMAGING_RESPONDER_SVCLASS_ID,		"Imaging Responder"		}, +	{ IMAGING_ARCHIVE_SVCLASS_ID,		"Imaging Automatic Archive"	}, +	{ IMAGING_REFOBJS_SVCLASS_ID,		"Imaging Referenced Objects"	}, +	{ HANDSFREE_SVCLASS_ID,			"Handsfree"			}, +	{ HANDSFREE_AGW_SVCLASS_ID,		"Handfree Audio Gateway"	}, +	{ DIRECT_PRT_REFOBJS_SVCLASS_ID,	"Direct Printing Ref. Objects"	}, +	{ REFLECTED_UI_SVCLASS_ID,		"Reflected UI"			}, +	{ BASIC_PRINTING_SVCLASS_ID,		"Basic Printing"		}, +	{ PRINTING_STATUS_SVCLASS_ID,		"Printing Status"		}, +	{ HID_SVCLASS_ID,			"Human Interface Device"	}, +	{ HCR_SVCLASS_ID,			"Hardcopy Cable Replacement"	}, +	{ HCR_PRINT_SVCLASS_ID,			"HCR Print"			}, +	{ HCR_SCAN_SVCLASS_ID,			"HCR Scan"			}, +	{ CIP_SVCLASS_ID,			"Common ISDN Access"		}, +	{ VIDEO_CONF_GW_SVCLASS_ID,		"Video Conferencing Gateway"	}, +	{ UDI_MT_SVCLASS_ID,			"UDI MT"			}, +	{ UDI_TA_SVCLASS_ID,			"UDI TA"			}, +	{ AV_SVCLASS_ID,			"Audio/Video"			}, +	{ SAP_SVCLASS_ID,			"SIM Access"			}, +	{ PNP_INFO_SVCLASS_ID,			"PnP Information"		}, +	{ GENERIC_NETWORKING_SVCLASS_ID,	"Generic Networking"		}, +	{ GENERIC_FILETRANS_SVCLASS_ID,		"Generic File Transfer"		}, +	{ GENERIC_AUDIO_SVCLASS_ID,		"Generic Audio"			}, +	{ GENERIC_TELEPHONY_SVCLASS_ID,		"Generic Telephony"		}, +	{ UPNP_SVCLASS_ID,			"UPnP"				}, +	{ UPNP_IP_SVCLASS_ID,			"UPnP IP"			}, +	{ UPNP_PAN_SVCLASS_ID,			"UPnP PAN"			}, +	{ UPNP_LAP_SVCLASS_ID,			"UPnP LAP"			}, +	{ UPNP_L2CAP_SVCLASS_ID,		"UPnP L2CAP"			}, +	{ VIDEO_SOURCE_SVCLASS_ID,		"Video Source"			}, +	{ VIDEO_SINK_SVCLASS_ID,		"Video Sink"			},  	{ 0 }  }; -static struct tupla Profile[] = { -	{ SERIAL_PORT_PROFILE_ID,        "Serial Port" }, -	{ LAN_ACCESS_PROFILE_ID,         "LAN Access Using PPP" }, -	{ DIALUP_NET_PROFILE_ID,         "Dialup Networking" }, -	{ IRMC_SYNC_PROFILE_ID,          "IrMCSync" }, -	{ OBEX_OBJPUSH_PROFILE_ID,       "OBEX Object Push" }, -	{ OBEX_FILETRANS_PROFILE_ID,     "OBEX File Transfer" }, -	{ IRMC_SYNC_CMD_PROFILE_ID,      "IrMCSync Command" }, -	{ HEADSET_PROFILE_ID,            "Headset" }, -	{ CORDLESS_TELEPHONY_PROFILE_ID, "Cordless Telephony" }, -	{ ADVANCED_AUDIO_PROFILE_ID,     "Advanced Audio" }, -	{ INTERCOM_PROFILE_ID,           "Intercom" }, -	{ FAX_PROFILE_ID,                "Fax" }, -	{ HEADSET_AGW_PROFILE_ID,        "Headset Audio Gateway" }, -	{ WAP_PROFILE_ID,                "WAP" }, -	{ WAP_CLIENT_PROFILE_ID,         "WAP Client" }, -	{ PANU_PROFILE_ID,               "PAN user" }, -	{ NAP_PROFILE_ID,                "PAN access point" }, -	{ GN_PROFILE_ID,                 "PAN group network" }, -	{ HID_PROFILE_ID,                "Human Interface Device" }, -	{ CIP_PROFILE_ID,                "Common ISDN Access" }, -	{ SAP_PROFILE_ID,                "SIM Access" }, -	{ 0 } -}; +#define Profile ServiceClass  static char *string_lookup(struct tupla *pt0, int index)  {  	struct tupla *pt; +  	for (pt = pt0; pt->index; pt++) -		if (pt->index == index)  +		if (pt->index == index)  			return pt->str; +  	return "";  } @@ -160,6 +174,7 @@ static int uuid2str(struct tupla *message, const uuid_t *uuid, char *str, size_t  		snprintf(str, n, "NULL");  		return -2;  	} +  	switch (uuid->type) {  	case SDP_UUID16:  		str2 = string_lookup(message, uuid->value.uuid16); @@ -175,6 +190,7 @@ static int uuid2str(struct tupla *message, const uuid_t *uuid, char *str, size_t  		snprintf(str, n, "Type of UUID (%x) unknown.", uuid->type);  		return -1;  	} +  	return 0;  }  | 
