#define MAX_SERVNAME 256
struct dnssd_s {
- char hwaddr[MAX_HWADDR_LEN];
- int hwaddrlen;
-
NSNetService *raopService;
NSNetService *airplayService;
};
dnssd_t *
-dnssd_init(const char *hwaddr, int hwaddrlen, int *error)
+dnssd_init(int *error)
{
dnssd_t *dnssd;
if (error) *error = DNSSD_ERROR_NOERROR;
- if (hwaddrlen > MAX_HWADDR_LEN) {
- if (error) *error = DNSSD_ERROR_HWADDRLEN;
- return NULL;
- }
dnssd = calloc(1, sizeof(dnssd_t));
if (!dnssd) {
if (error) *error = DNSSD_ERROR_OUTOFMEM;
return NULL;
}
- memcpy(dnssd->hwaddr, hwaddr, hwaddrlen);
- dnssd->hwaddrlen = hwaddrlen;
-
return dnssd;
}
}
int
-dnssd_register_raop(dnssd_t *dnssd, const char *name, unsigned short port)
+dnssd_register_raop(dnssd_t *dnssd, const char *name, unsigned short port, const char *hwaddr, int hwaddrlen, int password)
{
char hwaddrstr[MAX_SERVNAME];
NSString *serviceString;
}
/* Convert the hardware address to string */
- ret = utils_hwaddr_raop(hwaddrstr, sizeof(hwaddrstr), dnssd->hwaddr, dnssd->hwaddrlen);
+ ret = utils_hwaddr_raop(hwaddrstr, sizeof(hwaddrstr), hwaddr, hwaddrlen);
if (ret < 0) {
return -2;
}
[txtDict setValue:[NSString stringWithUTF8String:RAOP_DA] forKey:@"da"];
[txtDict setValue:[NSString stringWithUTF8String:RAOP_SR] forKey:@"sr"];
[txtDict setValue:[NSString stringWithUTF8String:RAOP_SS] forKey:@"ss"];
- [txtDict setValue:[NSString stringWithUTF8String:RAOP_PW] forKey:@"pw"];
+ if (password) {
+ [txtDict setValue:@"true" forKey:@"pw"];
+ } else {
+ [txtDict setValue:@"false" forKey:@"pw"];
+ }
[txtDict setValue:[NSString stringWithUTF8String:RAOP_VN] forKey:@"vn"];
[txtDict setValue:[NSString stringWithUTF8String:RAOP_TP] forKey:@"tp"];
[txtDict setValue:[NSString stringWithUTF8String:RAOP_MD] forKey:@"md"];
}
int
-dnssd_register_airplay(dnssd_t *dnssd, const char *name, unsigned short port)
+dnssd_register_airplay(dnssd_t *dnssd, const char *name, unsigned short port, const char *hwaddr, int hwaddrlen)
{
NSMutableDictionary *txtDict;
NSData *txtData;
}
/* Convert hardware address to string */
- ret = utils_hwaddr_airplay(deviceid, sizeof(deviceid), dnssd->hwaddr, dnssd->hwaddrlen);
+ ret = utils_hwaddr_airplay(deviceid, sizeof(deviceid), hwaddr, hwaddrlen);
if (ret < 0) {
return -2;
}