Message ID | 1453451811-11860-3-git-send-email-zhang.zhanghailiang@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 01/22/2016 04:36 PM, zhanghailiang wrote: > With this property, users can control if this filter is 'enable' > or 'disable'. The default behavior for filter is enabled. > > Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com> Let's squash patch 3 into this for a complete implementation of 'status'. > --- > include/net/filter.h | 1 + > net/filter.c | 36 ++++++++++++++++++++++++++++++++++++ > 2 files changed, 37 insertions(+) > > diff --git a/include/net/filter.h b/include/net/filter.h > index 8a20138..9ed5ec6 100644 > --- a/include/net/filter.h > +++ b/include/net/filter.h > @@ -55,6 +55,7 @@ struct NetFilterState { > char *netdev_id; > NetClientState *netdev; > NetFilterDirection direction; > + bool enabled; > QTAILQ_ENTRY(NetFilterState) next; > }; > > diff --git a/net/filter.c b/net/filter.c > index 40254bd..f4933cc 100644 > --- a/net/filter.c > +++ b/net/filter.c > @@ -117,8 +117,41 @@ static void netfilter_set_direction(Object *obj, int direction, Error **errp) > nf->direction = direction; > } > > +static char *netfilter_get_status(Object *obj, Error **errp) > +{ > + NetFilterState *nf = NETFILTER(obj); > + > + if (nf->enabled) { > + return g_strdup("enable"); > + } else { > + return g_strdup("disable"); > + } > +} > + > +static void netfilter_set_status(Object *obj, const char *str, Error **errp) > +{ > + NetFilterState *nf = NETFILTER(obj); > + > + if (!strcmp(str, "enable")) { > + nf->enabled = true; > + } else if (!strcmp(str, "disable")) { > + nf->enabled = false; > + } else { > + error_setg(errp, "Invalid value for netfilter status, " > + "should be 'enable' or 'disable'"); > + } > +} > + > static void netfilter_init(Object *obj) > { > + NetFilterState *nf = NETFILTER(obj); > + > + /* > + * If not configured with 'status' property, the default status > + * for netfilter will be enabled. > + */ > + nf->enabled = true; > + > object_property_add_str(obj, "netdev", > netfilter_get_netdev_id, netfilter_set_netdev_id, > NULL); > @@ -126,6 +159,9 @@ static void netfilter_init(Object *obj) > NetFilterDirection_lookup, > netfilter_get_direction, netfilter_set_direction, > NULL); > + object_property_add_str(obj, "status", > + netfilter_get_status, netfilter_set_status, > + NULL); > } > > void netfilter_print_info(NetFilterState *nf, char *output_str, int size)
On 2016/1/25 13:05, Jason Wang wrote: > > > On 01/22/2016 04:36 PM, zhanghailiang wrote: >> With this property, users can control if this filter is 'enable' >> or 'disable'. The default behavior for filter is enabled. >> >> Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com> > > Let's squash patch 3 into this for a complete implementation of 'status'. > OK, will do that, thanks. >> --- >> include/net/filter.h | 1 + >> net/filter.c | 36 ++++++++++++++++++++++++++++++++++++ >> 2 files changed, 37 insertions(+) >> >> diff --git a/include/net/filter.h b/include/net/filter.h >> index 8a20138..9ed5ec6 100644 >> --- a/include/net/filter.h >> +++ b/include/net/filter.h >> @@ -55,6 +55,7 @@ struct NetFilterState { >> char *netdev_id; >> NetClientState *netdev; >> NetFilterDirection direction; >> + bool enabled; >> QTAILQ_ENTRY(NetFilterState) next; >> }; >> >> diff --git a/net/filter.c b/net/filter.c >> index 40254bd..f4933cc 100644 >> --- a/net/filter.c >> +++ b/net/filter.c >> @@ -117,8 +117,41 @@ static void netfilter_set_direction(Object *obj, int direction, Error **errp) >> nf->direction = direction; >> } >> >> +static char *netfilter_get_status(Object *obj, Error **errp) >> +{ >> + NetFilterState *nf = NETFILTER(obj); >> + >> + if (nf->enabled) { >> + return g_strdup("enable"); >> + } else { >> + return g_strdup("disable"); >> + } >> +} >> + >> +static void netfilter_set_status(Object *obj, const char *str, Error **errp) >> +{ >> + NetFilterState *nf = NETFILTER(obj); >> + >> + if (!strcmp(str, "enable")) { >> + nf->enabled = true; >> + } else if (!strcmp(str, "disable")) { >> + nf->enabled = false; >> + } else { >> + error_setg(errp, "Invalid value for netfilter status, " >> + "should be 'enable' or 'disable'"); >> + } >> +} >> + >> static void netfilter_init(Object *obj) >> { >> + NetFilterState *nf = NETFILTER(obj); >> + >> + /* >> + * If not configured with 'status' property, the default status >> + * for netfilter will be enabled. >> + */ >> + nf->enabled = true; >> + >> object_property_add_str(obj, "netdev", >> netfilter_get_netdev_id, netfilter_set_netdev_id, >> NULL); >> @@ -126,6 +159,9 @@ static void netfilter_init(Object *obj) >> NetFilterDirection_lookup, >> netfilter_get_direction, netfilter_set_direction, >> NULL); >> + object_property_add_str(obj, "status", >> + netfilter_get_status, netfilter_set_status, >> + NULL); >> } >> >> void netfilter_print_info(NetFilterState *nf, char *output_str, int size) > > > . >
diff --git a/include/net/filter.h b/include/net/filter.h index 8a20138..9ed5ec6 100644 --- a/include/net/filter.h +++ b/include/net/filter.h @@ -55,6 +55,7 @@ struct NetFilterState { char *netdev_id; NetClientState *netdev; NetFilterDirection direction; + bool enabled; QTAILQ_ENTRY(NetFilterState) next; }; diff --git a/net/filter.c b/net/filter.c index 40254bd..f4933cc 100644 --- a/net/filter.c +++ b/net/filter.c @@ -117,8 +117,41 @@ static void netfilter_set_direction(Object *obj, int direction, Error **errp) nf->direction = direction; } +static char *netfilter_get_status(Object *obj, Error **errp) +{ + NetFilterState *nf = NETFILTER(obj); + + if (nf->enabled) { + return g_strdup("enable"); + } else { + return g_strdup("disable"); + } +} + +static void netfilter_set_status(Object *obj, const char *str, Error **errp) +{ + NetFilterState *nf = NETFILTER(obj); + + if (!strcmp(str, "enable")) { + nf->enabled = true; + } else if (!strcmp(str, "disable")) { + nf->enabled = false; + } else { + error_setg(errp, "Invalid value for netfilter status, " + "should be 'enable' or 'disable'"); + } +} + static void netfilter_init(Object *obj) { + NetFilterState *nf = NETFILTER(obj); + + /* + * If not configured with 'status' property, the default status + * for netfilter will be enabled. + */ + nf->enabled = true; + object_property_add_str(obj, "netdev", netfilter_get_netdev_id, netfilter_set_netdev_id, NULL); @@ -126,6 +159,9 @@ static void netfilter_init(Object *obj) NetFilterDirection_lookup, netfilter_get_direction, netfilter_set_direction, NULL); + object_property_add_str(obj, "status", + netfilter_get_status, netfilter_set_status, + NULL); } void netfilter_print_info(NetFilterState *nf, char *output_str, int size)
With this property, users can control if this filter is 'enable' or 'disable'. The default behavior for filter is enabled. Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com> --- include/net/filter.h | 1 + net/filter.c | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+)