Re: [MeeGo-dev] Trying to sync Buteo with Google

2010-10-13 Thread deepak.kodihalli
Hi, 

-Original Message-
From: meego-dev-boun...@meego.com 
[mailto:meego-dev-boun...@meego.com] On Behalf Of ext Patrick Ohly
Sent: Wednesday, October 13, 2010 2:59 PM
To: Zhu, Yongsheng
Cc: Kavuri Sateesh (Nokia-MS/Bangalore); meego-dev@meego.com
Subject: Re: [MeeGo-dev] Trying to sync Buteo with Google

On Wed, 2010-10-13 at 09:42 +0100, Zhu, Yongsheng wrote:
 Hi, Sateesh  Patrick
 I'm working on trying to sync Buteo with Google service via SyncML 
 protocol. Currently it's blocked because Google service 
sends 'unauthorized' error. See the attached syncML messages 
buteo-msgs.zip.
 Since SyncEvolution can sync with Google correctly, as a 
reference, I also dump its SyncML messages.
 I'm so curious about this since two messages from Buteo and 
SyncEvolution are almost same.

Indeed, no apparent relevant difference stands out. Perhaps 
there is some difference outside of the message content 
itself? Do both programs use the same message encoding (should 
be WBXML for SyncEvolution)? Is the HTTP POST from Buteo going 
to the redirected URL?

The HTTP POST doesn't go the redirected URL AFAIK. It goes to the URL that's 
mentioned in the profile.

If that's all the same, then I only see one possible approach: 
minimize the differences until it succeeds. 

Sateesh, you said that the Google config hasn't been included 
yet because not enough testing was done. Has any testing been 
done? Did you get past the authentication problem?

--
Best Regards, Patrick Ohly

The content of this message is my personal opinion only and 
although I am an employee of Intel, the statements I make here 
in no way represent Intel's position on the issue, nor am I 
authorized to speak on behalf of Intel on this matter.

Regards,
Deepak
___
MeeGo-dev mailing list
MeeGo-dev@meego.com
http://lists.meego.com/listinfo/meego-dev


Re: [MeeGo-dev] Trying to sync Buteo with Google

2010-10-14 Thread deepak.kodihalli
Hi Patrick and Yongsheng,

I found the root cause here. So the post was going to the redirected URI, that 
wasn't the issue. The respURI sent to us by Google was percent encoded and 
there was a bug in the stack in creation of QUrls from percent encoded URLs. I 
fixed that and it works fine. Will be pushing the changes soon to buteo-syncml.

Regards,
Deepak 

-Original Message-
From: meego-dev-boun...@meego.com 
[mailto:meego-dev-boun...@meego.com] On Behalf Of ext Patrick Ohly
Sent: Thursday, October 14, 2010 2:15 PM
To: Zhu, Yongsheng
Cc: Kavuri Sateesh (Nokia-MS/Bangalore); meego-dev@meego.com
Subject: Re: [MeeGo-dev] Trying to sync Buteo with Google

On Thu, 2010-10-14 at 09:28 +0100, Zhu, Yongsheng wrote:
  Deepak said that Buteo does not follow the redirect that 
it gets in 
  the first response from the SyncML server. This redirect 
is part of 
  the SyncML protocol; if Deepak is right, then this is the 
root cause 
  of the problem and needs to be fixed.
 You mean respURI in the 'response' syncml message? I found 
it has been 
 used to send next message.

Yes. So it already behaves as it should. Good.

  Sending credentials each time is merely a workaround and not one 
  that we can rely on (Google might change their behavior 
for handling 
  ensuing messages at the starting URL).
 Yes, it should be a workaround to help us overcome this one.

Fair enough. Note that there have been some authentication 
related changes recently in the upstream buteo-syncml repo. 
The commit messages don't say which server provided the 
motivation for these changes; perhaps they also help with Google.

In the meantime, let's use your patch.

--
Best Regards, Patrick Ohly

The content of this message is my personal opinion only and 
although I am an employee of Intel, the statements I make here 
in no way represent Intel's position on the issue, nor am I 
authorized to speak on behalf of Intel on this matter.


___
MeeGo-dev mailing list
MeeGo-dev@meego.com
http://lists.meego.com/listinfo/meego-dev

___
MeeGo-dev mailing list
MeeGo-dev@meego.com
http://lists.meego.com/listinfo/meego-dev


