linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ben Greear <greearb@candelatech.com>
To: Johannes Berg <johannes@sipsolutions.net>
Cc: Marcel Holtmann <marcel@holtmann.org>,
	"linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>
Subject: Re: Anyone working on making iw able to specify MAC address at station creation time?
Date: Tue, 30 Sep 2014 10:16:33 -0700	[thread overview]
Message-ID: <542AE571.40007@candelatech.com> (raw)
In-Reply-To: <1409898836.1940.1.camel@jlt4.sipsolutions.net>

On 09/04/2014 11:33 PM, Johannes Berg wrote:
> On Thu, 2014-09-04 at 10:51 -0700, Ben Greear wrote:
>> I'm having issues with udev renaming newly created stations when I have
>> udev rules for wlanX, when wlanX is not already existing.
>>
>> I think specifying MAC on station creation time would solve my problems,
>> but haven't looked closely yet.
>>
>> My version of 'iw' doesn't support setting the MAC on creation, from
>> what I can tel.
>>
>> Curious if anyone else is working on this?
> 
> I think Marcel mentioned wanting this before. There's even an attribute
> in nl80211 already, but it can only be used for P2P_DEVICE I believe, so
> a feature flag or so would be needed to be able to know whether or not
> this would be expected to take any effect (kernels before those future
> changes would ignore the attribute for non-P2P-DEVICE I believe)
> 
> Haven't looked at the code right now, this is all I know.

In the iw code, it seems that the arguments: mesh_id, 4addr, flags
cannot be used at the same time?

I want to add an option pass an optional mac-address as
well.  It would be easier if I processed args in a loop
and removed the exclusivity on those 3 above, but if they
do need to remain exclusive, then I can do that too:


static int handle_interface_add(struct nl80211_state *state,
				struct nl_cb *cb,
				struct nl_msg *msg,
				int argc, char **argv,
				enum id_input id)
{
	char *name;
	char *mesh_id = NULL;
	enum nl80211_iftype type;
	int tpset;

	if (argc < 1)
		return 1;

	name = argv[0];
	argc--;
	argv++;

	tpset = get_if_type(&argc, &argv, &type, true);
	if (tpset)
		return tpset;

	if (argc) {
		if (strcmp(argv[0], "mesh_id") == 0) {
			argc--;
			argv++;

			if (!argc)
				return 1;
			mesh_id = argv[0];
			argc--;
			argv++;
		} else if (strcmp(argv[0], "4addr") == 0) {
			argc--;
			argv++;
			if (parse_4addr_flag(argv[0], msg)) {
				fprintf(stderr, "4addr error\n");
				return 2;
			}
			argc--;
			argv++;
		} else if (strcmp(argv[0], "flags") == 0) {
			argc--;
			argv++;
			if (parse_mntr_flags(&argc, &argv, msg)) {
				fprintf(stderr, "flags error\n");
				return 2;
			}
		} else {
			return 1;
		}
	}

	if (argc)
		return 1;


Thanks,
Ben


-- 
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com


  reply	other threads:[~2014-09-30 17:16 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-04 17:51 Anyone working on making iw able to specify MAC address at station creation time? Ben Greear
2014-09-05  6:33 ` Johannes Berg
2014-09-30 17:16   ` Ben Greear [this message]
2014-09-30 17:44   ` Ben Greear
2014-10-01  8:25     ` Arend van Spriel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=542AE571.40007@candelatech.com \
    --to=greearb@candelatech.com \
    --cc=johannes@sipsolutions.net \
    --cc=linux-wireless@vger.kernel.org \
    --cc=marcel@holtmann.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).