strlist = avahi_string_list_add_printf(strlist, "sys=waMa=0,adVF=0x100");
for (volume = getvolumes(); volume; volume = volume->v_next, i++) {
+
if (convert_string(CH_UCS2, CH_UTF8_MAC, volume->v_name, -1, tmpname, 255) <= 0)
goto fail;
- LOG(log_debug, logtype_afpd, "Adding volume '%s'", volume->v_localname);
- strlist = avahi_string_list_add_printf(strlist, "dk%u=adVN=%s,adVF=0x01", i, tmpname);
+
+ if ((volume->v_flags & AFPVOL_TM) && volume->v_uuid) {
+ LOG(log_info, logtype_afpd, "Registering volume '%s' with UUID: '%s' for TimeMachine",
+ volume->v_localname, volume->v_uuid);
+ strlist = avahi_string_list_add_printf(strlist, "dk%u=adVN=%s,adVF=0xa1,adVU=%s",
+ i, tmpname, volume->v_uuid);
+ }
}
/* AFP server */
#define VOLOPT_EA_VFS 27 /* Extended Attributes vfs indirection */
#define VOLOPT_CNIDSERVER 28 /* CNID Server ip address*/
#define VOLOPT_CNIDPORT 30 /* CNID server tcp port */
+#define VOLOPT_UUID 31 /* CNID server tcp port */
-#define VOLOPT_MAX 31 /* <== IMPORTANT !!!!!! */
+#define VOLOPT_MAX 32 /* <== IMPORTANT !!!!!! */
#define VOLOPT_NUM (VOLOPT_MAX + 1)
#define VOLPASSLEN 8
} else if (optionok(tmp, "volsizelimit:", val)) {
options[VOLOPT_LIMITSIZE].i_value = (uint32_t)strtoul(val + 1, NULL, 10);
+ } else if (optionok(tmp, "uuid:", val)) {
+ setoption(options, save, VOLOPT_UUID, val);
+
} else {
/* ignore unknown options */
LOG(log_debug, logtype_afpd, "ignoring unknown volume option: %s", tmp);
if (options[VOLOPT_LIMITSIZE].i_value)
volume->v_limitsize = options[VOLOPT_LIMITSIZE].i_value;
+ if (options[VOLOPT_UUID].c_value)
+ volume->v_uuid = strdup(options[VOLOPT_UUID].c_value);
+
/* Mac to Unix conversion flags*/
volume->v_mtou_flags = 0;
if (!(volume->v_flags & AFPVOL_NOHEX))