Re: [MeeGo-dev] Buteo MTP + gadgetfs

2011-01-16 Thread deepak.kodihalli
Hi, 

-Original Message-
From: ext Patrick Ohly [mailto:patrick.o...@intel.com] 
Sent: Friday, January 14, 2011 9:22 PM
To: Kavuri Sateesh (Nokia-MS/Bangalore); amitc...@gmail.com; 
Kodihalli Deepak (Nokia-MS/Bangalore); Puranik Santosh 
(Nokia-MS/Bangalore); kalle.aalto...@sasken.com; 
tuomas.kat...@ixonos.com; mhuna...@gmail.com; 
juha.paalija...@ixonos.com; Duggirala Karthik.2 (Nokia-MS/Helsinki)
Cc: MeeGo-dev; Drews, Paul
Subject: Buteo MTP + gadgetfs

Permissions
===

Currently the code runs as part of mtp_test when started as 
root. That's necessary because /dev/gadget must be 
read/writable. But eventually the code needs to run as plugin 
as normal user inside msycnd. Initially the process accesses 
/dev/gadget/driver to configure USB, then some new entries 
(like /dev/gadget/ep-a) which are created by gadgetfs based on 
that configuration. We could do a chmod as root to grant the 
msyncd process read/write permission for /dev/gadget/driver, 
but that doesn't help with the additional files, which are 
exclusively for root. If anyone knows how to solve this, 
ideally without patching the kernel, please speak up...

This can be done by writing a udev script where you can set the required 
permissions, add the files to a group, etc.

Starting the MTP server plugin
==

mtp.xml specifies:
profile name=mtp type=server 
key name=usb_transport value=true/ /profile

Under which circumstances will that server be activated right 
now in MeeGo's msyncd? If I read the buteo-syncfw code 
correctly, it would be activated if USB gets connected, which 
in turn is detected if usbmoded support is enabled - which as 
far as I know, is not the case in MeeGo because usbmoded is 
not in MeeGo.

Yes, usb_moded is not in meego, but I hope that doesn't mean that USB 
connectivity can't be determined.

Would it be acceptable to create a pseudo 
Sync::CONNECTIVITY_ALWAYS transport? A server plugin 
specifying that in its XML config then would be activated as 
soon as msyncd starts and remain active as long as msyncd 
runs, and mtp.xml could be changed to use that.

That's already there, but it would be pointless to load the MTP plug-in always.

Paths, configuration


Why is /usr/share/mtp/deviceinfo.xml copied to 
/home/user/.mtpdeviceinfo.xml? The code says that it must be 
writable, but it did not become clear to me why the file must be
writable:

That's because device properties can be get/set by the initiator. We need to 
store them persistently if there's a change.

How can the /home/user/MyDocs path be made 
configurable? Would deviceinfo.xml be a good place?

/home/user/MyDocs represents the root of a storage, as defined in the MTP1 
spec. We can have multiple storages, and each would have their own root. The 
root can even be an abstraction, for eg if we have a contacts storage. However, 
deviceinfo.xml would not be the right place for this. I agree that a storage 
plug-in should declare it's root, so we need a confguration scheme for storage 
plug-in's now. As of now, as you know, we have only one storage plug-in.

media and Phone Memory are also hard-coded as description 
of that directory. Are these presented to the MTP host?

Yes, they form part of the storage info as specified in MTP1.

What about providing access to more than one directory?

Sorry, I didn't understand. Do you mean more than one root, if so that's 
possible of course via multiple MTP storages, or do you mean multiple 
directories under the root? The latter works of course, because everything 
under the root is enumeratable.

Are symbolic links followed? In other words, if I set up
  ~/MyDocs/
  Videos - ~/Videos
  Pictures - ~/Pictures
  Music - ~/Music
  ...
would that provide access also to the content of ~/Videos and 
~/Pictures?

Yes, it could be prevented by the storage though. The initiator wouldn't know, 
as the purpose of the MTP storage is to abstract the internals.

The code currently tries to load the libfsstorage.so module 
from /usr/share/mtp, but it is installed in /usr/lib/mtp, 
which is indeed where it should be. Okay to change the code?

Yes.

MTP transport API
=

This is from an email that Paul sent privately earlier, still 
needs an answer as far as I know.

- snip --

