Skip to content

Commit

Permalink
Makefiles: Generate datapath ovs key fields macros
Browse files Browse the repository at this point in the history
Generate datapath ovs key fields macros as a pre-step of retrieving
field information, with no functional change.

Signed-off-by: Eli Britstein <elibr@mellanox.com>
Reviewed-by: Roi Dayan <roid@mellanox.com>
Signed-off-by: 0-day Robot <robot@bytheb.org>
  • Loading branch information
Eli Britstein authored and ovsrobot committed Feb 7, 2019
1 parent 47ab42a commit 9e43c65
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 3 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -68,6 +68,7 @@ cscope.*
tags
_debian
odp-netlink.h
odp-netlink-xmacros.h
OvsDpInterface.h
/.vagrant/
testsuite.tmp.orig
Expand Down
55 changes: 55 additions & 0 deletions build-aux/extract-odp-netlink-xmacros-h
@@ -0,0 +1,55 @@
#!/bin/bash

hfile=$1

function generate_fields_macros {
local struct_name=$1

# line_start is the line number where the definition of the struct begin
# line_end is the line number where the definition of the struct ends
line_start=`grep -nw $struct_name $hfile | grep { | cut -d ":" -f1`
num_lines=`tail -n +${line_start} $hfile | grep -n -m1 } | cut -d ":" -f1`
line_end=$((line_start+num_lines-1))
STRUCT=`echo $struct_name | tr [a-z] [A-Z]`
echo "#define __${STRUCT}_FIELDS \\"
# for all the field lines, including the terminating }, remove ";" and
# replace with a macro.
# 3 awk fields are for struct <struct name> <field_name>
# 2 awk fields are for <type> <field_name>
# else - terminating macro
awk -F ";" "NR>${line_start} && NR<=${line_end}"' {print $1}' $hfile |
awk '{
if (NF == 3)
print " __OVS_KEY_FIELD(" $1,$2", " $3 ") \\";
else if (NF == 2)
print " __OVS_KEY_FIELD(" $1", " $2 ") \\";
else
print "__OVS_KEY_FIELDS_END";
}'
}
echo "/* Generated automatically from <include/odp-netlink.h> -- do not modify! */"
echo
echo
echo "#ifndef ODP_NETLINK_MACROS_H"
echo "#define ODP_NETLINK_MACROS_H"
echo
echo "#define __OVS_KEY_FIELDS_END"
echo
generate_fields_macros "ovs_key_ethernet"
generate_fields_macros "ovs_key_ipv4"
generate_fields_macros "ovs_key_ipv6"
generate_fields_macros "ovs_key_tcp"
generate_fields_macros "ovs_key_udp"
generate_fields_macros "ovs_key_sctp"
generate_fields_macros "ovs_key_icmp"
generate_fields_macros "ovs_key_icmpv6"
generate_fields_macros "ovs_key_arp"
generate_fields_macros "ovs_key_nd"
echo
echo "#endif"
11 changes: 8 additions & 3 deletions include/automake.mk
@@ -1,10 +1,15 @@
BUILT_SOURCES += include/odp-netlink.h
BUILT_SOURCES += include/odp-netlink.h include/odp-netlink-xmacros.h

include/odp-netlink.h: datapath/linux/compat/include/linux/openvswitch.h \
build-aux/extract-odp-netlink-h
$(AM_V_GEN)sed -f $(srcdir)/build-aux/extract-odp-netlink-h < $< > $@
EXTRA_DIST += build-aux/extract-odp-netlink-h
CLEANFILES += include/odp-netlink.h

include/odp-netlink-xmacros.h: include/odp-netlink.h \
build-aux/extract-odp-netlink-xmacros-h
$(AM_V_GEN)bash -f $(srcdir)/build-aux/extract-odp-netlink-xmacros-h $< > $@

EXTRA_DIST += build-aux/extract-odp-netlink-h build-aux/extract-odp-netlink-xmacros-h
CLEANFILES += include/odp-netlink.h include/odp-netlink-xmacros.h

include include/ovn/automake.mk
include include/openflow/automake.mk
Expand Down

0 comments on commit 9e43c65

Please sign in to comment.