Message ID | 1466472188-3288-10-git-send-email-vsairam@vmware.com |
---|---|
State | Superseded |
Headers | show |
Hi Sai! Please see my comments inline. Besides that it looks good to me. Thanks, Paul > -----Original Message----- > From: dev [mailto:dev-bounces@openvswitch.org] On Behalf Of Sairam > Venugopal > Sent: Tuesday, June 21, 2016 4:23 AM > To: dev@openvswitch.org > Subject: [ovs-dev] [PATCH 9/9] datapath-windows: Add support for > Conntrack IPCTNL_MSG_CT_GET cmd in Datapath.c > > This will be used by userspace for dumping conntrack entries - "ovs-dpctl > dump-conntrack". > > Signed-off-by: Sairam Venugopal <vsairam@vmware.com> > --- > datapath-windows/ovsext/Datapath.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/datapath-windows/ovsext/Datapath.c b/datapath- > windows/ovsext/Datapath.c > index 7cc8390..5cc0614 100644 > --- a/datapath-windows/ovsext/Datapath.c > +++ b/datapath-windows/ovsext/Datapath.c > @@ -104,7 +104,8 @@ NetlinkCmdHandler OvsGetNetdevCmdHandler, > OvsPendPacketCmdHandler, > OvsSubscribePacketCmdHandler, > OvsReadPacketCmdHandler, > - OvsCtDeleteCmdHandler; > + OvsCtDeleteCmdHandler, > + OvsCtDumpCmdHandler; > > static NTSTATUS HandleGetDpTransaction(POVS_USER_PARAMS_CONTEXT > usrParamsCtx, > UINT32 *replyLen); > @@ -288,7 +289,13 @@ NETLINK_CMD nlCtFamilyCmdOps[] = { > { .cmd = IPCTNL_MSG_CT_DELETE, > .handler = OvsCtDeleteCmdHandler, > .supportedDevOp = OVS_TRANSACTION_DEV_OP, > - .validateDpIndex = TRUE > + .validateDpIndex = FALSE > + }, > + { .cmd = IPCTNL_MSG_CT_GET, > + .handler = OvsCtDumpCmdHandler, > + .supportedDevOp = OVS_TRANSACTION_DEV_OP | > + OVS_WRITE_DEV_OP | OVS_READ_DEV_OP, > + .validateDpIndex = FALSE > } > }; [Paul Boca] Now you have 2 NETLINK_CMDs, maybe it would be nice to declare a NETLINK_FAMILY which points to nlCtFamilyCmdOps. It is functional but it doesn't mentain the style used here. > > @@ -904,6 +911,7 @@ OvsDeviceControl(PDEVICE_OBJECT deviceObject, > > ASSERT(ovsMsg); > switch (ovsMsg->nlMsg.nlmsgType) { > + case NFNL_TYPE_CT_GET: [Paul Boca] If you declare a new NETLINK_FAMILY then you will have here only one case with OVS_WIN_..._FAMILY_ID > case NFNL_TYPE_CT_DEL: > nlFamilyOps = &nlCtFamilyOps; > break; > -- > 2.5.0.windows.1 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev
Hi Paul, Thanks for the review and comments. I will incorporate them in v2. Regarding the current patch - I do have a NETLINK_FAMILY defined: /* Netlink Ct family. */ NETLINK_CMD nlCtFamilyCmdOps[] = { { .cmd = IPCTNL_MSG_CT_DELETE, .handler = OvsCtDeleteCmdHandler, .supportedDevOp = OVS_TRANSACTION_DEV_OP, .validateDpIndex = FALSE }, { .cmd = IPCTNL_MSG_CT_GET, .handler = OvsCtDumpCmdHandler, .supportedDevOp = OVS_TRANSACTION_DEV_OP | OVS_WRITE_DEV_OP | OVS_READ_DEV_OP, .validateDpIndex = FALSE } }; NETLINK_FAMILY nlCtFamilyOps = { .name = OVS_CT_FAMILY, /* Keep this for consistency*/ .id = OVS_WIN_NL_CT_FAMILY_ID, /* Keep this for consistency*/ .version = OVS_CT_VERSION, /* Keep this for consistency*/ .maxAttr = OVS_NL_CT_ATTR_MAX, .cmds = nlCtFamilyCmdOps, .opsCount = ARRAY_SIZE(nlCtFamilyCmdOps) }; The problem with tying up OVS_WIN_NL_CT_FAMILY_ID to these commands meant additional changes in userspace. Userspace currently uses the NETLINK_NETFILTER for ct messages and follows a different pattern from NETLINK_GENERIC (which is what we currently use). Eg - the ovsMsg->nlMsg.nlmsgType is actually split into 2 - Subsystem + CMD (NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_GET). Since there was already support for this format in userspace, I didnĀ¹t want to add too many #ifdef statement around the message creation. My original thought was to add OVS_WIN_NL_CT_FAMILY_ID in userspace and add support for it in do_lookup_genl_family() in netlink-socket.c. That would mean modifying dpif-netlink.c along with netlink-conntrack.c. This approach left me with a code that had too many #ifdef in userspace. The current approach limited the userspace changes while passing along the necessary info. If there is a simpler alternative, am open to implementing that. Thanks, Sairam On 6/23/16, 12:50 PM, "Paul Boca" <pboca@cloudbasesolutions.com> wrote: >Hi Sai! > > > >Please see my comments inline. > >Besides that it looks good to me. > > > >Thanks, > >Paul > > > >> -----Original Message----- > >> From: dev [mailto:dev-bounces@openvswitch.org] On Behalf Of Sairam > >> Venugopal > >> Sent: Tuesday, June 21, 2016 4:23 AM > >> To: dev@openvswitch.org > >> Subject: [ovs-dev] [PATCH 9/9] datapath-windows: Add support for > >> Conntrack IPCTNL_MSG_CT_GET cmd in Datapath.c > >> > >> This will be used by userspace for dumping conntrack entries - >>"ovs-dpctl > >> dump-conntrack". > >> > >> Signed-off-by: Sairam Venugopal <vsairam@vmware.com> > >> --- > >> datapath-windows/ovsext/Datapath.c | 12 ++++++++++-- > >> 1 file changed, 10 insertions(+), 2 deletions(-) > >> > >> diff --git a/datapath-windows/ovsext/Datapath.c b/datapath- > >> windows/ovsext/Datapath.c > >> index 7cc8390..5cc0614 100644 > >> --- a/datapath-windows/ovsext/Datapath.c > >> +++ b/datapath-windows/ovsext/Datapath.c > >> @@ -104,7 +104,8 @@ NetlinkCmdHandler OvsGetNetdevCmdHandler, > >> OvsPendPacketCmdHandler, > >> OvsSubscribePacketCmdHandler, > >> OvsReadPacketCmdHandler, > >> - OvsCtDeleteCmdHandler; > >> + OvsCtDeleteCmdHandler, > >> + OvsCtDumpCmdHandler; > >> > >> static NTSTATUS HandleGetDpTransaction(POVS_USER_PARAMS_CONTEXT > >> usrParamsCtx, > >> UINT32 *replyLen); > >> @@ -288,7 +289,13 @@ NETLINK_CMD nlCtFamilyCmdOps[] = { > >> { .cmd = IPCTNL_MSG_CT_DELETE, > >> .handler = OvsCtDeleteCmdHandler, > >> .supportedDevOp = OVS_TRANSACTION_DEV_OP, > >> - .validateDpIndex = TRUE > >> + .validateDpIndex = FALSE > >> + }, > >> + { .cmd = IPCTNL_MSG_CT_GET, > >> + .handler = OvsCtDumpCmdHandler, > >> + .supportedDevOp = OVS_TRANSACTION_DEV_OP | > >> + OVS_WRITE_DEV_OP | OVS_READ_DEV_OP, > >> + .validateDpIndex = FALSE > >> } > >> }; > >[Paul Boca] Now you have 2 NETLINK_CMDs, maybe it would be nice to declare > >a NETLINK_FAMILY which points to nlCtFamilyCmdOps. It is functional but it > >doesn't mentain the style used here. > > > >> > >> @@ -904,6 +911,7 @@ OvsDeviceControl(PDEVICE_OBJECT deviceObject, > >> > >> ASSERT(ovsMsg); > >> switch (ovsMsg->nlMsg.nlmsgType) { > >> + case NFNL_TYPE_CT_GET: > >[Paul Boca] If you declare a new NETLINK_FAMILY then you will have here >only > >one case with OVS_WIN_..._FAMILY_ID > > > >> case NFNL_TYPE_CT_DEL: > >> nlFamilyOps = &nlCtFamilyOps; > >> break; > >> -- > >> 2.5.0.windows.1 > >> > >> _______________________________________________ > >> dev mailing list > >> dev@openvswitch.org > >> >>https://urldefense.proofpoint.com/v2/url?u=http-3A__openvswitch.org_mailm >>an_listinfo_dev&d=CwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r= >>Dcruz40PROJ40ROzSpxyQSLw6fcrOWpJgEcEmNR3JEQ&m=4kLod0hlZhjnb5LrbpgjM18Ex12 >>ofd9jGmS1WVJDMps&s=67iuH7TGw4dl4FD4m2PJ8Xl3v3JCDqCt13f30XQtRKs&e= >
diff --git a/datapath-windows/ovsext/Datapath.c b/datapath-windows/ovsext/Datapath.c index 7cc8390..5cc0614 100644 --- a/datapath-windows/ovsext/Datapath.c +++ b/datapath-windows/ovsext/Datapath.c @@ -104,7 +104,8 @@ NetlinkCmdHandler OvsGetNetdevCmdHandler, OvsPendPacketCmdHandler, OvsSubscribePacketCmdHandler, OvsReadPacketCmdHandler, - OvsCtDeleteCmdHandler; + OvsCtDeleteCmdHandler, + OvsCtDumpCmdHandler; static NTSTATUS HandleGetDpTransaction(POVS_USER_PARAMS_CONTEXT usrParamsCtx, UINT32 *replyLen); @@ -288,7 +289,13 @@ NETLINK_CMD nlCtFamilyCmdOps[] = { { .cmd = IPCTNL_MSG_CT_DELETE, .handler = OvsCtDeleteCmdHandler, .supportedDevOp = OVS_TRANSACTION_DEV_OP, - .validateDpIndex = TRUE + .validateDpIndex = FALSE + }, + { .cmd = IPCTNL_MSG_CT_GET, + .handler = OvsCtDumpCmdHandler, + .supportedDevOp = OVS_TRANSACTION_DEV_OP | + OVS_WRITE_DEV_OP | OVS_READ_DEV_OP, + .validateDpIndex = FALSE } }; @@ -904,6 +911,7 @@ OvsDeviceControl(PDEVICE_OBJECT deviceObject, ASSERT(ovsMsg); switch (ovsMsg->nlMsg.nlmsgType) { + case NFNL_TYPE_CT_GET: case NFNL_TYPE_CT_DEL: nlFamilyOps = &nlCtFamilyOps; break;
This will be used by userspace for dumping conntrack entries - "ovs-dpctl dump-conntrack". Signed-off-by: Sairam Venugopal <vsairam@vmware.com> --- datapath-windows/ovsext/Datapath.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)