I [Paul] ran into a design issue around Zero-Length-Packets 
while doing this.  The USB spec (paraphrased) says that 
transfers exceeding 1 packet size get transmitted and ended as follows:

() All packets up to the last shall be the maximum packet 
size.  If your higher-level protocol lets you know the size of 
the transfer ahead of time (e.g., fixed-size, info from a 
prior transaction, etc.) then you are done when all the data 
is transferred.  No additional logic or packets necessary.

() However, if you don't know the length ahead of time (e.g., 
the length is variable, or the sender decides to truncate 
early) then 

Re: [MeeGo-dev] Buteo MTP + gadgetfs

2011-01-17 Thread deepak.kodihalli
Hi, 

-Original Message-
From: ext Patrick Ohly [mailto:patrick.o...@intel.com] 
Sent: Monday, January 17, 2011 1:14 PM
To: Kodihalli Deepak (Nokia-MS/Bangalore)
Cc: Kavuri Sateesh (Nokia-MS/Bangalore); amitc...@gmail.com; 
Puranik Santosh (Nokia-MS/Bangalore); 
kalle.aalto...@sasken.com; tuomas.kat...@ixonos.com; 
mhuna...@gmail.com; juha.paalija...@ixonos.com; Duggirala 
Karthik.2 (Nokia-MS/Helsinki); meego-dev@meego.com; Drews, Paul
Subject: RE: Buteo MTP + gadgetfs

On Mo, 2011-01-17 at 04:39 +, deepak.kodiha...@nokia.com wrote:

 Would it be acceptable to create a pseudo Sync::CONNECTIVITY_ALWAYS 
 transport? A server plugin specifying that in its XML config then 
 would be activated as soon as msyncd starts and remain 
active as long 
 as msyncd runs, and mtp.xml could be changed to use that.
 
 That's already there, but it would be pointless to load the 
MTP plug-in always.

I agree that a true usb_moded replacement would be nice, but 
in the meantime I don't see an alternative to loading the 
plugin all the time.

How is this already there? I only see CONNECTIVITY_USB, 
CONNECTIVITY_INTERNET, CONNECTIVITY_BT.

There'a a load_without_transport profile key, it could be used for this 
purpose.

 /home/user/MyDocs represents the root of a storage, as 
defined in the MTP1 spec.

Yes, but the spec doesn't mandate what the local path has to 
be, does it? I agree with Alexander, it would be nice if all 
the standard freedesktop dirs could be exposed via MTP instead 
of forcing devices to use a single MyDocs directory.

Like I said, we should leave this decision to the storage plug-in. We can use 
XDG user-dirs for file-system storages, but how about a contacts storage?

  We can have multiple storages, and each would have their own root.

I think it would be more natural to have one root which 
contains multiple, independent directories.

Well that's as per the MTP spec, each storage has it's own root. I can tell the 
host that my contacts storage's root it /contacts, and the host will show 
that as a directory with contacts objects contained within, but this doesn't 
mean there's a /contacts directory on the device. The root is an abstraction 
provided by the MTP storage(s).

How about this idea: the root of the MTP plugin filestorage is 
/etc/mtp/filestorage/root. It can be a symlink to 
/home/user/MyDocs (same result as right now), or a directory 
with symlinks to multiple other directories.

That might work only for file-system storages.

Best Regards

Patrick Ohly
Senior Software Engineer

Intel GmbH
Open Source Technology Center   
Pützstr. 5  Phone: +49-228-2493652
53129 Bonn
Germany

Regards,
Deepak
___
MeeGo-dev mailing list
MeeGo-dev@meego.com
http://lists.meego.com/listinfo/meego-dev


Re: [MeeGo-dev] Buteo MTP + gadgetfs

2011-01-17 Thread deepak.kodihalli
Hi, 

-Original Message-
From: ext Patrick Ohly [mailto:patrick.o...@intel.com] 
Sent: Monday, January 17, 2011 5:06 PM
To: Kodihalli Deepak (Nokia-MS/Bangalore)
Cc: Kavuri Sateesh (Nokia-MS/Bangalore); amitc...@gmail.com; 
Puranik Santosh (Nokia-MS/Bangalore); 
kalle.aalto...@sasken.com; tuomas.kat...@ixonos.com; 
mhuna...@gmail.com; juha.paalija...@ixonos.com; Duggirala 
Karthik.2 (Nokia-MS/Helsinki); meego-dev@meego.com; Drews, Paul
Subject: RE: Buteo MTP + gadgetfs

