)]}'
{
  "log": [
    {
      "commit": "f0ad0860d01e47a3ffd220564c5c653b3afbe962",
      "tree": "91b69423f472b934daa2c18ae3b7ba065b7c7898",
      "parents": [
        "0c12295a741d3186987f96f518cfbdaf01abb087"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Tue Apr 13 05:03:23 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 13 14:49:34 2010 -0700"
      },
      "message": "ipv4: ipmr: support multiple tables\n\nThis patch adds support for multiple independant multicast routing instances,\nnamed \"tables\".\n\nUserspace multicast routing daemons can bind to a specific table instance by\nissuing a setsockopt call using a new option MRT_TABLE. The table number is\nstored in the raw socket data and affects all following ipmr setsockopt(),\ngetsockopt() and ioctl() calls. By default, a single table (RT_TABLE_DEFAULT)\nis created with a default routing rule pointing to it. Newly created pimreg\ndevices have the table number appended (\"pimregX\"), with the exception of\ndevices created in the default table, which are named just \"pimreg\" for\ncompatibility reasons.\n\nPackets are directed to a specific table instance using routing rules,\nsimilar to how regular routing rules work. Currently iif, oif and mark\nare supported as keys, source and destination addresses could be supported\nadditionally.\n\nExample usage:\n\n- bind pimd/xorp/... to a specific table:\n\nuint32_t table \u003d 123;\nsetsockopt(fd, IPPROTO_IP, MRT_TABLE, \u0026table, sizeof(table));\n\n- create routing rules directing packets to the new table:\n\n# ip mrule add iif eth0 lookup 123\n# ip mrule add oif eth0 lookup 123\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "862465f2e7e90975e7bf0ecfbb171dd3adedd950",
      "tree": "281c43f90130cc23eb581c702afaf4ab226dbff5",
      "parents": [
        "d658f8a0e63b6476148162aa7a3ffffc58dcad52"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Tue Apr 13 05:03:21 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 13 14:49:33 2010 -0700"
      },
      "message": "ipv4: ipmr: convert struct mfc_cache to struct list_head\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d658f8a0e63b6476148162aa7a3ffffc58dcad52",
      "tree": "25087c18eb91bbe040cf5c9b5e1710d35e37328f",
      "parents": [
        "e258beb22f4d3ea3dc88586ffc9c990d0eb03380"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Tue Apr 13 05:03:20 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 13 14:49:33 2010 -0700"
      },
      "message": "ipv4: ipmr: remove net pointer from struct mfc_cache\n\nNow that cache entries in unres_queue don\u0027t need to be distinguished by their\nnetwork namespace pointer anymore, we can remove it from struct mfc_cache\nadd pass the namespace as function argument to the functions that need it.\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d94d9fee9fa4e66a0b91640a694b8b10177075b3",
      "tree": "330b2b19e63c92f1fef3d9dbe0733ddeb0109664",
      "parents": [
        "b8883a65be2d925ea82b14ca0068ce9a6c8bac1f"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Nov 04 09:50:58 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 04 09:50:58 2009 -0800"
      },
      "message": "net: cleanup include/linux\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": "ee5e81f00051b5c373c8de16e3604fd6d3be699e",
      "tree": "f10ed0120d1669cf903752c3595fbb4b213795f5",
      "parents": [
        "7bb5fdc2fb021e32703ed1ff0269876bde1fa962"
      ],
      "author": {
        "name": "Ilia K",
        "email": "mail4ilia@gmail.com",
        "time": "Wed Sep 16 05:53:07 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 07 00:48:41 2009 -0700"
      },
      "message": "add vif using local interface index instead of IP\n\nWhen routing daemon wants to enable forwarding of multicast traffic it\nperforms something like:\n\n       struct vifctl vc \u003d {\n               .vifc_vifi  \u003d 1,\n               .vifc_flags \u003d 0,\n               .vifc_threshold \u003d 1,\n               .vifc_rate_limit \u003d 0,\n               .vifc_lcl_addr \u003d ip, /* \u003c--- ip address of physical\ninterface, e.g. eth0 */\n               .vifc_rmt_addr.s_addr \u003d htonl(INADDR_ANY),\n         };\n       setsockopt(fd, IPPROTO_IP, MRT_ADD_VIF, \u0026vc, sizeof(vc));\n\nThis leads (in the kernel) to calling  vif_add() function call which\nsearch the (physical) device using assigned IP address:\n       dev \u003d ip_dev_find(net, vifc-\u003evifc_lcl_addr.s_addr);\n\nThe current API (struct vifctl) does not allow to specify an\ninterface other way than using it\u0027s IP, and if there are more than a\nsingle interface with specified IP only the first one will be found.\n\nThe attached patch (against 2.6.30.4) allows to specify an interface\nby its index, instead of IP address:\n\n       struct vifctl vc \u003d {\n               .vifc_vifi  \u003d 1,\n               .vifc_flags \u003d VIFF_USE_IFINDEX,   /* NEW */\n               .vifc_threshold \u003d 1,\n               .vifc_rate_limit \u003d 0,\n               .vifc_lcl_ifindex \u003d if_nametoindex(\"eth0\"),   /* NEW */\n               .vifc_rmt_addr.s_addr \u003d htonl(INADDR_ANY),\n         };\n       setsockopt(fd, IPPROTO_IP, MRT_ADD_VIF, \u0026vc, sizeof(vc));\n\nSigned-off-by: Ilia K. \u003cmail4ilia@gmail.com\u003e\n\n\u003d\u003d\u003d modified file \u0027include/linux/mroute.h\u0027\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b7058842c940ad2c08dd829b21e5c92ebe3b8758",
      "tree": "5fe78d599fc345ca0bcd4b083b79095a54b2921b",
      "parents": [
        "eb1cf0f8f7a9e5a6d573d5bd72c015686a042db0"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 30 16:12:20 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 30 16:12:20 2009 -0700"
      },
      "message": "net: Make setsockopt() optlen be unsigned.\n\nThis provides safety against negative optlen at the type\nlevel instead of depending upon (sometimes non-trivial)\nchecks against this sprinkled all over the the place, in\neach and every implementation.\n\nBased upon work done by Arjan van de Ven and feedback\nfrom Linus Torvalds.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4feb88e5c694bfe414cbc3ce0e383f7f7038f90b",
      "tree": "418140ffc541223205b921b9995b981a5cfbc2dd",
      "parents": [
        "f6bb451476be53d456e73bcfd82356afd680bbb0"
      ],
      "author": {
        "name": "Benjamin Thery",
        "email": "benjamin.thery@bull.net",
        "time": "Thu Jan 22 04:56:23 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jan 22 13:57:41 2009 -0800"
      },
      "message": "netns: ipmr: enable namespace support in ipv4 multicast routing code\n\nThis last patch makes the appropriate changes to use and propagate the\nnetwork namespace where needed in IPv4 multicast routing code.\n\nThis consists mainly in replacing all the remaining init_net occurences\nwith current netns pointer retrieved from sockets, net devices or\nmfc_caches depending on the routines\u0027 contexts.\n\nSome routines receive a new \u0027struct net\u0027 parameter to propagate the current\nnetns:\n* vif_add/vif_delete\n* ipmr_new_tunnel\n* mroute_clean_tables\n* ipmr_cache_find\n* ipmr_cache_report\n* ipmr_cache_unresolved\n* ipmr_mfc_add/ipmr_mfc_delete\n* ipmr_get_route\n* rt_fill_info (in route.c)\n\nSigned-off-by: Benjamin Thery \u003cbenjamin.thery@bull.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5c0a66f5f3c9c59e2c341400048e2cff768e67a9",
      "tree": "937c8e34fee423d57bff1cd6dd2bc1f4e80eee44",
      "parents": [
        "cf958ae377ee2545ae70cf48d38e7eb4308c27ea"
      ],
      "author": {
        "name": "Benjamin Thery",
        "email": "benjamin.thery@bull.net",
        "time": "Thu Jan 22 04:56:17 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jan 22 13:57:36 2009 -0800"
      },
      "message": "netns: ipmr: store netns in struct mfc_cache\n\nThis patch stores into struct mfc_cache the network namespace each\nmfc_cache belongs to. The new member is mfc_net.\n\nmfc_net is assigned at cache allocation and doesn\u0027t change during\nthe rest of the cache entry life.\nA new net parameter is added to ipmr_cache_alloc/ipmr_cache_alloc_unres.\n\nThis will help to retrieve the current netns around the IPv4 multicast\nrouting code.\n\nAt the moment, all mfc_cache are allocated in init_net.\n\nSigned-off-by: Benjamin Thery \u003cbenjamin.thery@bull.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7c19a3d280297d43ef5ff7c6b205dc208a16d3d1",
      "tree": "cb8b2603086f117eb543f91a41a42fefede4f31a",
      "parents": [
        "102396ae65108b026e4e1868e30fa013f45a169e"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Aug 29 14:37:23 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Aug 29 14:37:23 2008 -0700"
      },
      "message": "net: Unbreak userspace usage of linux/mroute.h\n\nNothing in linux/pim.h should be exported to userspace.\n\nThis should fix the XORP build failure reported by\nJose Calhariz, the debain package maintainer.\n\nNothing originally in linux/mroute.h was exported to userspace\never, but some of this stuff started to be when it was moved into\nthis new linux/pim.h, and that was wrong.  If we didn\u0027t provide these\ndefinitions for 10 years we can reasonably expect that applications\ndefined this stuff locally or used GLIBC headers providing the\nprotocol definitions.  And as such the only result of this can\nbe conflict and userland build breakage.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e0835f8fa56d2d308486f8a34cf1c4480cd27f4e",
      "tree": "8b9e2f60795dbc6e0e0138c8e7c362efecb568e8",
      "parents": [
        "03d2f897e9fb3218989baa2139a951ce7f5414bf"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Thu Jul 03 16:51:22 2008 +0900"
      },
      "committer": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Thu Jul 03 17:51:57 2008 +0900"
      },
      "message": "ipv4,ipv6 mroute: Add some helper inline functions to remove ugly ifdefs.\n\nip{,v6}_mroute_{set,get}sockopt() should not matter by optimization but\nit would be better not to depend on optimization semantically.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n"
    },
    {
      "commit": "03d2f897e9fb3218989baa2139a951ce7f5414bf",
      "tree": "2949bdd7fbe49c3754cdc8140d5b67b37f0edd66",
      "parents": [
        "623d1a1af77bd52a389c6eda5920e28eb2ee468b"
      ],
      "author": {
        "name": "Wang Chen",
        "email": "wangchen@cn.fujitsu.com",
        "time": "Thu Jul 03 12:13:36 2008 +0800"
      },
      "committer": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Thu Jul 03 17:51:57 2008 +0900"
      },
      "message": "ipv4: Do cleanup for ip_mr_init\n\nSame as ip6_mr_init(), make ip_mr_init() return errno if fails.\nBut do not do error handling in inet_init(), just print a msg.\n\nSigned-off-by: Wang Chen \u003cwangchen@cn.fujitsu.com\u003e\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n"
    },
    {
      "commit": "80a9492a33dd7d852465625022d56ff76d62174d",
      "tree": "7f8976d803a1d7fddae9b53164a8d5774aa15bb5",
      "parents": [
        "2e8046271f68198dd37451017c1a4a2432e4ec68"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Thu Apr 03 09:22:52 2008 +0900"
      },
      "committer": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Fri Apr 04 10:44:42 2008 +0900"
      },
      "message": "[IPV4] MROUTE: Adjust include files for user-space.\n\n\u003clinux/mroute.h\u003e needs \u003clinux/types.h\u003e.\nAvoid including \u003clinux/in.h\u003e in user-space, which conflicts with\nstandard \u003cnetinet/in.h\u003e.\nAdd basic struct and constant in \u003clinux/pim.h\u003e.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n"
    },
    {
      "commit": "2e8046271f68198dd37451017c1a4a2432e4ec68",
      "tree": "36e5352f8db6f369350a8593bc2ce42e79bf0fb8",
      "parents": [
        "f6a07b293f11d97bfbcd9b6a3ab4ad9c418a36ff"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Thu Apr 03 09:22:09 2008 +0900"
      },
      "committer": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Fri Apr 04 10:44:42 2008 +0900"
      },
      "message": "[IPV4] MROUTE: Move PIM definitions to \u003clinux/pim.h\u003e.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n"
    },
    {
      "commit": "6a9fb9479f2672fa392711735de9e642395c9a14",
      "tree": "16a27c604b453ed896b5f276467a233e6b39e78a",
      "parents": [
        "4e058063f49f53f6d75f707e36c82edee6d2e919"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Mon Nov 05 21:32:31 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Nov 07 04:08:55 2007 -0800"
      },
      "message": "[IPV4]: Clean the ip_sockglue.c from some ugly ifdefs\n\nThe #idfed CONFIG_IP_MROUTE is sometimes places inside the if-s,\nwhich looks completely bad. Similar ifdefs inside the functions\nlooks a bit better, but they are also not recommended to be used.\n\nProvide an ifdef-ed ip_mroute_opt() helper to cleanup the code.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "114c7844f34c1608aec20ae7ff85cec471ac90ae",
      "tree": "f1cd7e413187004d6af8bdd62f20ffa6252d4a0b",
      "parents": [
        "1b620154273d5cc57690e0d199282c6bb9e56974"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Sep 27 18:39:29 2006 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu Sep 28 18:02:22 2006 -0700"
      },
      "message": "[IPV4]: mroute annotations\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1b620154273d5cc57690e0d199282c6bb9e56974",
      "tree": "a98f81594b4c5a214ece8b458e174fd273f98520",
      "parents": [
        "df7a3b07c28e7b547d8252a237299e32880b505d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Sep 27 18:39:09 2006 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu Sep 28 18:02:21 2006 -0700"
      },
      "message": "[IPV4]: PIMv2 header annotations\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
