}
raop_t *
-raop_init(raop_callbacks_t *callbacks, const char *pemkey, const char *hwaddr, int hwaddrlen)
+raop_init(raop_callbacks_t *callbacks, const char *pemkey)
{
raop_t *raop;
httpd_t *httpd;
assert(callbacks);
assert(pemkey);
- assert(hwaddr);
/* Initialize the network */
if (netutils_init() < 0) {
return NULL;
}
- /* Validate hardware address */
- if (hwaddrlen > MAX_HWADDR_LEN) {
- return NULL;
- }
-
/* Allocate the raop_t structure */
raop = calloc(1, sizeof(raop_t));
if (!raop) {
raop->httpd = httpd;
raop->rsakey = rsakey;
- /* Copy hwaddr to resulting structure */
- memcpy(raop->hwaddr, hwaddr, hwaddrlen);
- raop->hwaddrlen = hwaddrlen;
-
return raop;
}
raop_t *
-raop_init_from_keyfile(raop_callbacks_t *callbacks, const char *keyfile, const char *hwaddr, int hwaddrlen)
+raop_init_from_keyfile(raop_callbacks_t *callbacks, const char *keyfile)
{
raop_t *raop;
char *pemstr;
if (utils_read_file(&pemstr, keyfile) < 0) {
return NULL;
}
- raop = raop_init(callbacks, pemstr, hwaddr, hwaddrlen);
+ raop = raop_init(callbacks, pemstr);
free(pemstr);
return raop;
}
}
int
-raop_start(raop_t *raop, unsigned short *port)
+raop_start(raop_t *raop, unsigned short *port, const char *hwaddr, int hwaddrlen)
{
assert(raop);
assert(port);
+ assert(hwaddr);
+
+ /* Validate hardware address */
+ if (hwaddrlen > MAX_HWADDR_LEN) {
+ return -1;
+ }
+
+ /* Copy hwaddr to the raop structure */
+ memcpy(raop->hwaddr, hwaddr, hwaddrlen);
+ raop->hwaddrlen = hwaddrlen;
return httpd_start(raop->httpd, port);
}