Speaking about plain files, can you comment on this special Playlist
sub-directory which is currently hard-coded in the source? Can 
this be removed together with making the file storage plugin 
work without prescribing a specific file layout?

windows expects a playlists directory to be present in the root, containing 
abstract playlist files (if there are playlists on the device), in order to be 
able to sync playlists.

Best Regards, Patrick Ohly

The content of this message is my personal opinion only and 
although I am an employee of Intel, the statements I make here 
in no way represent Intel's position on the issue, nor am I 
authorized to speak on behalf of Intel on this matter.

Regards,
Deepak
___
MeeGo-dev mailing list
MeeGo-dev@meego.com
http://lists.meego.com/listinfo/meego-dev


Re: [MeeGo-dev] Buteo MTP + gadgetfs

2011-01-17 Thread deepak.kodihalli
Hi, 

-Original Message-
From: ext Drews, Paul [mailto:paul.dr...@intel.com] 
Sent: Tuesday, January 18, 2011 1:17 AM
To: Kodihalli Deepak (Nokia-MS/Bangalore); Ohly, Patrick; 
Kavuri Sateesh (Nokia-MS/Bangalore); amitc...@gmail.com; 
Puranik Santosh (Nokia-MS/Bangalore); 
kalle.aalto...@sasken.com; tuomas.kat...@ixonos.com; 
mhuna...@gmail.com; juha.paalija...@ixonos.com; Duggirala 
Karthik.2 (Nokia-MS/Helsinki)
Cc: meego-dev@meego.com
Subject: RE: Buteo MTP + gadgetfs


Here's what I'm worried about:

Case A:  MTP responder sends data over bulk pipe where the 
length is known ahead of time.  Data takes multiple packets 
and is an exact multiple of packet length.  MTP responder asks 
for fsync on the last sendData() call.  Since the length is 
known ahead of time, a ZLP should _not_ be sent according to 
the USB spec.

Even though the initiator knows the length in advance, it expects a ZLP if the 
packet size is a multiple of the USB max packet length. We have seen this with 
both windows and linux (libmtp) initiators.

Case B:  MTP responder sends data over bulk pipe but the 
length is _not_ known ahead of time.  Data takes multiple 
packets and is an exact multiple of packet length.  MTP 
responder asks for fsync on the last sendData() call.
Since the length is _not_ known ahead of time, a ZLP _should_ 
be sent according to the USB spec.

AFAIK, this is not possible with MTP1 at least, i.e the length _is_ always 
known.

Regards,
Deepak
___
MeeGo-dev mailing list
MeeGo-dev@meego.com
http://lists.meego.com/listinfo/meego-dev


Re: [MeeGo-dev] Buteo MTP + gadgetfs

2011-01-17 Thread deepak.kodihalli
Hi, 

-Original Message-
From: ext Patrick Ohly [mailto:patrick.o...@intel.com] 
Sent: Monday, January 17, 2011 5:27 PM
To: Kodihalli Deepak (Nokia-MS/Bangalore)
Cc: Kavuri Sateesh (Nokia-MS/Bangalore); amitc...@gmail.com; 
Puranik Santosh (Nokia-MS/Bangalore); 
kalle.aalto...@sasken.com; tuomas.kat...@ixonos.com; 
mhuna...@gmail.com; juha.paalija...@ixonos.com; Duggirala 
Karthik.2 (Nokia-MS/Helsinki); meego-dev@meego.com; Drews, Paul
Subject: RE: Buteo MTP + gadgetfs

On Mo, 2011-01-17 at 11:45 +, deepak.kodiha...@nokia.com wrote:
 Speaking about plain files, can you comment on this special 
Playlist
 sub-directory which is currently hard-coded in the source? Can this 
 be removed together with making the file storage plugin 
work without 
 prescribing a specific file layout?
 
 windows expects a playlists directory to be present in the root, 
 containing abstract playlist files (if there are playlists on the 
 device), in order to be able to sync playlists.

What happens if there is no such directory? Unability to sync 
playlists or something worse?

That would mean no playlist sync with windows (media player), nothing more.

Is there some code in MeeGo which maps these playlists back to 
something used in MeeGo (whatever that is - not sure at the 
moment)? How would/does that fit into the file storage plugin?

