)]}'
{
  "log": [
    {
      "commit": "bb9b18fb55b03477fe5bdd3e97245d6d4d3dee4f",
      "tree": "02d730abd6f31752a842f8c1d9f30d62d185e0b2",
      "parents": [
        "663efa3696232300a8ad3a46bb10482fc0b861cf"
      ],
      "author": {
        "name": "Thomas Graf",
        "email": "tgraf@suug.ch",
        "time": "Sat Nov 30 13:21:30 2013 +0100"
      },
      "committer": {
        "name": "Jesse Gross",
        "email": "jesse@nicira.com",
        "time": "Mon Jan 06 15:51:53 2014 -0800"
      },
      "message": "genl: Add genlmsg_new_unicast() for unicast message allocation\n\nAllocates a new sk_buff large enough to cover the specified payload\nplus required Netlink headers. Will check receiving socket for\nmemory mapped i/o capability and use it if enabled. Will fall back\nto non-mapped skb if message size exceeds the frame size of the ring.\n\nSigned-of-by: Thomas Graf \u003ctgraf@suug.ch\u003e\nReviewed-by: Daniel Borkmann \u003cdborkman@redhat.com\u003e\nSigned-off-by: Jesse Gross \u003cjesse@nicira.com\u003e\n"
    },
    {
      "commit": "91398a0992c8aa18eb7749060b75761ece5ddc57",
      "tree": "4e776ab54477ad1becb6c404805dab8db723729a",
      "parents": [
        "220815a9665f7deca98a09ecca655044f94cfa44"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Thu Nov 21 18:20:28 2013 +0100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 21 13:09:43 2013 -0500"
      },
      "message": "genetlink: fix genl_set_err() group ID\n\nFix another really stupid bug - I introduced genl_set_err()\nprecisely to be able to adjust the group and reject invalid\nones, but then forgot to do so.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "220815a9665f7deca98a09ecca655044f94cfa44",
      "tree": "9708d1e73ac82cb2514a1f3305695962281c8852",
      "parents": [
        "e40526cb20b5ee53419452e1f03d97092f144418"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Thu Nov 21 18:17:04 2013 +0100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 21 13:09:43 2013 -0500"
      },
      "message": "genetlink: fix genlmsg_multicast() bug\n\nUnfortunately, I introduced a tremendously stupid bug into\ngenlmsg_multicast() when doing all those multicast group\nchanges: it adjusts the group number, but then passes it\nto genlmsg_multicast_netns() which does that again.\n\nSomehow, my tests failed to catch this, so add a warning\ninto genlmsg_multicast_netns() and remove the offending\ngroup ID adjustment.\n\nAlso add a warning to the similar code in other functions\nso people who misuse them are more loudly warned.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2a94fe48f32ccf7321450a2cc07f2b724a444e5b",
      "tree": "e5a066d8f83d8822d448421019a4503f361295f9",
      "parents": [
        "68eb55031da7c967d954e5f9415cd05f4abdb692"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Tue Nov 19 15:19:39 2013 +0100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 19 16:39:06 2013 -0500"
      },
      "message": "genetlink: make multicast groups const, prevent abuse\n\nRegister generic netlink multicast groups as an array with\nthe family and give them contiguous group IDs. Then instead\nof passing the global group ID to the various functions that\nsend messages, pass the ID relative to the family - for most\nfamilies that\u0027s just 0 because the only have one group.\n\nThis avoids the list_head and ID in each group, adding a new\nfield for the mcast group ID offset to the family.\n\nAt the same time, this allows us to prevent abusing groups\nagain like the quota and dropmon code did, since we can now\ncheck that a family only uses a group it owns.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "68eb55031da7c967d954e5f9415cd05f4abdb692",
      "tree": "75751944b0c808ba191bcc6a752389593c41e805",
      "parents": [
        "62b68e99faa802352e9cb2ae91adecd8dfddf1b8"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Tue Nov 19 15:19:38 2013 +0100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 19 16:39:06 2013 -0500"
      },
      "message": "genetlink: pass family to functions using groups\n\nThis doesn\u0027t really change anything, but prepares for the\nnext patch that will change the APIs to pass the group ID\nwithin the family, rather than the global group ID.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "62b68e99faa802352e9cb2ae91adecd8dfddf1b8",
      "tree": "a76d8342a57b8451bef657919201c76a5333f1f1",
      "parents": [
        "c2ebb908469d507ff400dad94efc755e6c799672"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Tue Nov 19 15:19:37 2013 +0100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 19 16:39:06 2013 -0500"
      },
      "message": "genetlink: add and use genl_set_err()\n\nAdd a static inline to generic netlink to wrap netlink_set_err()\nto make it easier to use here - use it in openvswitch (the only\ngeneric netlink user of netlink_set_err()).\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c2ebb908469d507ff400dad94efc755e6c799672",
      "tree": "d5a8ef3abc30ed3fa6303bb72a3bf1ce5a84a61b",
      "parents": [
        "06fb555a273dc8ef0d876f4e864ad11cfcea63e0"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Tue Nov 19 15:19:36 2013 +0100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 19 16:39:06 2013 -0500"
      },
      "message": "genetlink: remove family pointer from genl_multicast_group\n\nThere\u0027s no reason to have the family pointer there since it\ncan just be passed internally where needed, so remove it.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "06fb555a273dc8ef0d876f4e864ad11cfcea63e0",
      "tree": "780b6e332c0411d67ad3e8428e4240bb54f60c33",
      "parents": [
        "03ed3827463ffb7210c5ef6a1a6f64c776f9daec"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Tue Nov 19 15:19:35 2013 +0100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 19 16:39:06 2013 -0500"
      },
      "message": "genetlink: remove genl_unregister_mc_group()\n\nThere are no users of this API remaining, and we\u0027ll soon\nchange group registration to be static (like ops are now)\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c53ed7423619b4e8108914a9f31b426dd58ad591",
      "tree": "03a469a7f00d99ff73bf947b5306369bfaff18f5",
      "parents": [
        "dbde497966804e63a38fdedc1e3815e77097efc2"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Tue Nov 19 15:19:31 2013 +0100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 19 16:39:05 2013 -0500"
      },
      "message": "genetlink: only pass array to genl_register_family_with_ops()\n\nAs suggested by David Miller, make genl_register_family_with_ops()\na macro and pass only the array, evaluating ARRAY_SIZE() in the\nmacro, this is a little safer.\n\nThe openvswitch has some indirection, assing ops/n_ops directly in\nthat code. This might ultimately just assign the pointers in the\nfamily initializations, saving the struct genl_family_and_ops and\ncode (once mcast groups are handled differently.)\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "568508aa0724cc39bcf7d3d8001bd27a45609800",
      "tree": "11e9648ccbd27021e18307f5639684b5c563c19c",
      "parents": [
        "052e31281575b2894aad09672bd9ac435488ff04"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Fri Nov 15 14:19:08 2013 +0100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Nov 15 20:50:23 2013 -0500"
      },
      "message": "genetlink: unify registration functions\n\nNow that the ops assignment is just two variables rather than a\nlong list iteration etc., there\u0027s no reason to separately export\n__genl_register_family() and __genl_register_family_with_ops().\n\nUnify the two functions into __genl_register_family() and make\ngenl_register_family_with_ops() call it after assigning the ops.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3f5ccd06aecd0eb1651dd451439d5cb365170854",
      "tree": "422a5d96f5a43193e7792ec93bb6faf10b85dc87",
      "parents": [
        "4534de8305b3f1460a527a0cda0e3dc2224c6f0c"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Thu Nov 14 17:14:47 2013 +0100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 14 17:10:41 2013 -0500"
      },
      "message": "genetlink: make genl_ops flags a u8 and move to end\n\nTo save some space in the struct on 32-bit systems,\nmake the flags a u8 (only 4 bits are used) and also\nmove them to the end of the struct.\n\nThis has no impact on 64-bit systems as alignment of\nthe struct in an array uses up the space anyway.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f84f771d942182e39a56ec2989d6a67d3ca33a13",
      "tree": "6649cb4e7b88ebec4826252a1a3675fb75ba4621",
      "parents": [
        "d91824c08fbcb265ec930d863fa905e8daa836a4"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Thu Nov 14 17:14:45 2013 +0100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 14 17:10:41 2013 -0500"
      },
      "message": "genetlink: allow making ops const\n\nAllow making the ops array const by not modifying the ops\nflags on registration but rather only when ops are sent\nout in the family information.\n\nNo users are updated yet except for the pre_doit/post_doit\ncalls in wireless (the only ones that exist now.)\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d91824c08fbcb265ec930d863fa905e8daa836a4",
      "tree": "2f3c2f27b68f46e1dc5e1fc3139cd52942f818b2",
      "parents": [
        "3686ec5e84977eddc796903177e7e0a122585c11"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Thu Nov 14 17:14:44 2013 +0100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 14 17:10:41 2013 -0500"
      },
      "message": "genetlink: register family ops as array\n\nInstead of using a linked list, use an array. This reduces\nthe data size needed by the users of genetlink, for example\nin wireless (net/wireless/nl80211.c) on 64-bit it frees up\nover 1K of data space.\n\nRemove the attempted sending of CTRL_CMD_NEWOPS ctrl event\nsince genl_ctrl_event(CTRL_CMD_NEWOPS, ...) only returns\n-EINVAL anyway, therefore no such event could ever be sent.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3686ec5e84977eddc796903177e7e0a122585c11",
      "tree": "caef656dbd5cec37ac404e20f8f76dca44c12205",
      "parents": [
        "b61a5eea5904198d45e775c342be010a23decbe3"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Thu Nov 14 17:14:43 2013 +0100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 14 17:10:40 2013 -0500"
      },
      "message": "genetlink: remove genl_register_ops/genl_unregister_ops\n\ngenl_register_ops() is still needed for internal registration,\nbut is no longer available to users of the API.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ff2b94d2c3d075d0f2fde330e3b5a73053c426c7",
      "tree": "1325d64684fc2cf059c6c271cefc5aff67914767",
      "parents": [
        "8aae218f58f44471c6715e695da5ed9f54dd4491"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Fri Sep 20 11:23:27 2013 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Sep 20 14:49:33 2013 -0400"
      },
      "message": "genetlink.h: Remove extern from function prototypes\n\nThere are a mix of function prototypes with and without extern\nin the kernel sources.  Standardize on not using extern for\nfunction prototypes.\n\nFunction prototypes don\u0027t need to be written with extern.\nextern is assumed by the compiler.  Its use is as unnecessary as\nusing auto to declare automatic/local variables in a block.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "33c6b1f6b154894321f5734e50c66621e9134e7e",
      "tree": "b064251e8081c3dba7115b44ea6db15d240e1204",
      "parents": [
        "9b96309c5b0b9e466773c07a5bc8b7b68fcf010a"
      ],
      "author": {
        "name": "Pravin B Shelar",
        "email": "pshelar@nicira.com",
        "time": "Fri Aug 23 12:45:04 2013 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 28 17:19:17 2013 -0400"
      },
      "message": "genl: Hold reference on correct module while netlink-dump.\n\nnetlink dump operations take module as parameter to hold\nreference for entire netlink dump duration.\nCurrently it holds ref only on genl module which is not correct\nwhen we use ops registered to genl from another module.\nFollowing patch adds module pointer to genl_ops so that netlink\ncan hold ref count on it.\n\nCC: Jesse Gross \u003cjesse@nicira.com\u003e\nCC: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: Pravin B Shelar \u003cpshelar@nicira.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "def3117493eafd9dfa1f809d861e0031b2cc8a07",
      "tree": "93edfbb60f9d57d37d5643062cf3d41befc18579",
      "parents": [
        "133b94245c54bb2d8832bfb15975b931bc00d914"
      ],
      "author": {
        "name": "Pravin B Shelar",
        "email": "pshelar@nicira.com",
        "time": "Tue Apr 23 07:48:30 2013 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 25 01:43:15 2013 -0400"
      },
      "message": "genl: Allow concurrent genl callbacks.\n\nAll genl callbacks are serialized by genl-mutex. This can become\nbottleneck in multi threaded case.\nFollowing patch adds an parameter to genl_family so that a\nparticular family can get concurrent netlink callback without\ngenl_lock held.\nNew rw-sem is used to protect genl callback from genl family unregister.\nin case of parallel_ops genl-family read-lock is taken for callbacks and\nwrite lock is taken for register or unregistration for any family.\nIn case of locked genl family semaphore and gel-mutex is locked for\nany openration.\n\nSigned-off-by: Pravin B Shelar \u003cpshelar@nicira.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "15e473046cb6e5d18a4d0057e61d76315230382b",
      "tree": "893d2df5d46a6ce156933ac57a1398f0ad22b889",
      "parents": [
        "9f00d9776bc5beb92e8bfc884a7e96ddc5589e2e"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Fri Sep 07 20:12:54 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 10 15:30:41 2012 -0400"
      },
      "message": "netlink: Rename pid to portid to avoid confusion\n\nIt is a frequent mistake to confuse the netlink port identifier with a\nprocess identifier.  Try to reduce this confusion by renaming fields\nthat hold port identifiers portid instead of pid.\n\nI have carefully avoided changing the structures exported to\nuserspace to avoid changing the userspace API.\n\nI have successfully built an allyesconfig kernel with this change.\n\nSigned-off-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nAcked-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "58050fce3530939372e6c2f4b4beb76fcb4caa65",
      "tree": "ee2b85eda9973fed36102dad66f583e43a4a6cab",
      "parents": [
        "9f10d3f6f966ef6f6a8d025a4b1d341923d04607"
      ],
      "author": {
        "name": "Thomas Graf",
        "email": "tgraf@suug.ch",
        "time": "Thu Jun 28 03:57:45 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 28 17:56:43 2012 -0700"
      },
      "message": "net: Use NLMSG_DEFAULT_SIZE in combination with nlmsg_new()\n\nUsing NLMSG_GOODSIZE results in multiple pages being used as\nnlmsg_new() will automatically add the size of the netlink\nheader to the payload thus exceeding the page limit.\n\nNLMSG_DEFAULT_SIZE takes this into account.\n\nSigned-off-by: Thomas Graf \u003ctgraf@suug.ch\u003e\nCc: Jiri Pirko \u003cjpirko@redhat.com\u003e\nCc: Dmitry Eremin-Solenikov \u003cdbaryshkov@gmail.com\u003e\nCc: Sergey Lapin \u003cslapin@ossfans.org\u003e\nCc: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nCc: Lauro Ramos Venancio \u003clauro.venancio@openbossa.org\u003e\nCc: Aloisio Almeida Jr \u003caloisio.almeida@openbossa.org\u003e\nCc: Samuel Ortiz \u003csameo@linux.intel.com\u003e\nReviewed-by: Jiri Pirko \u003cjpirko@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a46621a3a8f24557201a7ef62de151c812f8985c",
      "tree": "9701dd51e082d600ce4b69ee4773805630ab0ada",
      "parents": [
        "5de658f878d49e952d7b3f3f26a396132829f513"
      ],
      "author": {
        "name": "Denys Vlasenko",
        "email": "vda.linux@googlemail.com",
        "time": "Mon Jan 30 15:22:06 2012 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 30 15:22:06 2012 -0500"
      },
      "message": "net: Deinline __nlmsg_put and genlmsg_put. -7k code on i386 defconfig.\n\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n8455963\t 532732\t1810804\t10799499 a4c98b\tvmlinux.o.before\n8448899\t 532732\t1810804\t10792435 a4adf3\tvmlinux.o\n\nThis change also removes commented-out copy of __nlmsg_put\nwhich was last touched in 2005 with \"Enable once all users\nhave been converted\" comment on top.\n\nChanges in v2: rediffed against net-next.\n\nSigned-off-by: Denys Vlasenko \u003cvda.linux@googlemail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "263ba61d3b19508dfb003c215ec5d23f882b4f87",
      "tree": "1f00fe8aeaff938b6e6706d145f761c5990fc28e",
      "parents": [
        "340e8dc1fb4032b6c8334c9bff20b2aec42ecfd8"
      ],
      "author": {
        "name": "Pravin B Shelar",
        "email": "pshelar@nicira.com",
        "time": "Thu Nov 10 19:14:37 2011 -0800"
      },
      "committer": {
        "name": "Jesse Gross",
        "email": "jesse@nicira.com",
        "time": "Sat Dec 03 09:35:05 2011 -0800"
      },
      "message": "genetlink: Add genl_notify()\n\nOpen vSwitch uses Generic Netlink interface for communication\nbetween userspace and kernel module. genl_notify() is used\nfor sending notification back to userspace.\n\ngenl_notify() is analogous to rtnl_notify() but uses genl_sock\ninstead of rtnl.\n\nSigned-off-by: Pravin B Shelar \u003cpshelar@nicira.com\u003e\nSigned-off-by: Jesse Gross \u003cjesse@nicira.com\u003e\n"
    },
    {
      "commit": "670dc2833d144375eac36ad74111495a825a9288",
      "tree": "12d5d3a925da562a6ba0497c47f4b55c71ff545b",
      "parents": [
        "c1c3daee97498f5d74bfd23531cfe23c8e14a619"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Mon Jun 20 13:40:46 2011 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Jun 22 16:09:45 2011 -0400"
      },
      "message": "netlink: advertise incomplete dumps\n\nConsider the following situation:\n * a dump that would show 8 entries, four in the first\n   round, and four in the second\n * between the first and second rounds, 6 entries are\n   removed\n * now the second round will not show any entry, and\n   even if there is a sequence/generation counter the\n   application will not know\n\nTo solve this problem, add a new flag NLM_F_DUMP_INTR\nto the netlink header that indicates the dump wasn\u0027t\nconsistent, this flag can also be set on the MSG_DONE\nmessage that terminates the dump, and as such above\nsituation can be detected.\n\nTo achieve this, add a sequence counter to the netlink\ncallback struct. Of course, netlink code still needs\nto use this new functionality. The correct way to do\nthat is to always set cb-\u003eseq when a dumpit callback\nis invoked and call nl_dump_check_consistent() for\neach new message. The core code will also call this\nfunction for the final MSG_DONE message.\n\nTo make it usable with generic netlink, a new function\ngenlmsg_nlhdr() is needed to obtain the netlink header\nfrom the genetlink user header.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "70f23fd66bc821a0e99647f70a809e277cc93c4c",
      "tree": "3e768b77e63c6364ef32cf257c9449369afd215f",
      "parents": [
        "c719864f15676af92b705589c93ba1468b89cd24"
      ],
      "author": {
        "name": "Justin P. Mattock",
        "email": "justinmattock@gmail.com",
        "time": "Tue May 10 10:16:21 2011 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Tue May 10 10:16:21 2011 +0200"
      },
      "message": "treewide: fix a few typos in comments\n\n- kenrel -\u003e kernel\n- whetehr -\u003e whether\n- ttt -\u003e tt\n- sss -\u003e ss\n\nSigned-off-by: Justin P. Mattock \u003cjustinmattock@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "38db9e1db1c91c953b2a539130257ce91533c9f6",
      "tree": "b907832971ddcc434ece367da89a0926bdd6cb22",
      "parents": [
        "e2d57766e6744f2956975dd2086d82957187b0f6"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Fri Jan 28 05:43:40 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 03 20:47:08 2011 -0800"
      },
      "message": "include/net/genetlink.h: Allow genlmsg_cancel to accept a NULL argument\n\nnlmsg_cancel can accept NULL as its second argument, so for similarity,\nthis patch extends genlmsg_cancel to be able to accept a NULL second\nargument as well.\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ff4c92d85c6f2777d2067f8552e7fefb4d1754ae",
      "tree": "77e35603821e5602e96c90644e42e70f097ad79c",
      "parents": [
        "2ee4e27cf25ab647137713ca16377d8d9e138ea2"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Mon Oct 04 21:14:03 2010 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Tue Oct 05 13:35:30 2010 -0400"
      },
      "message": "genetlink: introduce pre_doit/post_doit hooks\n\nEach family may have some amount of boilerplate\nlocking code that applies to most, or even all,\ncommands.\n\nThis allows a family to handle such things in\na more generic way, by allowing it to\n a) include private flags in each operation\n b) specify a pre_doit hook that is called,\n    before an operation\u0027s doit() callback and\n    may return an error directly,\n c) specify a post_doit hook that can undo\n    locking or similar things done by pre_doit,\n    and finally\n d) include two private pointers in each info\n    struct passed between all these operations\n    including doit(). (It\u0027s two because I\u0027ll\n    need two in nl80211 -- can be extended.)\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "c2d9ba9bce8d7323ca96f239e1f505c14d6244fb",
      "tree": "7a184eefa2e48e6aa15cdf3aefb6ccf2fb834320",
      "parents": [
        "c6b20d941b08941bece53bc3d857beb1fb25fffc"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jun 01 06:51:19 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 02 05:16:23 2010 -0700"
      },
      "message": "net: CONFIG_NET_NS reduction\n\nUse read_pnet() and write_pnet() to reduce number of ifdef CONFIG_NET_NS\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fd2c3ef761fbc5e6c27fa7d40b30cda06bfcd7d8",
      "tree": "25922196160e9d5be8aa2a473ce981756926390f",
      "parents": [
        "4b7673a04a16f1d8faf1e367ae28a6ee1671843d"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Nov 03 03:26:03 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 04 05:06:25 2009 -0800"
      },
      "message": "net: cleanup include/net\n\nThis cleanup patch puts struct/union/enum opening braces,\nin first line to ease grep games.\n\nstruct something\n{\n\nbecomes :\n\nstruct something {\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "134e63756d5f3d0f7604dfcca847b09d1b14fd66",
      "tree": "d2b5eab085d90cde0a4c0136a118800ca72b76ad",
      "parents": [
        "11a28d373ed2539a110d56419457e2e7db221ac7"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Fri Jul 10 09:51:34 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 12 14:03:27 2009 -0700"
      },
      "message": "genetlink: make netns aware\n\nThis makes generic netlink network namespace aware. No\ngeneric netlink families except for the controller family\nare made namespace aware, they need to be checked one by\none and then set the family-\u003enetnsok member to true.\n\nA new function genlmsg_multicast_netns() is introduced to\nallow sending a multicast message in a given namespace,\nfor example when it applies to an object that lives in\nthat namespace, a new function genlmsg_multicast_allns()\nto send a message to all network namespaces (for objects\nthat do not have an associated netns).\n\nThe function genlmsg_multicast() is changed to multicast\nthe message in just init_net, which is currently correct\nfor all generic netlink families since they only work in\ninit_net right now. Some will later want to work in all\nnet namespaces because they do not care about the netns\nat all -- those will have to be converted to use one of\nthe new functions genlmsg_multicast_allns() or\ngenlmsg_multicast_netns() whenever they are made netns\naware in some way.\n\nAfter this patch families can easily decide whether or\nnot they should be available in all net namespaces. Many\ngenl families us it for objects not related to networking\nand should therefore be available in all namespaces, but\nthat will have to be done on a per family basis.\n\nNote that this doesn\u0027t touch on the checkpoint/restart\nproblem where network namespaces could be used, genl\nfamilies and multicast groups are numbered globally and\nI see no easy way of changing that, especially since it\nmust be possible to multicast to all network namespaces\nfor those families that do not care about netns.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a7b11d738282337488ae158c975d76271ad43a98",
      "tree": "82c27ba3224309e442fffbaa7e5d9ae6453a20a1",
      "parents": [
        "4ea7e38696c7e798c47ebbecadfd392f23f814f9"
      ],
      "author": {
        "name": "Michał Mirosław",
        "email": "mirq-linux@rere.qmqm.pl",
        "time": "Thu May 21 10:34:04 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu May 21 16:50:22 2009 -0700"
      },
      "message": "genetlink: Introduce genl_register_family_with_ops()\n\nThis introduces genl_register_family_with_ops() that registers a genetlink\nfamily along with operations from a table. This is used to kill copy\u0027n\u0027paste\noccurrences in following patches.\n\nSigned-off-by: Michał Mirosław \u003cmirq-linux@rere.qmqm.pl\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "bc3ed28caaef55e7e3a9316464256353c5f9b1df",
      "tree": "3aed4521aa2d74a36ee2b192c2e229fd23fbe732",
      "parents": [
        "1f9d11c7c99da706e33646c3a9080dd5a8ef9a0b"
      ],
      "author": {
        "name": "Thomas Graf",
        "email": "tgraf@suug.ch",
        "time": "Tue Jun 03 16:36:54 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 03 16:36:54 2008 -0700"
      },
      "message": "netlink: Improve returned error codes\n\nMake nlmsg_trim(), nlmsg_cancel(), genlmsg_cancel(), and\nnla_nest_cancel() void functions.\n\nReturn -EMSGSIZE instead of -1 if the provided message buffer is not\nbig enough.\n\nSigned-off-by: Thomas Graf \u003ctgraf@suug.ch\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2dbba6f773d1e1e4c78f03b0dbf19790d9017693",
      "tree": "19535af46e79a0af756275f751d7b0080b72001d",
      "parents": [
        "84659eb529b33572bb3f8c94e0978bd5d084bc7e"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Wed Jul 18 15:47:52 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 18 15:47:52 2007 -0700"
      },
      "message": "[GENETLINK]: Dynamic multicast groups.\n\nIntroduce API to dynamically register and unregister multicast groups.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nAcked-by: Patrick McHardy \u003ckaber@trash.net\u003e\nAcked-by: Jamal Hadi Salim \u003chadi@cyberus.ca\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ef7c79ed645f52bcbdd88f8d54a9702c4d3fd15d",
      "tree": "4c27ec3362d958b99672366437d5eb6038dd561d",
      "parents": [
        "14a49e1fd2bb91ba2bf0e1f06711b6dbc21de02d"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Tue Jun 05 12:38:30 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu Jun 07 13:40:10 2007 -0700"
      },
      "message": "[NETLINK]: Mark netlink policies const\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a4d1366d5080fcb4514db58c320b9f60d78918e6",
      "tree": "8358724419b81add4a32e70d9bdcc4676ccd531e",
      "parents": [
        "c40a27f48ceee648e9cfdda040b69e7010d9f82c"
      ],
      "author": {
        "name": "Jamal Hadi Salim",
        "email": "hadi@cyberus.ca",
        "time": "Fri Dec 01 20:07:42 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Dec 02 21:32:09 2006 -0800"
      },
      "message": "[GENETLINK]: Add cmd dump completion.\n\nRemove assumption that generic netlink commands cannot have dump\ncompletion callbacks.\n\nSigned-off-by: Jamal Hadi Salim \u003chadi@cyberus.ca\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "17c157c889f4b07258af6bfec9e4e9dcf3c00178",
      "tree": "f17be049a40b5742ca7e67094d6a7063146568d5",
      "parents": [
        "81878d27fdd297a33f3cfcf29483fe1abaf26dec"
      ],
      "author": {
        "name": "Thomas Graf",
        "email": "tgraf@suug.ch",
        "time": "Tue Nov 14 19:46:02 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Dec 02 21:22:42 2006 -0800"
      },
      "message": "[GENL]: Add genlmsg_put_reply() to simplify building reply headers\n\nBy modyfing genlmsg_put() to take a genl_family and by adding\ngenlmsg_put_reply() the process of constructing the netlink\nand generic netlink headers is simplified.\n\nSigned-off-by: Thomas Graf \u003ctgraf@suug.ch\u003e\nAcked-by: Paul Moore \u003cpaul.moore@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "81878d27fdd297a33f3cfcf29483fe1abaf26dec",
      "tree": "4ce8183643abce3ec5fe5fdab0c9104204e88e6e",
      "parents": [
        "3dabc7157859e706770c825aa229f8943db4e0e1"
      ],
      "author": {
        "name": "Thomas Graf",
        "email": "tgraf@suug.ch",
        "time": "Tue Nov 14 19:45:27 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Dec 02 21:22:41 2006 -0800"
      },
      "message": "[GENL]: Add genlmsg_reply() to simply unicast replies to requests\n\nA generic netlink user has no interest in knowing how to\naddress the source of the original request.\n\nSigned-off-by: Thomas Graf \u003ctgraf@suug.ch\u003e\nAcked-by: Paul Moore \u003cpaul.moore@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3dabc7157859e706770c825aa229f8943db4e0e1",
      "tree": "a6fc7ea0605b18c47b157cc9c168c642c365cd0c",
      "parents": [
        "cfb6eeb4c860592edd123fdea908d23c6ad1c7dc"
      ],
      "author": {
        "name": "Thomas Graf",
        "email": "tgraf@suug.ch",
        "time": "Tue Nov 14 19:44:52 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Dec 02 21:22:40 2006 -0800"
      },
      "message": "[GENL]: Add genlmsg_new() to allocate generic netlink messages\n\nSigned-off-by: Thomas Graf \u003ctgraf@suug.ch\u003e\nAcked-by: Paul Moore \u003cpaul.moore@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "17db952cd16cecc76937b138c685ae3d198ab17c",
      "tree": "5c8c83c75be3eb95065ec5241bfd82142622a91d",
      "parents": [
        "31608214fe21dc31d8046679054ab033b1fe5cf1"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@in.ibm.com",
        "time": "Sat Sep 30 23:28:51 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:29 2006 -0700"
      },
      "message": "[PATCH] Add genetlink utilities for payload length calculation\n\nAdd two utility helper functions genlmsg_msg_size() and genlmsg_total_size().\nThese functions are derived from their netlink counterparts.\n\nSigned-off-by: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Jamal Hadi \u003chadi@cyberus.ca\u003e\nCc: Shailabh Nagar \u003cnagar@watson.ibm.com\u003e\nCc: Thomas Graf \u003ctgraf@suug.ch\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Jay Lan \u003cjlan@engr.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "eb328111efde7bca782f340fe805756039ec6a0c",
      "tree": "77c38b0a7ee67703c95caf16c6691576e2f77d03",
      "parents": [
        "78e5b8916e7db119850f57ce8548fbb9767078fc"
      ],
      "author": {
        "name": "Thomas Graf",
        "email": "tgraf@suug.ch",
        "time": "Mon Sep 18 00:01:59 2006 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Fri Sep 22 15:18:51 2006 -0700"
      },
      "message": "[GENL]: Provide more information to userspace about registered genl families\n\nAdditionaly exports the following information when providing\nthe list of registered generic netlink families:\n  - protocol version\n  - header size\n  - maximum number of attributes\n  - list of available operations including\n      - id\n      - flags\n      - avaiability of policy and doit/dumpit function\n\nlibnl HEAD provides a utility to read this new information:\n\n\t0x0010 nlctrl version 1\n\t    hdrsize 0 maxattr 6\n\t      op GETFAMILY (0x03) [POLICY,DOIT,DUMPIT]\n\t0x0011 NLBL_MGMT version 1\n\t    hdrsize 0 maxattr 0\n\t      op unknown (0x02) [DOIT]\n\t      op unknown (0x03) [DOIT]\n\t      ....\n\nSigned-off-by: Thomas Graf \u003ctgraf@suug.ch\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d387f6ad10764fc2174373b4a1cca443adee36e3",
      "tree": "ed22c34f55de9c668eed1727d46239f3b48599b7",
      "parents": [
        "2942e90050569525628a9f34e0daaa9b661b49cc"
      ],
      "author": {
        "name": "Thomas Graf",
        "email": "tgraf@suug.ch",
        "time": "Tue Aug 15 00:31:06 2006 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Fri Sep 22 14:54:49 2006 -0700"
      },
      "message": "[NETLINK]: Add notification message sending interface\n\nAdds nlmsg_notify() implementing proper notification logic. The\nmessage is multicasted to all listeners in the group. The\napplications the requests orignates from can request a unicast\nback report in which case said socket will be excluded from the\nmulticast to avoid duplicated notifications.\n\nnlmsg_multicast() is extended to take allocation flags to\nallow notification in atomic contexts.\n\nSigned-off-by: Thomas Graf \u003ctgraf@suug.ch\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fb0ba6bd021248b6bdc58a7b1213a55a6776a38a",
      "tree": "227944aafeecbef42df1687775bfe668d261ac6b",
      "parents": [
        "52f17b6c2bd443e7806a161e9d10a983650db01d"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@in.ibm.com",
        "time": "Fri Jul 14 00:24:39 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jul 14 21:53:56 2006 -0700"
      },
      "message": "[PATCH] per-task-delay-accounting: utilities for genetlink usage\n\nTwo utilities for simplifying usage of NETLINK_GENERIC interface.\n\nSigned-off-by: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Shailabh Nagar \u003cnagar@watson.ibm.com\u003e\nCc: Jes Sorensen \u003cjes@sgi.com\u003e\nCc: Peter Chubb \u003cpeterc@gelato.unsw.edu.au\u003e\nCc: Erich Focht \u003cefocht@ess.nec.de\u003e\nCc: Levent Serinol \u003clserinol@gmail.com\u003e\nCc: Jay Lan \u003cjlan@engr.sgi.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "23b0ca5bf52cef0ab0f0fe247cb91cbef836e7eb",
      "tree": "3643a547de2c6f3bad63361d1584ff566c9012ba",
      "parents": [
        "2e4e6a17af35be359cc8f1c924f8f198fbd478cc"
      ],
      "author": {
        "name": "Per Liden",
        "email": "per.liden@ericsson.com",
        "time": "Fri Jan 13 13:06:40 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jan 13 13:06:40 2006 -0800"
      },
      "message": "[PATCH] genetlink: don\u0027t touch module ref count\n\nIncreasing the module ref count at registration will block the module from\never being unloaded. In fact, genetlink should not care about the owner at\nall. This patch removes the owner field from the struct registered with\ngenetlink.\n\nSigned-off-by: Per Liden \u003cper.liden@ericsson.com\u003e\nSigned-off-by: Jamal Hadi Salim \u003chadi@cyberus.ca\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b461d2f2188c1c578ed651e4cdf608be7a993cd4",
      "tree": "0a53ece878f2f5e3accdf45cdc76bdd1b2ef62f5",
      "parents": [
        "fd19f329a32bdc4eb07885e0b3889567cfe00aa7"
      ],
      "author": {
        "name": "Per Liden",
        "email": "per.liden@ericsson.com",
        "time": "Tue Jan 03 14:13:29 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jan 03 14:13:29 2006 -0800"
      },
      "message": "[NETLINK] genetlink: fix cmd type in genl_ops to be consistent to u8\n\nSigned-off-by: Per Liden \u003cper.liden@ericsson.com\u003e\nACKed-by: Jamal Hadi Salim \u003chadi@cyberus.ca\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "482a8524f85a7d8c40c6fb5d072e85bc2fef327f",
      "tree": "cbd4225da63a687dd70441d41aad35ff5c171f48",
      "parents": [
        "9ac4a16983ea4edf719c390a1a234d956947688d"
      ],
      "author": {
        "name": "Thomas Graf",
        "email": "tgraf@suug.ch",
        "time": "Thu Nov 10 02:25:56 2005 +0100"
      },
      "committer": {
        "name": "Thomas Graf",
        "email": "tgr@axs.localdomain",
        "time": "Thu Nov 10 02:26:41 2005 +0100"
      },
      "message": "[NETLINK]: Generic netlink family\n\nThe generic netlink family builds on top of netlink and provides\nsimplifies access for the less demanding netlink users. It solves\nthe problem of protocol numbers running out by introducing a so\ncalled controller taking care of id management and name resolving.\n\nGeneric netlink modules register themself after filling out their\nid card (struct genl_family), after successful registration the\nmodules are able to register callbacks to command numbers by\nfilling out a struct genl_ops and calling genl_register_op(). The\nregistered callbacks are invoked with attributes parsed making\nlife of simple modules a lot easier.\n\nAlthough generic netlink modules can request static identifiers,\nit is recommended to use GENL_ID_GENERATE and to let the controller\nassign a unique identifier to the module. Userspace applications\nwill then ask the controller and lookup the idenfier by the module\nname.\n\nDue to the current multicast implementation of netlink, the number\nof generic netlink modules is restricted to 1024 to avoid wasting\nmemory for the per socket multiacst subscription bitmask.\n\nSigned-off-by: Thomas Graf \u003ctgraf@suug.ch\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ]
}
