Re: [B.A.T.M.A.N.] [PATCHv2 1/6] batman-adv: add isolation_mark sysfs attribute

Marek Lindner
2013-11-16T05:35:53Z

[-- Attachment #1: Type: text/plain, Size: 2974 bytes --]

On Wednesday 13 November 2013 17:38:00 Antonio Quartulli wrote:
> @@ -692,6 +692,8 @@ static int batadv_softif_init_late(struct net_device
> *dev)>
> #endif
>
> bat_priv->tt.last_changeset = NULL;
> bat_priv->tt.last_changeset_len = 0;
>
> + bat_priv->isolation_mark = 0;
> + bat_priv->isolation_mark_mask = 0;
>
> /* randomize initial seqno to avoid collision */
> get_random_bytes(&random_seqno, sizeof(random_seqno));

Wasn't the plan to initialize isolation_mark_mask with something useful like
0xFFFFFFFF ?

> +/**
> + * batadv_store_isolation_mark - parse and store the isolation mark/mask
> entered by + * the user
> + * @kobj: kobject representing the private mesh sysfs directory
> + * @attr: the batman-adv attribute the user is interacting with
> + * @buf: the buffer containing the user data
> + * @count: number of bytes in the buffer
> + *
> + * Returns 'count' on success or a negative error code in case of failure
> + */
> +static ssize_t batadv_store_isolation_mark(struct kobject *kobj,
> + struct attribute *attr, char *buff,
> + size_t count)
> +{
> + struct net_device *net_dev = batadv_kobj_to_netdev(kobj);
> + struct batadv_priv *bat_priv = netdev_priv(net_dev);
> + uint32_t mark, mask = UINT_MAX;
> + char *mask_ptr;
> +
> + /* parse the mask if it has been specified */
> + mask_ptr = strchr(buff, '/');
> + if (mask_ptr) {
> + *mask_ptr = '\0';
> + mask_ptr++;
> +
> + /* the mask must be entered in hex base as it is going to be a
> + * bitmask and not a prefix length
> + */
> + if (kstrtou32(mask_ptr, 16, &mask) < 0)
> + return -EINVAL;
> + }
> +
> + /* the mark can be entered in any base */
> + if (kstrtou32(buff, 0, &mark) < 0)
> + return -EINVAL;
> +
> + bat_priv->isolation_mark_mask = mask;
> + /* erase bits not covered by the mask */
> + bat_priv->isolation_mark = mark & bat_priv->isolation_mark_mask;
> +
> + batadv_info(net_dev,
> + "New skb mark for extended isolation: %#.8x/%#.8x\n",
> + bat_priv->isolation_mark, bat_priv->isolation_mark_mask);
> +
> + return count;
> +}
> +
> +/**
> + * batadv_show_isolation_mark - print the current isolation mark/mask
> + * @kobj: kobject representing the private mesh sysfs directory
> + * @attr: the batman-adv attribute the user is interacting with
> + * @buf: the buffer that will contain the data to send back to the user
> + *
> + * Returns the number of bytes written into 'buf' on success or a negative
> error + * code in case of failure
> + */
> +static ssize_t batadv_show_isolation_mark(struct kobject *kobj,
> + struct attribute *attr, char *buff)
> +{
> + struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj);
> +
> + return sprintf(buff, "%#.8x/%#.8x\n", bat_priv->isolation_mark,
> + bat_priv->isolation_mark_mask);
> +}

We always have 'show' before 'store' in the sysfs.c file. Please keep the
order.

Where is the sysfs documentation update ?

Cheers,
Marek

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 490 bytes --]