Yes, that's tracker. You can check the code in our fsstorageplugin which deals 
with reading and writing playlists from tracker.

--
Best Regards

Patrick Ohly
Senior Software Engineer

Intel GmbH
Open Source Technology Center   
Pützstr. 5  Phone: +49-228-2493652
53129 Bonn
Germany

Regards,
Deepak
___
MeeGo-dev mailing list
MeeGo-dev@meego.com
http://lists.meego.com/listinfo/meego-dev


Re: [MeeGo-dev] Buteo MTP + gadgetfs

2011-01-31 Thread deepak.kodihalli
Hi, 

-Original Message-
From: meego-dev-boun...@meego.com 
[mailto:meego-dev-boun...@meego.com] On Behalf Of ext Patrick Ohly
Sent: Monday, January 31, 2011 6:01 PM
To: Tony
Cc: Kavuri Sateesh (Nokia-MS/Bangalore); Duggirala Karthik.2 
(Nokia-MS/Helsinki); meego-dev@meego.com; 
tuomas.kat...@ixonos.com; Aggarwal Amit.5 
(Nokia-MS/Bangalore); kalle.aalto...@sasken.com; mhuna...@gmail.com
Subject: Re: [MeeGo-dev] Buteo MTP + gadgetfs

The trouble is that the kernel code that supports reads and 
writes for gadgetfs endpoints doesn't support non-blocking I/O 
properly.  The select() notification and associated 
QSocketNotifier fires immediately and continuously even 
without data ready to read, and a read() on the file-desciptor 
blocks waiting for data even with O_NONBLOCK set.

This is strange. If the fd is not set to O_NONBLOCK, then of course IO on it 
would block, but does that mean that if one poll()'s or does a select() on that 
fd, they would get notified even if there's no data to be read? This must be 
happening due to a bug in functionfs.

Best Regards, Patrick Ohly

The content of this message is my personal opinion only and 
although I am an employee of Intel, the statements I make here 
in no way represent Intel's position on the issue, nor am I 
authorized to speak on behalf of Intel on this matter.

Regards,
Deepak
___
MeeGo-dev mailing list
MeeGo-dev@meego.com
http://lists.meego.com/listinfo/meego-dev


Re: [MeeGo-dev] Help: msyncd periodical polling every 10 seconds

2011-03-06 Thread deepak.kodihalli
Hi, 

-Original Message-
From: meego-dev-boun...@meego.com 
[mailto:meego-dev-boun...@meego.com] On Behalf Of ext Yung, Winson W
Sent: Monday, March 07, 2011 8:28 AM
To: Sateesh Babu
Cc: meego-dev@meego.com
Subject: Re: [MeeGo-dev] Help: msyncd periodical polling every 
10 seconds

Thanks for the hint, however your steps didn't yield any new 
findings, here is what all I see after msyncd was launched.
I am using the msyncd that came with 
buteo-syncfw-0.5.4-3.15.i586.rpm package, and I was running it 
on Intel Medfield MeeGo platform. Once the program entering 
the main loop, there is nothing coming out of console even 
though set_sync_log_level was set to 4.

Maybe lsof might give you more information : lsof -p `pidof msyncd`.

You could then check on which fd the poll happens and see what that fd 
corresponds to.

Regards,
Deepak

[meego@localhost ~]$ cd /usr/bin
[meego@localhost bin]$ export DISPLAY=:0.0 [meego@localhost 
bin]$ cd /usr/bin [meego@localhost bin]$ ./msyncd  [1] 1193

[meego@localhost bin]$ Warning: QDBusObjectPath: invalid path 
Warning: QDBusObjectPath: invalid path 
Warning: QDBusObjectPath: invalid path 
Warning: Object::connect: No such signal 
Buteo::NetworkManager::sessionConnected() in TransportTracker.cpp:78
Warning: Object::connect: No such signal 
Buteo::NetworkManager::sessionError() in TransportTracker.cpp:80
Warning: ProfileManager.cpp 1054 : Profile file not found: 
/home/meego/.sync/profiles/storage/hsms.x
Warning: ProfileManager.cpp 151 : Failed to load profile: hsms

