HI, thank you for your review, i will sned you another patch wit the correction asked.
On Thu, Oct 1, 2015 at 9:42 AM, Patrik Flykt <patrik.fl...@linux.intel.com> wrote: > > Hi, > > git am complains of trailing white space errors on lines 47 and 56. > While looking at the patch, all lines end with ^M, please fix. > > On Mon, 2015-09-28 at 14:48 +0200, Laurent Vaudoit wrote: > > --- > > plugins/ethernet.c | 60 > +++++++++++++++++++++++++++++++++++++++++++++++++++--- > > 1 file changed, 57 insertions(+), 3 deletions(-) > > > > diff --git a/plugins/ethernet.c b/plugins/ethernet.c > > index d176508..456d3cc 100644 > > --- a/plugins/ethernet.c > > +++ b/plugins/ethernet.c > > @@ -32,6 +32,7 @@ > > > > #include <linux/if_vlan.h> > > #include <linux/sockios.h> > > +#include <linux/ethtool.h> > > > > #ifndef IFF_LOWER_UP > > #define IFF_LOWER_UP 0x10000 > > @@ -83,6 +84,54 @@ static int get_vlan_vid(const char *ifname) > > return vid; > > } > > > > +static int get_dsa_port(const char *ifname) > > +{ > > + int sk; > > + int dsaport=-1; > > Spaces before and after = > > > + struct ifreq ifr; > > + struct ethtool_cmd cmd; > > + struct ethtool_drvinfo drvinfocmd; > > + struct vlan_ioctl_args vifr; > > + > > + sk = socket(AF_INET, SOCK_STREAM, 0); > > + if (sk < 0) > > + return -errno; > > + > > + memset(&ifr, 0, sizeof(ifr)); > > + strcpy(ifr.ifr_name, ifname); > > ifr.ifr_name probably has a max lenght and I don't know if it must end > in a \0. If it does not defined to end with a \0 or max length is > specified, a strncpy should be used instead. > > > + > > + /* check if it is a vlan and get physical interface name*/ > > + vifr.cmd = GET_VLAN_REALDEV_NAME_CMD; > > + strncpy(vifr.device1, ifname, sizeof(vifr.device1)); > > + > > + if(ioctl(sk, SIOCSIFVLAN, &vifr) >= 0) > > + strcpy(ifr.ifr_name, vifr.u.device2); > > If this failed, can we return here? Is strcpy safe here for all string > lengths as above? > we do not return her if ioctl fail. In fact, the idea is to check if interface is a vlan, and if so, get the physical interface on which the vlan is "plugged", and so check if this interface is a "dsa" one. > > > + > > + /* get driver info */ > > + drvinfocmd.cmd = ETHTOOL_GDRVINFO; > > + ifr.ifr_data = (caddr_t)&drvinfocmd; > > + > > + /* ioctl failed: */ > > + if (ioctl(sk, SIOCETHTOOL, &ifr) != 0) > > + DBG("Cannot get driver infos\n"); > > Could this be turned around without the debug, as the more likely case > is that this always works, and with the error returned in the return > value. One can later on see that it worked, as the identifier is > different. And the comment is also a bit unnecessary then. > > Compare zero with '!'<expression>. > > > + else { > > + if(strcmp(drvinfocmd.driver,"dsa") == 0) { > > + /* get dsa port*/ > > + cmd.cmd = ETHTOOL_GSET; > > + ifr.ifr_data = (caddr_t)&cmd; > > + > > + /* ioctl failed: */ > > + if (ioctl(sk, SIOCETHTOOL, &ifr) != 0) > > + DBG("Cannot get device settings\n"); > > Same here. > > > + else > > + dsaport = cmd.phy_address; > > + } > > + } > > + close(sk); > > + > > + return dsaport; > > +} > > + > > static int eth_network_probe(struct connman_network *network) > > { > > DBG("network %p", network); > > @@ -126,7 +175,7 @@ static void add_network(struct connman_device > *device, > > struct ethernet_data *ethernet) > > { > > struct connman_network *network; > > - int index, vid; > > + int index, vid,dsaport; > > Nitpick: space after comma. > > > char *ifname; > > > > network = connman_network_create("carrier", > > @@ -140,6 +189,7 @@ static void add_network(struct connman_device > *device, > > if (!ifname) > > return; > > vid = get_vlan_vid(ifname); > > + dsaport = get_dsa_port(ifname); > > > > connman_network_set_name(network, "Wired"); > > > > @@ -149,14 +199,18 @@ static void add_network(struct connman_device > *device, > > } > > > > if (!eth_tethering) { > > - char group[10] = "cable"; > > + char group[16] = "cable"; > > /* > > * Prevent service from starting the reconnect > > * procedure as we do not want the DHCP client > > * to run when tethering. > > */ > > - if (vid >= 0) > > + if((vid >= 0) && (dsaport >= 0)) > > dsaport need only be assigned here, can you move it down here please. I > just noticed that then vid is also misplaced, but don't worry about > that. > > > + snprintf(group, sizeof(group), "p%02x_%03x_cable", > dsaport, vid); > > + else if (vid >= 0) > > snprintf(group, sizeof(group), "%03x_cable", vid); > > + else if (dsaport >= 0) > > + snprintf(group, sizeof(group), "p%02x_cable", > dsaport); > > > > connman_network_set_group(network, group); > > } > > > Patrik > Laurent > > > _______________________________________________ > connman mailing list > connman@connman.net > https://lists.connman.net/mailman/listinfo/connman > _______________________________________________ connman mailing list connman@connman.net https://lists.connman.net/mailman/listinfo/connman