ra_iface_conf
static struct ra_iface_conf *ra_iface_conf;
ra_iface_conf))
if ((ra_iface_conf = malloc(sizeof(struct
ra_iface_conf))) == NULL)
memcpy(ra_iface_conf, imsg.data,
sizeof(struct ra_iface_conf));
if (ra_iface_conf->name[IF_NAMESIZE - 1] != '\0')
ra_iface_conf->autoprefix = NULL;
SIMPLEQ_INIT(&ra_iface_conf->ra_prefix_list);
SIMPLEQ_INIT(&ra_iface_conf->ra_options.ra_rdnss_list);
SIMPLEQ_INIT(&ra_iface_conf->ra_options.ra_dnssl_list);
SIMPLEQ_INIT(&ra_iface_conf->ra_options.ra_pref64_list);
ra_iface_conf, entry);
ra_options = &ra_iface_conf->ra_options;
if ((ra_iface_conf->autoprefix = malloc(sizeof(struct
memcpy(ra_iface_conf->autoprefix, imsg.data,
SIMPLEQ_INSERT_TAIL(&ra_iface_conf->ra_prefix_list,
struct ra_iface_conf *ra_iface_conf;
ra_iface_conf = find_ra_iface_conf(&frontend_conf->ra_iface_list,
ra_options_conf = &ra_iface_conf->ra_options;
if (ra_iface_conf->ra_options.source_link_addr)
if (ra_iface_conf->ra_options.rdnss_count > 0)
ra_iface_conf->ra_options.rdnss_count *
if (ra_iface_conf->ra_options.dnssl_len > 0)
((ra_iface_conf->ra_options.dnssl_len + 7) & ~7);
SIMPLEQ_FOREACH(pref64, &ra_iface_conf->ra_options.ra_pref64_list,
if (ra_iface_conf->ra_options.source_link_addr) {
if (ra_iface_conf->ra_options.rdnss_count > 0) {
ra_iface_conf->ra_options.rdnss_count * 2;
htonl(ra_iface_conf->ra_options.rdns_lifetime);
&ra_iface_conf->ra_options.ra_rdnss_list, entry) {
if (ra_iface_conf->ra_options.dnssl_len > 0) {
((ra_iface_conf->ra_options.dnssl_len + 7) & ~7) / 8;
htonl(ra_iface_conf->ra_options.rdns_lifetime);
&ra_iface_conf->ra_options.ra_dnssl_list, entry) {
SIMPLEQ_FOREACH(pref64, &ra_iface_conf->ra_options.ra_pref64_list,
struct ra_iface_conf *find_ra_iface_conf(struct ra_iface_conf_head *,
static struct ra_iface_conf *ra_iface_conf;
ra_iface_conf))
if ((ra_iface_conf = malloc(sizeof(struct
ra_iface_conf))) == NULL)
memcpy(ra_iface_conf, imsg.data, sizeof(struct
ra_iface_conf));
if (ra_iface_conf->name[IF_NAMESIZE - 1] != '\0')
ra_iface_conf->autoprefix = NULL;
SIMPLEQ_INIT(&ra_iface_conf->ra_prefix_list);
SIMPLEQ_INIT(&ra_iface_conf->ra_options.ra_rdnss_list);
SIMPLEQ_INIT(&ra_iface_conf->ra_options.ra_dnssl_list);
SIMPLEQ_INIT(&ra_iface_conf->ra_options.ra_pref64_list);
ra_iface_conf, entry);
ra_options = &ra_iface_conf->ra_options;
if ((ra_iface_conf->autoprefix = malloc(sizeof(struct
memcpy(ra_iface_conf->autoprefix, imsg.data,
SIMPLEQ_INSERT_TAIL(&ra_iface_conf->ra_prefix_list,
struct ra_iface_conf*
struct ra_iface_conf *ra_iface_conf;
SIMPLEQ_FOREACH(ra_iface_conf, head, entry) {
if (strcmp(ra_iface_conf->name, if_name) == 0)
return ra_iface_conf;
struct ra_iface_conf *ra_iface_conf;
SIMPLEQ_FOREACH(ra_iface_conf, &frontend_conf->ra_iface_list, entry) {
conf_name = ra_iface_conf->name;
ra_iface_conf = find_ra_iface_conf(
SIMPLEQ_FOREACH(ra_prefix_conf, &ra_iface_conf->ra_prefix_list,
if (ra_iface_conf->autoprefix)
ra_iface_conf->autoprefix, ifap);
struct ra_iface_conf *conf_get_ra_iface(char *);
if (ra_iface_conf->autoprefix != NULL)
return (ra_iface_conf->autoprefix);
SIMPLEQ_FOREACH(prefix, &ra_iface_conf->ra_prefix_list, entry) {
ra_iface_conf->autoprefix = prefix;
SIMPLEQ_INSERT_TAIL(&ra_iface_conf->ra_prefix_list, prefix,
struct ra_iface_conf *
struct ra_iface_conf *iface;
struct ra_iface_conf *iface;
ra_iface_conf = conf_get_ra_iface($2);
ra_iface_conf->autoprefix = conf_get_ra_prefix(NULL, 0);
ra_options = &ra_iface_conf->ra_options;
ra_iface_conf = NULL;
free(ra_iface_conf->autoprefix);
ra_iface_conf->autoprefix = NULL;
if (ra_iface_conf->autoprefix == NULL)
ra_iface_conf->autoprefix =
ra_prefix_conf = ra_iface_conf->autoprefix;
struct ra_iface_conf *iface;
static struct ra_iface_conf *ra_iface_conf;
struct ra_iface_conf *iface;
struct ra_iface_conf *ra_iface_conf;
SIMPLEQ_FOREACH(ra_iface_conf, &xconf->ra_iface_list, entry) {
if (main_sendboth(IMSG_RECONF_RA_IFACE, ra_iface_conf,
sizeof(*ra_iface_conf)) == -1)
if (ra_iface_conf->autoprefix) {
ra_iface_conf->autoprefix,
sizeof(*ra_iface_conf->autoprefix)) == -1)
SIMPLEQ_FOREACH(ra_prefix_conf, &ra_iface_conf->ra_prefix_list,
&ra_iface_conf->ra_options.ra_rdnss_list, entry) {
&ra_iface_conf->ra_options.ra_dnssl_list, entry) {
&ra_iface_conf->ra_options.ra_pref64_list, entry) {
free_ra_iface_conf(struct ra_iface_conf *ra_iface_conf)
if (!ra_iface_conf)
free(ra_iface_conf->autoprefix);
while ((prefix = SIMPLEQ_FIRST(&ra_iface_conf->ra_prefix_list)) !=
SIMPLEQ_REMOVE_HEAD(&ra_iface_conf->ra_prefix_list, entry);
free_dns_options(&ra_iface_conf->ra_options);
SIMPLEQ_FIRST(&ra_iface_conf->ra_options.ra_pref64_list)) != NULL) {
SIMPLEQ_REMOVE_HEAD(&ra_iface_conf->ra_options.ra_pref64_list,
free(ra_iface_conf);
struct ra_iface_conf *ra_iface_conf;
while ((ra_iface_conf = SIMPLEQ_FIRST(&conf->ra_iface_list)) != NULL) {
free_ra_iface_conf(ra_iface_conf);
SIMPLEQ_ENTRY(ra_iface_conf) entry;
SIMPLEQ_HEAD(ra_iface_conf_head, ra_iface_conf) ra_iface_list;
void free_ra_iface_conf(struct ra_iface_conf *);