[meego@localhost bin]$ tail -f ~/.sync/synchronizer.log
Debug: SyncDBusConnection.cpp 75 : DBus Connection Name: 
sync-session-bus-0
Debug: SyncDBusConnection.cpp 76 : DBus is Connected: true
Debug: SyncDBusConnection.cpp 77 : DBus Connection ID: :1.1
Debug: static QDBusConnection 
Buteo::SyncDBusConnection::sessionBus() :Exit, execution time: 2 ms
Debug: SyncBackup.cpp 54 : Registered sync backup to D-Bus
Debug: Buteo::SyncBackup::SyncBackup() :Exit, execution time: 7 ms
Debug: bool Buteo::Synchronizer::initialize() :Exit, 
execution time: 500 ms
Debug: SyncSigHandler::SyncSigHandler(QObject*, const char*) :Entry
Debug: SyncSigHandler::SyncSigHandler(QObject*, const char*) 
:Exit, execution time: 1 ms
Debug: main.cpp 94 : Entering event loop

/Winson

-Original Message-
From: Sateesh Babu [mailto:sateesh.kav...@gmail.com]
Sent: Friday, March 04, 2011 9:29 PM
To: Yung, Winson W
Cc: meego-dev@meego.com
Subject: Re: [MeeGo-dev] Help: msyncd periodical polling every 10 
seconds

Hi,

Which hardware are you running this test (N900/Netbook/Aava/...) and 
what is the software version you are using?

In order check whats going on, do the following:
# echo 4  /etc/sync/set_sync_log_level # pkill -9 msyncd # restart 
msyncd # tail -f /home/user/.sync/synchronizer.log

This should give more information of what is going on in the 
background

--
Sateesh

On Sat, Mar 5, 2011 at 2:34 AM, Yung, Winson W 
winson.w.y...@intel.com
wrote:
 Hi all, I have been noticing that msyncd (MeeGo generic sync service
 middleware) has exhibited a pattern of polling every 10 
seconds while
system
 is idle (at MeeGo home page). I am trying to identify what causes 
 this periodical polling but without much progress. This is 
part of my
effort to
 keep the system awake from unnecessary SW wake up in order to 
 maintain
its
 low power state. Can someone provide suggestions here on what is the
likely
 cause of the polling, and/or how to track down this? This has been 
 challenging because it uses glib and Qt infrastructure, and 
I have no 
 visibility (i.e. debug logging) of what's going on inside these
libraries.



 Here I include a portion of the strace output of the msyncd, you can
see the
 lines (high lighted in red) repeats roughly every 10 seconds because
the
 poll(timeout=10sec).



 clock_gettime(CLOCK_MONOTONIC, {836, 938422967}) = 0

 clock_gettime(CLOCK_MONOTONIC, {836, 947477034}) = 0

 socket(PF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_IP) = 18

 socket(PF_NETLINK, SOCK_RAW, 0) = 19

 bind(19, {sa_family=AF_NETLINK, pid=0, groups=}, 12) = 0

 getsockname(19, {sa_family=AF_NETLINK, pid=802, groups=},
[12]) = 0

 time(NULL)  = 5741

 sendto(19, \24\0\0\0\22\0\1\3m\26\0\0\0\0\0\0\0\0\0\0, 20, 0, 
 {sa_family=AF_NETLINK, pid=0, groups=}, 12) = 20

 recvmsg(19, {msg_name(12)={sa_family=AF_NETLINK, pid=0,
groups=},

msg_iov(1)=[{\250\1\0\0\20\0\2\0m\26\0\0\\3\0\0\0\0\4\3\1\0\
0\0I\0\1\
0
\0\0\0\0...,
 4096}], msg_controllen=0, msg_flags=0}, 0) 4

 recvmsg(19, {msg_name(12)={sa_family=AF_NETLINK, pid=0,
groups=},

msg_iov(1)=[{\24\0\0\0\3\0\2\0m\26\0\0\\3\0\0\0\0\0\0\1\0\0\
0I\0\1\0\
0
\0\0\0...,
 4096}], msg_controllen=0, msg_flags=0}, 0) = 0

 sendto(19, \24\0\0\0\26\0\1\3n\26\0\0\0\0\0\0\0\0\0\0, 20, 0, 
 {sa_family=AF_NETLINK, pid=0, groups=}, 12) = 20

 recvmsg(19, {msg_name(12)={sa_family=AF_NETLINK, pid=0,
groups=},