Signed-off-by: Eugene Crosser <evgenii.cherkashin@profitbricks.com>
#include <stdlib.h>
#include <stdbool.h>
#include <stdlib.h>
#include <stdbool.h>
typedef struct _psmb_ctx psmb_ctx_t;
typedef struct _psmb_result psmb_result_t;
typedef struct _psmb_ctx psmb_ctx_t;
typedef struct _psmb_result psmb_result_t;
void *log_priv);
psmb_result_t psmb_set_pmtu(psmb_ctx_t *ctx, unsigned int pmtu);
psmb_result_t psmb_set_port(psmb_ctx_t *ctx, unsigned short pmtu);
void *log_priv);
psmb_result_t psmb_set_pmtu(psmb_ctx_t *ctx, unsigned int pmtu);
psmb_result_t psmb_set_port(psmb_ctx_t *ctx, unsigned short pmtu);
-psmb_result_t psmb_set_mgrp(psmb_ctx_t *ctx, struct {unsigned char _uc[16];} pfx, unsigned char bits);
+psmb_result_t psmb_set_mgrp(psmb_ctx_t *ctx, struct in6_addr prefix,
+ unsigned char prefixlen);
psmb_result_t psmb_open(psmb_ctx_t *ctx);
void psmb_destroy(psmb_ctx_t *ctx);
int psmb_getfd(psmb_ctx_t *ctx);
psmb_result_t psmb_open(psmb_ctx_t *ctx);
void psmb_destroy(psmb_ctx_t *ctx);
int psmb_getfd(psmb_ctx_t *ctx);
void *log_priv;
unsigned short port;
int pmtu;
void *log_priv;
unsigned short port;
int pmtu;
+ struct in6_addr prefix;
+ unsigned char prefixlen;
/* subscription set here */
struct _msg incoming;
};
/* subscription set here */
struct _msg incoming;
};
+psmb_result_t psmb_set_mgrp(psmb_ctx_t *ctx, struct in6_addr prefix,
+ unsigned char prefixlen)
+{
+ if (ctx->fd == -1) {
+ ctx->prefix = prefix;
+ ctx->prefixlen = prefixlen;
+ return (psmb_result_t){PSMB_OK};
+ } else {
+ errno = EBUSY;
+ return (psmb_result_t){PSMB_ERROR};
+ }
+}
+
psmb_result_t psmb_open(psmb_ctx_t *ctx)
{
unsigned long on = 1;
psmb_result_t psmb_open(psmb_ctx_t *ctx)
{
unsigned long on = 1;