From c642c5bda74c64eb83c3f58ab33d8803262e1510 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Thu, 1 Aug 2019 16:33:36 -0400 Subject: [PATCH] import libteam-1.28-2.el8 --- .gitignore | 1 + .libteam.metadata | 1 + ...n-fix-runner.min_ports-default-value.patch | 30 + ...d-config-update-local-prio-to-kernel.patch | 68 +++ ...e-port-state-according-to-partner-s-.patch | 74 +++ ...rp_ping-only-check-arp-reply-message.patch | 38 ++ ...na_ping-only-send-ns-on-enabled-port.patch | 35 ++ ...am-teamd-remove-port-if-adding-fails.patch | 62 ++ ...-to-exist-if-item-per_port-is-set-in.patch | 42 ++ ...d-option_changed-to-sync-enabled-to-.patch | 76 +++ .../libteam-teamnl-update-help-message.patch | 31 + SPECS/libteam.spec | 569 ++++++++++++++++++ 12 files changed, 1027 insertions(+) create mode 100644 .gitignore create mode 100644 .libteam.metadata create mode 100644 SOURCES/libteam-man-fix-runner.min_ports-default-value.patch create mode 100644 SOURCES/libteam-teamd-config-update-local-prio-to-kernel.patch create mode 100644 SOURCES/libteam-teamd-lacp-update-port-state-according-to-partner-s-.patch create mode 100644 SOURCES/libteam-teamd-lw-arp_ping-only-check-arp-reply-message.patch create mode 100644 SOURCES/libteam-teamd-lw-nsna_ping-only-send-ns-on-enabled-port.patch create mode 100644 SOURCES/libteam-teamd-remove-port-if-adding-fails.patch create mode 100644 SOURCES/libteam-teamd-tdport-has-to-exist-if-item-per_port-is-set-in.patch create mode 100644 SOURCES/libteam-teamd-use-enabled-option_changed-to-sync-enabled-to-.patch create mode 100644 SOURCES/libteam-teamnl-update-help-message.patch create mode 100644 SPECS/libteam.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a7c181d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/libteam-1.28.tar.gz diff --git a/.libteam.metadata b/.libteam.metadata new file mode 100644 index 0000000..f7afdcc --- /dev/null +++ b/.libteam.metadata @@ -0,0 +1 @@ +c3429d0b29ae78dd1d4899dab6fe9f13af26ff7d SOURCES/libteam-1.28.tar.gz diff --git a/SOURCES/libteam-man-fix-runner.min_ports-default-value.patch b/SOURCES/libteam-man-fix-runner.min_ports-default-value.patch new file mode 100644 index 0000000..b8a6ced --- /dev/null +++ b/SOURCES/libteam-man-fix-runner.min_ports-default-value.patch @@ -0,0 +1,30 @@ +From f36c191da3d65a4744582b2eb09fa297dd85f9ae Mon Sep 17 00:00:00 2001 +From: Hangbin Liu +Date: Fri, 22 Feb 2019 16:27:46 +0800 +Subject: [PATCH 5/6] man: fix runner.min_ports default value + +It should be 1 instead of 0. + +Reported-by: LiLiang +Signed-off-by: Hangbin Liu +Signed-off-by: Jiri Pirko +--- + man/teamd.conf.5 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/man/teamd.conf.5 b/man/teamd.conf.5 +index 9bdf46a..5b0f3e9 100644 +--- a/man/teamd.conf.5 ++++ b/man/teamd.conf.5 +@@ -240,7 +240,7 @@ Specifies the minimum number of ports that must be active before asserting carri + .RS 7 + .PP + Default: +-.BR "0" ++.BR "1" + .RE + .TP + .BR "runner.agg_select_policy " (string) +-- +2.18.1 + diff --git a/SOURCES/libteam-teamd-config-update-local-prio-to-kernel.patch b/SOURCES/libteam-teamd-config-update-local-prio-to-kernel.patch new file mode 100644 index 0000000..c3de0a7 --- /dev/null +++ b/SOURCES/libteam-teamd-config-update-local-prio-to-kernel.patch @@ -0,0 +1,68 @@ +From c8b356a3cd363af10d71e21a4fb7dc26cf90b5bc Mon Sep 17 00:00:00 2001 +From: Hangbin Liu +Date: Mon, 7 Jan 2019 15:58:49 +0800 +Subject: [PATCH 2/6] teamd: config: update local prio to kernel + +Team port's priority will affect the active port selection. Update the +local config is not enough. We also need to update kernel configs. + +Reported-by: Liang Li +Signed-off-by: Hangbin Liu +Signed-off-by: Jiri Pirko +--- + teamd/teamd_config.c | 32 ++++++++++++++++++++++++++++++++ + 1 file changed, 32 insertions(+) + +diff --git a/teamd/teamd_config.c b/teamd/teamd_config.c +index 94158ce..69b25de 100644 +--- a/teamd/teamd_config.c ++++ b/teamd/teamd_config.c +@@ -155,6 +155,31 @@ errout: + return err; + } + ++static int teamd_config_port_set(struct teamd_context *ctx, const char *port_name, ++ json_t *port_obj) ++{ ++ struct teamd_port *tdport; ++ json_t *config; ++ int tmp, err; ++ ++ tdport = teamd_get_port_by_ifname(ctx, port_name); ++ if (!tdport) ++ return -ENODEV; ++ ++ config = json_object_get(port_obj, "prio"); ++ if (json_is_integer(config)) { ++ tmp = json_integer_value(config); ++ err = team_set_port_priority(ctx->th, tdport->ifindex, tmp); ++ if (err) { ++ teamd_log_err("%s: Failed to set \"priority\".", ++ tdport->ifname); ++ return err; ++ } ++ } ++ ++ return 0; ++} ++ + int teamd_config_port_update(struct teamd_context *ctx, const char *port_name, + const char *json_port_cfg_str) + { +@@ -184,6 +209,13 @@ int teamd_config_port_update(struct teamd_context *ctx, const char *port_name, + if (err) + teamd_log_err("%s: Failed to update existing config " + "port object", port_name); ++ else { ++ err = teamd_config_port_set(ctx, port_name, port_new_obj); ++ if (err) ++ teamd_log_err("%s: Failed to update config to kernel", ++ port_name); ++ } ++ + new_port_decref: + json_decref(port_new_obj); + return err; +-- +2.18.1 + diff --git a/SOURCES/libteam-teamd-lacp-update-port-state-according-to-partner-s-.patch b/SOURCES/libteam-teamd-lacp-update-port-state-according-to-partner-s-.patch new file mode 100644 index 0000000..567e93a --- /dev/null +++ b/SOURCES/libteam-teamd-lacp-update-port-state-according-to-partner-s-.patch @@ -0,0 +1,74 @@ +From 54f137c10579bf97800c61ebb13e732aa1d843e6 Mon Sep 17 00:00:00 2001 +From: Hangbin Liu +Date: Fri, 8 Mar 2019 19:28:55 +0800 +Subject: [PATCH 6/6] teamd: lacp: update port state according to partner's + sync bit + +According to 6.4.15 of IEEE 802.1AX-2014, Figure 6-22, the state that the +port is selected moves MUX state from DETACHED to ATTACHED. + +But ATTACHED state does not mean that the port can send and receive user +frames. COLLECTING_DISTRIBUTION state is the state that the port can send +and receive user frames. To move MUX state from ATTACHED to +COLLECTING_DISTRIBUTION, the partner state should be sync as well as the +port selected. + +In function lacp_port_actor_update(), only INFO_STATE_SYNCHRONIZATION +should be set to the actor.state when the port is selected. +INFO_STATE_COLLECTING and INFO_STATE_DISTRIBUTING should be set to false +with ATTACHED mode and set to true when INFO_STATE_SYNCHRONIZATION of +partner.state is set. + +In function lacp_port_should_be_{enabled, disabled}(), we also need to +check the INFO_STATE_SYNCHRONIZATION bit of partner.state. + +Signed-off-by: Hangbin Liu +Signed-off-by: Jiri Pirko +--- + teamd/teamd_runner_lacp.c | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +diff --git a/teamd/teamd_runner_lacp.c b/teamd/teamd_runner_lacp.c +index 555aa06..d292d69 100644 +--- a/teamd/teamd_runner_lacp.c ++++ b/teamd/teamd_runner_lacp.c +@@ -333,7 +333,8 @@ static int lacp_port_should_be_enabled(struct lacp_port *lacp_port) + struct lacp *lacp = lacp_port->lacp; + + if (lacp_port_selected(lacp_port) && +- lacp_port->agg_lead == lacp->selected_agg_lead) ++ lacp_port->agg_lead == lacp->selected_agg_lead && ++ lacp_port->partner.state & INFO_STATE_SYNCHRONIZATION) + return true; + return false; + } +@@ -343,7 +344,8 @@ static int lacp_port_should_be_disabled(struct lacp_port *lacp_port) + struct lacp *lacp = lacp_port->lacp; + + if (!lacp_port_selected(lacp_port) || +- lacp_port->agg_lead != lacp->selected_agg_lead) ++ lacp_port->agg_lead != lacp->selected_agg_lead || ++ !(lacp_port->partner.state & INFO_STATE_SYNCHRONIZATION)) + return true; + return false; + } +@@ -914,9 +916,13 @@ static void lacp_port_actor_update(struct lacp_port *lacp_port) + if (lacp_port->lacp->cfg.fast_rate) + state |= INFO_STATE_LACP_TIMEOUT; + if (lacp_port_selected(lacp_port) && +- lacp_port_agg_selected(lacp_port)) +- state |= INFO_STATE_SYNCHRONIZATION | +- INFO_STATE_COLLECTING | INFO_STATE_DISTRIBUTING; ++ lacp_port_agg_selected(lacp_port)) { ++ state |= INFO_STATE_SYNCHRONIZATION; ++ state &= ~(INFO_STATE_COLLECTING | INFO_STATE_DISTRIBUTING); ++ if (lacp_port->partner.state & INFO_STATE_SYNCHRONIZATION) ++ state |= INFO_STATE_COLLECTING | ++ INFO_STATE_DISTRIBUTING; ++ } + if (lacp_port->state == PORT_STATE_EXPIRED) + state |= INFO_STATE_EXPIRED; + if (lacp_port->state == PORT_STATE_DEFAULTED) +-- +2.18.1 + diff --git a/SOURCES/libteam-teamd-lw-arp_ping-only-check-arp-reply-message.patch b/SOURCES/libteam-teamd-lw-arp_ping-only-check-arp-reply-message.patch new file mode 100644 index 0000000..3b081c6 --- /dev/null +++ b/SOURCES/libteam-teamd-lw-arp_ping-only-check-arp-reply-message.patch @@ -0,0 +1,38 @@ +From 5f355301b7cafbb51b036ad1e5af38e79d4330d6 Mon Sep 17 00:00:00 2001 +From: Hangbin Liu +Date: Fri, 11 Jan 2019 09:57:10 +0800 +Subject: [PATCH 3/6] teamd: lw: arp_ping: only check arp reply message + +Currently we check both arp request and reply message for arp_ping link +watch. But if we enabled validate_active and validate_inactive at the +same time, we will receive the other slave's arp request as the switch +broadcasts arp request message. i.e. slave1 receives arp request from +slave2 and vice versa. + +Then the arp check will pass even the target is unreachable. Fix it by +only check arp reply message. + +Reported-by: LiLiang +Signed-off-by: Hangbin Liu +Signed-off-by: Jiri Pirko +--- + teamd/teamd_lw_arp_ping.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/teamd/teamd_lw_arp_ping.c b/teamd/teamd_lw_arp_ping.c +index 01cd6e1..81806f0 100644 +--- a/teamd/teamd_lw_arp_ping.c ++++ b/teamd/teamd_lw_arp_ping.c +@@ -336,7 +336,8 @@ static int lw_ap_receive(struct lw_psr_port_priv *psr_ppriv) + if (ap.ah.ar_hrd != htons(ll_my.sll_hatype) || + ap.ah.ar_pro != htons(ETH_P_IP) || + ap.ah.ar_hln != ll_my.sll_halen || +- ap.ah.ar_pln != 4) { ++ ap.ah.ar_pln != 4 || ++ ap.ah.ar_op != htons(ARPOP_REPLY)) { + return 0; + } + +-- +2.18.1 + diff --git a/SOURCES/libteam-teamd-lw-nsna_ping-only-send-ns-on-enabled-port.patch b/SOURCES/libteam-teamd-lw-nsna_ping-only-send-ns-on-enabled-port.patch new file mode 100644 index 0000000..913b24d --- /dev/null +++ b/SOURCES/libteam-teamd-lw-nsna_ping-only-send-ns-on-enabled-port.patch @@ -0,0 +1,35 @@ +From 6bf0e87387878654186bcf7287e0eda59b1c2f2c Mon Sep 17 00:00:00 2001 +From: Hangbin Liu +Date: Thu, 21 Feb 2019 17:37:46 +0800 +Subject: [PATCH 4/6] teamd: lw: nsna_ping: only send ns on enabled port + +We forget to check forced_send when using nsna_ping link_watch. +Ns is sent from all ports, which cause switch mac flapping. Some +reply packets are delivered to disabled port and dropped directly. + +Fix it by checking forced_send and only send ns on enabled port. + +Reported-by: LiLiang +Signed-off-by: Hangbin Liu +Signed-off-by: Jiri Pirko +--- + teamd/teamd_lw_nsna_ping.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/teamd/teamd_lw_nsna_ping.c b/teamd/teamd_lw_nsna_ping.c +index 127d950..82371c4 100644 +--- a/teamd/teamd_lw_nsna_ping.c ++++ b/teamd/teamd_lw_nsna_ping.c +@@ -203,6 +203,9 @@ static int lw_nsnap_send(struct lw_psr_port_priv *psr_ppriv) + struct sockaddr_in6 sendto_addr; + struct ns_packet nsp; + ++ if (!(psr_ppriv->common.forced_send)) ++ return 0; ++ + err = teamd_getsockname_hwaddr(psr_ppriv->sock, &ll_my, + sizeof(nsp.hwaddr)); + if (err) +-- +2.18.1 + diff --git a/SOURCES/libteam-teamd-remove-port-if-adding-fails.patch b/SOURCES/libteam-teamd-remove-port-if-adding-fails.patch new file mode 100644 index 0000000..454366a --- /dev/null +++ b/SOURCES/libteam-teamd-remove-port-if-adding-fails.patch @@ -0,0 +1,62 @@ +From 0f1b2fac03361c5d2bac34e4b19922c60c5c06c6 Mon Sep 17 00:00:00 2001 +From: Hangbin Liu +Date: Wed, 13 Mar 2019 15:04:29 +0800 +Subject: [PATCH 1/3] teamd: remove port if adding fails + +When we add a port to team via teamdctl, some drivers do not support +changing mac address after dev opened, which would lead to the failure +of port_obj_create(). The call path looks like below for LACP mode: + +- port_obj_create() + - port_priv_init_all() + - lacp_port_added() + - lacp_port_set_mac() + +Currently, we only destroy the port object if adding port fails. But the +port is still enslaved to team in kernel. IP link command shows the port +is a team_slave, but teamdctl state shows nothing. This may make users +confused. + +Fix it by removing the port if adding fails. + +v2: also calls teamd_port_remove in port_obj_remove() + +Reported-by: Vladimir Benes +Signed-off-by: Hangbin Liu +Signed-off-by: Jiri Pirko +--- + teamd/teamd_per_port.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/teamd/teamd_per_port.c b/teamd/teamd_per_port.c +index 09d1dc7..f98a90d 100644 +--- a/teamd/teamd_per_port.c ++++ b/teamd/teamd_per_port.c +@@ -42,6 +42,8 @@ struct port_obj { + }; + + #define _port(port_obj) (&(port_obj)->port) ++static int teamd_port_remove(struct teamd_context *ctx, ++ struct teamd_port *tdport); + + int teamd_port_priv_create_and_get(void **ppriv, struct teamd_port *tdport, + const struct teamd_port_priv *pp, +@@ -203,6 +205,7 @@ static int port_obj_create(struct teamd_context *ctx, + teamd_event_port_removed: + teamd_event_port_removed(ctx, tdport); + list_del: ++ teamd_port_remove(ctx, tdport); + port_obj_destroy(ctx, port_obj); + port_obj_free(port_obj); + return err; +@@ -214,6 +217,7 @@ static void port_obj_remove(struct teamd_context *ctx, + struct teamd_port *tdport = _port(port_obj); + + teamd_event_port_removed(ctx, tdport); ++ teamd_port_remove(ctx, tdport); + port_obj_destroy(ctx, port_obj); + port_obj_free(port_obj); + } +-- +2.18.1 + diff --git a/SOURCES/libteam-teamd-tdport-has-to-exist-if-item-per_port-is-set-in.patch b/SOURCES/libteam-teamd-tdport-has-to-exist-if-item-per_port-is-set-in.patch new file mode 100644 index 0000000..c3acc57 --- /dev/null +++ b/SOURCES/libteam-teamd-tdport-has-to-exist-if-item-per_port-is-set-in.patch @@ -0,0 +1,42 @@ +From 4dc3a7a042c88193f0371a33f1043919843e6447 Mon Sep 17 00:00:00 2001 +From: Xin Long +Date: Mon, 1 Apr 2019 16:15:24 +0800 +Subject: [PATCH 2/3] teamd: tdport has to exist if item->per_port is set in + __find_by_item_path + +The issue can be reproduced by: + + # teamd -c '{"device":"team0", "runner":{"name":"lacp"}}' & + # teamdctl team0 state item set runner.aggregator.selected true + +teamd process will abort in lacp_port_state_aggregator_selected_set() +as gsc->info.tdport was set to NULL in teamd_state_item_value_set() + +The item 'runner.aggregator.selected' is of per_port = true, and it +shouldn't allow to call its setter/getter(). + +This patch is to add the check for it in __find_by_item_path() called +by teamd_state_item_value_get/set(). + +Fixes: 6c00aaf02553 ("teamd: add support for state item write operation") +Signed-off-by: Xin Long +Signed-off-by: Jiri Pirko +--- + teamd/teamd_state.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/teamd/teamd_state.c b/teamd/teamd_state.c +index ab64db9..0714880 100644 +--- a/teamd/teamd_state.c ++++ b/teamd/teamd_state.c +@@ -333,6 +333,7 @@ static int __find_by_item_path(struct teamd_state_val_item **p_item, + list_for_each_node_entry(item, &ctx->state_val_list, list) { + /* item->subpath[0] == '.' */ + if (!strcmp(item->subpath + 1, subpath) && ++ (!item->per_port || tdport) && + (!item->tdport || item->tdport == tdport)) { + *p_item = item; + *p_tdport = tdport; +-- +2.18.1 + diff --git a/SOURCES/libteam-teamd-use-enabled-option_changed-to-sync-enabled-to-.patch b/SOURCES/libteam-teamd-use-enabled-option_changed-to-sync-enabled-to-.patch new file mode 100644 index 0000000..b112156 --- /dev/null +++ b/SOURCES/libteam-teamd-use-enabled-option_changed-to-sync-enabled-to-.patch @@ -0,0 +1,76 @@ +From 90e5279ce0241838d5687739b3bc795235b7d53b Mon Sep 17 00:00:00 2001 +From: Xin Long +Date: Mon, 15 Apr 2019 16:56:35 +0800 +Subject: [PATCH 3/3] teamd: use enabled option_changed to sync enabled to + link_up for lb runner + +LiLiang found an issue that after adding two ports into a team device with +lb mode their enabled option sometimes is false. + +It was caused by the unexpected events order: + + 0. team_port_add() in kernel. + 1. port_change event A1 sent to userspace. + 2. option_change event B1 sent to userspace. + 3. port_change event A2 sent to userspace IF port is up now. + 4. process port_change event A1 and set port's enabled option 'false'. + 5. option_change event B2 sent to userspace. + 6. process option_change event B1 and sync enabled option (value = 1). + 7. process port_change event A2 and do nothing as enabled option is 1. + 8. process option_change event B2 and sync enabled option (value = 0). + +In kernel, when the port is still down after dev_open(), which happens more +often since it changed to use netif_oper_up() to check the state instead of +netif_carrier_ok(), the event A2 in Step 3 can be sent at any moment. When +it's ahead of Step 4, Step 7 won't set enabled option to 1 as Step 8 comes +late. + +As the port up event can be triggered by dev_watchdog at anytime in kernel, +the port_change and option_change events order can not be controlled. What +can only be done here is to correct it at Step 8, to sync enabled option to +link_up. + +So this patch is to add enabled option_changed for lb mode to do this sync. + +Reported-by: LiLiang +Signed-off-by: Xin Long +Signed-off-by: Jiri Pirko +--- + teamd/teamd_runner_loadbalance.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +diff --git a/teamd/teamd_runner_loadbalance.c b/teamd/teamd_runner_loadbalance.c +index b9bfc13..a581472 100644 +--- a/teamd/teamd_runner_loadbalance.c ++++ b/teamd/teamd_runner_loadbalance.c +@@ -109,12 +109,27 @@ static int lb_event_watch_port_hwaddr_changed(struct teamd_context *ctx, + return err; + } + ++static int lb_event_watch_enabled_option_changed(struct teamd_context *ctx, ++ struct team_option *option, ++ void *priv) ++{ ++ struct teamd_port *tdport; ++ ++ tdport = teamd_get_port(ctx, team_get_option_port_ifindex(option)); ++ if (!tdport) ++ return 0; ++ ++ return lb_event_watch_port_link_changed(ctx, tdport, priv); ++} ++ + static const struct teamd_event_watch_ops lb_port_watch_ops = { + .hwaddr_changed = lb_event_watch_hwaddr_changed, + .port_hwaddr_changed = lb_event_watch_port_hwaddr_changed, + .port_added = lb_event_watch_port_added, + .port_removed = lb_event_watch_port_removed, + .port_link_changed = lb_event_watch_port_link_changed, ++ .option_changed = lb_event_watch_enabled_option_changed, ++ .option_changed_match_name = "enabled", + }; + + static int lb_init(struct teamd_context *ctx, void *priv) +-- +2.18.1 + diff --git a/SOURCES/libteam-teamnl-update-help-message.patch b/SOURCES/libteam-teamnl-update-help-message.patch new file mode 100644 index 0000000..f9c3aa5 --- /dev/null +++ b/SOURCES/libteam-teamnl-update-help-message.patch @@ -0,0 +1,31 @@ +From 6e67aa89a746ff98d4b4f4fa3c778aa31d4d2c7f Mon Sep 17 00:00:00 2001 +From: Hangbin Liu +Date: Mon, 17 Dec 2018 16:58:34 +0800 +Subject: [PATCH 1/6] teamnl: update help message + +Update help message so people could know we support port name directly. + +Signed-off-by: Hangbin Liu +Signed-off-by: Jiri Pirko +--- + utils/teamnl.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/utils/teamnl.c b/utils/teamnl.c +index e8de7e2..c53345d 100644 +--- a/utils/teamnl.c ++++ b/utils/teamnl.c +@@ -521,7 +521,9 @@ static void print_help(const char *argv0) { + + printf( + "%s [options] teamdevname command [command args]\n" +- "\t-h --help Show this help\n", ++ "\t-h --help Show this help\n" ++ "\t-p --port_name team slave port name\n" ++ "\t-a --array_index team option array index\n", + argv0); + printf("Commands:\n"); + for (i = 0; i < CMD_TYPE_COUNT; i++) { +-- +2.18.1 + diff --git a/SPECS/libteam.spec b/SPECS/libteam.spec new file mode 100644 index 0000000..760f0bb --- /dev/null +++ b/SPECS/libteam.spec @@ -0,0 +1,569 @@ +Name: libteam +Version: 1.28 +Release: 2%{?dist} +Summary: Library for controlling team network device +Group: System Environment/Libraries +License: LGPLv2+ +URL: http://www.libteam.org +Source: http://www.libteam.org/files/libteam-%{version}.tar.gz +Patch1: libteam-teamnl-update-help-message.patch +Patch2: libteam-teamd-config-update-local-prio-to-kernel.patch +Patch3: libteam-teamd-lw-arp_ping-only-check-arp-reply-message.patch +Patch4: libteam-teamd-lw-nsna_ping-only-send-ns-on-enabled-port.patch +Patch5: libteam-man-fix-runner.min_ports-default-value.patch +Patch6: libteam-teamd-lacp-update-port-state-according-to-partner-s-.patch +Patch7: libteam-teamd-remove-port-if-adding-fails.patch +Patch8: libteam-teamd-tdport-has-to-exist-if-item-per_port-is-set-in.patch +Patch9: libteam-teamd-use-enabled-option_changed-to-sync-enabled-to-.patch +BuildRequires: jansson-devel +BuildRequires: libdaemon-devel +BuildRequires: libnl3-devel +BuildRequires: python3-devel +BuildRequires: dbus-devel +BuildRequires: swig +BuildRequires: doxygen +BuildRequires: autoconf automake libtool +BuildRequires: systemd-units + +%description +This package contains a library which is a user-space +counterpart for team network driver. It provides an API +to control team network devices. + +%package devel +Group: Development/Libraries +Summary: Libraries and header files for libteam development +Requires: libteam = %{version}-%{release} + +%package doc +Group: Documentation +Summary: API documentation for libteam and libteamd +Requires: libteam = %{version}-%{release} + +%description doc +This package contains libteam and libteamd API documentation + +%package -n teamd +Group: System Environment/Daemons +Summary: Team network device control daemon +Requires: libteam = %{version}-%{release} + +%package -n teamd-devel +Group: Development/Libraries +Summary: Libraries and header files for teamd development +Requires: teamd = %{version}-%{release} + +%package -n python3-libteam +%{?python_provide:%python_provide python3-libteam} +Group: Development/Libraries +Summary: Team network device library bindings +Requires: libteam = %{version}-%{release} + +%package -n network-scripts-team +Group: Development/Libraries +Summary: libteam legacy network service support +Requires: network-scripts +Supplements: (teamd and network-scripts) + +%description devel +The libteam-devel package contains the header files and libraries +necessary for developing programs using libteam. + +%description -n teamd +The teamd package contains team network device control daemon. + +%description -n teamd-devel +The teamd-devel package contains the header files and libraries +necessary for developing programs using libteamdctl. + +%description -n python3-libteam +The team-python package contains a module that permits applications +written in the Python programming language to use the interface +supplied by team network device library. + +This package should be installed if you want to develop Python +programs that will manipulate team network devices. + +%description -n network-scripts-team +This provides the ifup and ifdown scripts for libteam use with the legacy +network service. + +%prep +%autosetup -p1 +autoreconf --force --install -I m4 + +# prepare example dir for -devel +mkdir -p _tmpdoc1/examples +cp -p examples/*.c _tmpdoc1/examples +# prepare example dir for team-python +mkdir -p _tmpdoc2/examples +cp -p examples/python/*.py _tmpdoc2/examples +chmod -x _tmpdoc2/examples/*.py + +%build +%configure --disable-static +make %{?_smp_mflags} +make html +cd binding/python +%py3_build + +%install +make install DESTDIR=$RPM_BUILD_ROOT INSTALL="install -p" +find $RPM_BUILD_ROOT -name \*.la -delete +rm -rf $RPM_BUILD_ROOT/%{_bindir}/team_* +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/dbus-1/system.d +install -p teamd/dbus/teamd.conf $RPM_BUILD_ROOT%{_sysconfdir}/dbus-1/system.d/ +mkdir -p $RPM_BUILD_ROOT%{_unitdir} +install -p teamd/redhat/systemd/teamd@.service $RPM_BUILD_ROOT%{_unitdir} +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/network-scripts +install -p -m 755 teamd/redhat/initscripts_systemd/network-scripts/ifup-Team $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/network-scripts +install -p -m 755 teamd/redhat/initscripts_systemd/network-scripts/ifdown-Team $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/network-scripts +install -p -m 755 teamd/redhat/initscripts_systemd/network-scripts/ifup-TeamPort $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/network-scripts +install -p -m 755 teamd/redhat/initscripts_systemd/network-scripts/ifdown-TeamPort $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/network-scripts +install -p -m 755 utils/bond2team $RPM_BUILD_ROOT%{_bindir}/bond2team +cd binding/python +%py3_install + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%files +%doc COPYING +%{_libdir}/libteam.so.* +%{_bindir}/teamnl +%{_mandir}/man8/teamnl.8* + +%files devel +%doc COPYING _tmpdoc1/examples +%{_includedir}/team.h +%{_libdir}/libteam.so +%{_libdir}/pkgconfig/libteam.pc + +%files doc +%doc COPYING doc/api + +%files -n teamd +%doc COPYING teamd/example_configs teamd/redhat/example_ifcfgs/ +%config(noreplace) %attr(644,root,root) %{_sysconfdir}/dbus-1/system.d/teamd.conf +%config(noreplace) %attr(644,root,root) %{_unitdir}/teamd@.service +%{_libdir}/libteamdctl.so.* +%{_bindir}/teamd +%{_bindir}/teamdctl +%{_bindir}/bond2team +%{_mandir}/man8/teamd.8* +%{_mandir}/man8/teamdctl.8* +%{_mandir}/man5/teamd.conf.5* +%{_mandir}/man1/bond2team.1* + +%files -n teamd-devel +%doc COPYING +%{_includedir}/teamdctl.h +%{_libdir}/libteamdctl.so +%{_libdir}/pkgconfig/libteamdctl.pc + +%files -n python3-libteam +%doc COPYING _tmpdoc2/examples +%{python3_sitearch}/* + +%files -n network-scripts-team +%{_sysconfdir}/sysconfig/network-scripts/ifup-Team +%{_sysconfdir}/sysconfig/network-scripts/ifdown-Team +%{_sysconfdir}/sysconfig/network-scripts/ifup-TeamPort +%{_sysconfdir}/sysconfig/network-scripts/ifdown-TeamPort + +%changelog +* Mon Apr 29 2019 Xin Long - 1.28-2 +- teamd: use enabled option_changed to sync enabled to link_up for lb runner [1668132] +- teamd: tdport has to exist if item->per_port is set in __find_by_item_path [1687336] +- teamd: remove port if adding fails [1668744] +* Wed Apr 17 2019 Xin Long - 1.28-1 +- teamd: lacp: update port state according to partner's sync bit +- man: fix runner.min_ports default value [1679853] +- teamd: lw: nsna_ping: only send ns on enabled port [1671195] +- teamd: lw: arp_ping: only check arp reply message [1663093] +- teamd: config: update local prio to kernel [1657113] +- teamnl: update help message +- 1.28 release +- teamd: lacp: send LACPDU when port state transitions from DEFAULT to CURRENT +- man teamd.conf: Document ARP Ping link_watch.vlanid option +- man teamd.conf: fix indentation of link_watch.send_always +- libteam/options: fix s32/u32 data storage on big endian +- teamd: add an option to force log output to stdout, stderr or syslog +- teamd: add port_master_ifindex_changed for teamd_event_watch_ops +- man: add 'random' to the list of available runners +- examples: fix duplex comparison against best port + +* Thu Jan 10 2019 Xin Long - 1.27-10 +- add new package network-scripts-team [1659846] + +* Mon Aug 20 2018 Xin Long - 1.27-9 +- Added patch to fix the issue that no active port is set [1618710] + +* Fri Aug 03 2018 Xin Long - 1.27-8 +- Add fix to only process LACPDU after port ifinfo is set +- Add port_hwaddr_changed for ab, lb and lacp runners +- Add patch to fix runner.sys_prio default in man docs +- Add patch to empty LDFLAGS before checking for libnl3 in configure.ac +- Add patch to not crash when trying to print unregistered device name +- Add patch to use SWIG_FromCharPtrAndSize for Python3 support +- Add patch to check to_stdout return correctly in bond2team in bond2team +- Add 'BuildRequires: systemd-units' in libteam.spec to fix building errors +- Add 'autoreconf --force --install -I m4' in libteam.sepc to regenerate configure +- Remove ifup/ifdown scripts installation in libteam.sepc + +* Tue Jun 26 2018 Charalampos Stratakis - 1.27-7 +- Change the python bindings to Python 3 + +* Wed Feb 07 2018 Fedora Release Engineering - 1.27-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Jan 09 2018 Iryna Shcherbina - 1.27-5 +- Update Python 2 dependency declarations to new packaging standards + (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) + +* Sat Aug 19 2017 Zbigniew Jędrzejewski-Szmek - 1.27-4 +- Python 2 binary package renamed to python2-libteam + See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3 + +* Thu Aug 03 2017 Fedora Release Engineering - 1.27-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 1.27-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon Jun 05 2017 Jiri Pirko - 1.27-1 +- 1.27 release +- teamd: check target host with nap.nah.nd_na_target +- teamd: check ipv6 packet only with the 4 bits version +- teamd: set correct bits for standby ports +- libteam: Add team_get_port_enabled function +- teamd: check port link_up when a port is added with loadbalance runner +- libteam: resynchronize ifinfo after lost RTNLGRP_LINK notifications +- SubmittingPatches: add checkpatch note +- README: add note regarding pull requests +- teamd: escape some sensitive characters in ifname with double quotation marks + +* Fri Feb 10 2017 Fedora Release Engineering - 1.26-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Fri Aug 26 2016 Jiri Pirko - 1.26-1 +- 1.26 release +- teamd: lacp: Do not unselect port if it changes state to "expired" +- man: in lacp it's 'port_config', not 'port_options' +- teamd: fix the issue that network blocks when systemctl stop teamd +- teamd: change to Before=network-pre.target in systemd service file +- man teamd.conf: fix indentation +- misc: fix an out-of-bound write with zero-length hardware address +- teamd: LACP runner does not set Agg bit on first slave + +* Tue Jul 19 2016 Fedora Release Engineering - 1.25-2 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Fri May 20 2016 Jiri Pirko - 1.25-1 +- 1.25 release +- teamd: handle vlan 0 packets +- libteam: fix TEAM_OPTION_TYPE_BOOL type for big endian architectures + +* Fri Apr 15 2016 Jiri Pirko - 1.24-1 +- 1.24 release +- teamd: lacp: use original hwaddr as source address in lacpdus +- teamd: do correct l3/l4 tx hashing with vlans +- libteam: Fix broken links + +* Thu Feb 04 2016 Fedora Release Engineering - 1.23-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Dec 17 2015 Jiri Pirko - 1.23-1 +- 1.23 release +- dbus: don't do in template dbus s. f. +- libteam: retry on NLE_DUMP_INTR error + +* Tue Nov 03 2015 Jiri Pirko - 1.22-1 +- 1.22 release +- dbus: don't do in dbus service file +- teamd: Fix member port state change on master team admin UP. +- teamd: add CAP_NET_RAW capability for LACP packet sockets +- add teamd.conf.in to EXTRA_DIST + +* Mon Oct 05 2015 Jiri Pirko - 1.21-1 +- 1.21 release +- libteam: add missing "static inline" in nl_updates +- libteam: check for definition of NLA_PUT_S* separatelly + +* Mon Oct 05 2015 Jiri Pirko - 1.20-1 +- 1.20 release +- libteam: fix compile error with newer libnl + +* Mon Oct 05 2015 Jiri Pirko - 1.19-1 +- 1.19 release +- teamd: add Before=network.target to systemd service file +- teamd: lacp: update actor state before sending LACP frames +- regenerate dbus policy file from template when user changed +- drop privileges to usr/grp specified at build time +- make teamd's run directory configurable +- create run directory at teamd program start +- teamd: fix cut&paste issue on delay_up +- Add stamp-h1 artifact to .gitignore +- Reduce usock file permissions to 700. +- Do not fail teamd_add_ports() when one port is missing +- Add missing prototypes for admin_state functions +- teamd: lacp: Don't send LACP frames when master team device is down. +- libteam, teamd: Track admin state of team device and add handlers to watch for changes. +- teamd: loadbalance mode lacks a .hwaddr_changed in teamd_event_watch_ops +- libteamdctl: fix timeval value for select + +* Fri Aug 21 2015 Jiri Pirko - 1.18-1 +- 1.18 release +- teamd: lacp: change actor system value on team mac change +- Fix sending duplicate LACP frames at the start of establishing a logical channel. +- Fix teamd memory corruption issues seen by missing port unlink in ifinfo_destroy() +- libteam: Add check to disallow creating device names longer than 15 chars. + +* Wed Jun 17 2015 Fedora Release Engineering - 1.17-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Thu Apr 02 2015 Jiri Pirko - 1.17-1 +- 1.17 release +- update copyright dates +- man: teamdctl: add entry for item set of debug_level +- teamd: lw: nsna_ping: fix na rx handling +- teamd: lw: arp_ping: fix arp rx handling +- libteam: ifinfo: fix rtnl dellink handling + +* Tue Mar 24 2015 Jiri Pirko - 1.16-1 +- 1.16 release +- teamd: events: update ctx->hwaddr_len before calling hwaddr_changed handlers +- teamd: do not change ctx->hwaddr pointer +- teamd: lacp: change port mac address when team mac address is changed +- teamdctl: show port link down count in state output +- teamd: lw: count how many times has been the port down +- init unitialized value to 0/NULL to silence gcc warnings instead of x=x +- libteamdctl: rename recvmsg variable to recv_message +- teamd: check retval of malloc in lw_tipc_link_state_change +- teamd: fix potential memory leak in __set_sockaddr error path +- libteamdctl: fix typo in warning message in cli_zmq_recv +- libteam: check phys_port_id_len in update_phys_port_id +- teamnl: fix potential memory leak in run_cmd_getoption + +* Sat Feb 21 2015 Till Maas - 1.15-2 +- Rebuilt for Fedora 23 Change + https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code + +* Wed Dec 17 2014 Jiri Pirko - 1.15-1 +- 1.15 release +- teamd: ignore SIGPIPE +- libteamdctl: Fix a typo in DBus method name + +* Wed Nov 05 2014 Jiri Pirko - 1.14-1 +- 1.14 release +- teamd: lw_arp_ping: make buf static and avoid returning local pointer + +* Wed Nov 05 2014 Jiri Pirko - 1.13-1 +- 1.13 release +- teamd: fix coding style a bit after previous commit +- teamd: Don't ever kill PID 0 +- teamd: tipc: topology-aware failover +- teamd: tipc: fix team port removal bugs +- zmq: remove unused my_free_msg +- libteamdctl: zmq: remove include of teamd.h +- teamd: add teamd_zmq_common.h to noinst headers + +* Tue Aug 19 2014 Jiri Pirko - 1.12-1 +- 1.12 release +- teamd: teamd_state_val_dump move TEAMD_BUG_ON so it can be actually triggered +- teamd: fix coverity error in teamd_sriov_physfn_addr +- libteamdctl: adjust doc comments to be processed by doxygen +- remove forgotten src dir +- libteam: stringify.c adjust doc comments to be processed by doxygen +- libteam: ports.c adjust doc comments to be processed by doxygen +- libteam: options.c adjust doc comments to be processed by doxygen +- libteam: ifinfo.c adjust doc comments to be processed by doxygen +- libteam: libteam.c adjust doc comments to be processed by doxygen +- add doxygen html doc generation into autoconf +- teamd: tipc: use TIPC_MAX_*_NAME for buffers and check len +- fix strncmp len in ifname2ifindex +- teamd: fix incorrect usage of sizeof in __str_sockaddr + +* Sun Aug 17 2014 Fedora Release Engineering - 1.11-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Thu Jun 26 2014 Jiri Pirko - 1.11-1 +- 1.11 release +- teamd: add forgotten teamd_link_watch.h to noinst_HEADERS +- teamd: add tipc.h kernel header +- teamd: Add support for TIPC link watcher +- teamd: add TIPC link watcher +- teamd: move icmp6 NS/NA ping link watcher to a separate file +- teamd: move arp ping link watcher to a separate file +- teamd: move psr template link watcher to a separate file +- teamd: move ethtool link watcher to a separate file +- teamd_dbus: add PortConfigDump to introspection +- teamd: allow restart on failure through systemd +- teamd: distinguish exit code between init error and runtime error +- man teamd.conf: remove "mandatory" since the options are no longer mandatory +- teamd: add "debug_level" config option +- teamd: allow to change debug level during run +- teamd: register debug callback at the start of callbacks list +- libteam: add team_change_handler_register_head function +- teamd: lacp: update partner info before setting state +- teamd: lacp: do not check SYNCHRO flag before enable of port +- teamd: lacp: "expired" port is not selectable, only "current" +- teamd: lacp: update actor system (mac) before sending lacpdu +- teamd: respect currently set user linkup for created linkwatches +- teamd: split --take-over option into --no-quit-destroy +- teamd: fix port removal when using take_over +- libteam: add SubmittingPatches doc +- libteam: Use u8 for put/get TEAM_ATTR_OPTION_TYPE + +* Sat Jun 07 2014 Fedora Release Engineering - 1.10-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Mon Mar 31 2014 Jiri Pirko - 1.10-1 +- Update to 1.10 +- teamd: quit when our team device is removed from outside +- libteam: ifinfo: watch for dellink messages and call change handlers for that +- initscripts: make ifup/ifdown scripts usable by ifup/ifdown-eth scripts +- teamdctl: unmess check_teamd_team_devname and fix double free there +- man: correct type of "*_host" options +- teamd_link_watch: specify "missed_max" option default value +- bond2team: do not guess source_host option +- teamd_link_watch: allow to send ARP probes if no source_host is specified +- initscripts: do not try to re-add port if it is already there +- teamdctl: add command for easy port presention checking +- Fix potential small memory leak +- usock: accept multiline message string parameters +- libteamdctl: add notice for caller to do not modify or free certain strings +- teamd: do not remove ports from team dev in case of take over mode +- teamd: look for existing ports before adding new ones +- libteam: introduce ream_refresh +- teamd: fixed couple comments. +- teamd: update hwaddr when changing team's macaddr +- redhat: fix boolean types in example 2 +- initscripts: fix port up before master and port down after master +- lb: enable/disable port according to linkwatch state +- fix comment typo in ifdown-Team scripts +- man teamd.conf: Minor improvements to style and language +- man teamdctl: Minor improvements to style and language + +* Thu Jan 23 2014 Jiri Pirko - 1.9-2 +- fix multilib + +* Tue Nov 12 2013 Jiri Pirko - 1.9-1 +- Update to 1.9 +- libteamdctl: remove false lib dependencies +- teamdctl: use new port config get function +- libteamdctl: introduce support for port config get +- libteamdctl: cache reply strings into list +- teamd: introduce PortConfigDump control method +- teamd: make teamd_get_port_by_ifname ifname argument const +- Minor improvements to style and language. +- do not install example binaries +- minor man page(s) correction(s) and lintianisation +- teamdctl: print error message if ifindex cannot be obtained +- fix cflags path in pc files + +* Tue Aug 13 2013 Jiri Pirko - 1.8-1 +- Update to 1.8 + +* Mon Aug 12 2013 Jiri Pirko - 1.7-1 +- Update to 1.7 + +* Thu Aug 08 2013 Jiri Pirko - 1.6-1 +- Update to 1.6 + +* Tue Jul 30 2013 Jiri Pirko - 1.5-1 +- Update to 1.5 + +* Tue Jun 11 2013 Jiri Pirko - 1.3-1 +- Update to 1.3 + +* Wed May 29 2013 Jiri Pirko - 1.2-1 +- Update to 1.2 + +* Thu May 16 2013 Jiri Pirko - 1.1-1 +- Update to 1.1 + +* Thu Jan 31 2013 Jiri Pirko - 1.0-1 +- Update to 1.0 + +* Sun Jan 20 2013 Jiri Pirko - 0.1-27.20130110gitf16805c +- Rebuilt for libnl3 + +* Sun Jan 20 2013 Kalev Lember - 0.1-26.20130110gitf16805c +- Rebuilt for libnl3 + +* Thu Jan 10 2013 Jiri Pirko - 0.1-25.20130110gitf16805c +- Rebase to git commit f16805c + +* Wed Dec 12 2012 Jiri Pirko - 0.1-24.20121212git01fe4bd +- Rebase to git commit 01fe4bd + +* Thu Dec 06 2012 Jiri Pirko - 0.1-23.20121206git659a848 +- Rebase to git commit 659a848 + +* Thu Nov 22 2012 Jiri Pirko - 0.1-22.20121122git18b6701 +- Rebase to git commit 18b6701 + +* Thu Nov 15 2012 Jiri Pirko - 0.1-21.20121115gitffb5267 +- Rebase to git commit ffb5267 + +* Mon Nov 05 2012 Jiri Pirko - 0.1-20.20121105git3b95b34 +- Rebase to git commit 3b95b34 + +* Thu Oct 25 2012 Jiri Pirko - 0.1-19.20121025git7fe7c72 +- Rebase to git commit 7fe7c72 + +* Fri Oct 19 2012 Jiri Pirko - 0.1-18.20121019git1a91059 +- Rebase to git commit 1a91059 + +* Sun Oct 07 2012 Jiri Pirko - 0.1-17.20121007git6f48751 +- Rebase to git commit 6f48751 + +* Tue Sep 25 2012 Jiri Pirko - 0.1-16.20120925gitcc5cddc +- Rebase to git commit cc5cddc + +* Sun Sep 23 2012 Jiri Pirko - 0.1-15.20120923git8448186 +- Rebase to git commit 8448186 + +* Tue Sep 04 2012 Jiri Pirko - 0.1-14.20120904gitbdcf72c +- Rebase to git commit bdcf72c + +* Wed Aug 22 2012 Jiri Pirko - 0.1-13.20120822gitc0d943d +- Rebase to git commit c0d943d + +* Tue Aug 07 2012 Jiri Pirko - 0.1-12.20120807git9fa4a96 +- Rebase to git commit 9fa4a96 + +* Thu Jul 19 2012 Fedora Release Engineering - 0.1-11.20120628gitca7b526 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Thu Jun 28 2012 Jiri Pirko - 0.1-10.20120628gitca7b526 +- Rebase to git commit ca7b526 + +* Wed Jun 27 2012 Jiri Pirko - 0.1-9.20120627git96569f8 +- Rebase to git commit 96569f8 + +* Wed Jun 27 2012 Jiri Pirko - 0.1-8.20120627gitcd6b557 +- Rebase to git commit cd6b557 + +* Wed Jun 20 2012 Jiri Pirko - 0.1-7.20120620gita88fabf +- Rebase to git commit a88fabf + +* Fri May 04 2012 Jiri Pirko - 0.1-6.20120504git11e234a +- Rebase to git commit 11e234a + +* Thu Apr 05 2012 Jiri Pirko - 0.1-5.20120405gita82f8ac +- Rebase to git commit a82f8ac + +* Tue Feb 21 2012 Jiri Pirko - 0.1-4.20120221gitfe97f63 +- Rebase to git commit fe97f63 + +* Mon Jan 30 2012 Jiri Pirko - 0.1-3.20120130gitb5cf2a8 +- Rebase to git commit b5cf2a8 + +* Wed Jan 25 2012 Jiri Pirko - 0.1-2.20120125gita1718f8 +- Rebase to git commit a1718f8 + +* Wed Jan 18 2012 Jiri Pirko - 0.1-1.20120113git302672e +- Initial build.