)]}'
{
  "log": [
    {
      "commit": "472aaea288edad9d16f33a0800af74964a8a5748",
      "tree": "3441a0672c380034e1d3e229da05feed7c7b9540",
      "parents": [
        "a9e64420edde500743f191735a856d89db34dd2d"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Aug 27 09:27:38 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Aug 27 13:08:19 2013 -0700"
      },
      "message": "use PcapWriter to log dataplane traffic\n\nWhen we write a logfile we\u0027ll also write a pcap file with the extension\nreplaced by \".pcap\". If per-test logging is enabled we\u0027ll open a new pcap file\nfor each test.\n"
    },
    {
      "commit": "cd97d3d7a4bef1346f8a57d1216b075e97ce019f",
      "tree": "dc776d3bb42cf071e9f8b7532d8540b29255960d",
      "parents": [
        "b2b401ef00e2dc2315e16f1299d2855103f581ac"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Jan 07 18:50:06 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 08 10:09:49 2013 -0800"
      },
      "message": "minimize use of \"from module import *\"\n\nThis statement was causing strange bugs because of namespace pollution. The\norder of imports mattered because later \"from module import *\" statements would\noverwrite modules imported earlier. Transitive imports also made it difficult\nto figure out where an identifier was being imported.\n\nThis statement is still allowed in test code since nothing else should be\nimporting it.\n"
    },
    {
      "commit": "308d976197427f3ccc2e0b3c2500d4f92b1010fc",
      "tree": "2c3bf2dd6a882f7cb9a36fa5d09f9bb02460052c",
      "parents": [
        "3a261d5f415f91a06afe06437b66ed84ff266571"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 17:47:49 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 18:03:45 2013 -0800"
      },
      "message": "remove unused oft_assert module\n"
    },
    {
      "commit": "2c7812ce1e1d869eb3dfa0e59bf96b386d95c0f1",
      "tree": "68654d4d40452b9aa2137047180ce496eab52998",
      "parents": [
        "e1b8da9513d907758fef264839c56fab09761c95"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Dec 27 17:52:23 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Dec 27 17:52:23 2012 -0800"
      },
      "message": "use a single dataplane instance for all tests\n\nCreating and destroying dataplane instances was taking about 1/3 of the total\nruntime.\n"
    },
    {
      "commit": "e1b8da9513d907758fef264839c56fab09761c95",
      "tree": "49090625972a5a9e876130f1f65efedbc32a66de",
      "parents": [
        "fb7183008e8fb5a15572cb2b33a08d1fbf1e9bb9"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 26 22:47:13 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 26 22:52:50 2012 -0800"
      },
      "message": "dataplane: single-threaded rewrite\n\nThere\u0027s now just one thread for the dataplane instead of one per port. This\ngreatly reduces the amount of code needed for each port implementation.\n"
    },
    {
      "commit": "fb7183008e8fb5a15572cb2b33a08d1fbf1e9bb9",
      "tree": "43810e1920e5f5a25c90d6955b4c39ea1835ef30",
      "parents": [
        "e7b0ecb155278f0c0a21ae6299baaa516a5140b1"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 26 21:02:31 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 26 21:02:31 2012 -0800"
      },
      "message": "DataPlane: cleanup and remove dead code\n"
    },
    {
      "commit": "e7b0ecb155278f0c0a21ae6299baaa516a5140b1",
      "tree": "cae51d2fd83e4e08137c8e8959dfaae5eaf32af7",
      "parents": [
        "2e37ec25b27ea3474d2a5adf0dd3adf422ad2585"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 26 10:01:01 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 26 10:01:01 2012 -0800"
      },
      "message": "manually release controller and dataplane references\n\nThe GC wasn\u0027t collecting these objects in a timely manner, which caused the\nprocess to run out of file descriptors.\n"
    },
    {
      "commit": "d7d3292a587e7450855adbd714f98bf8f5e02d96",
      "tree": "00ba05833d8248db3b86dcce7a43a3b21240e0f9",
      "parents": [
        "7e1d5c54487356c0a1ef86f88f800a7d24d34283"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 24 15:03:20 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 24 15:03:20 2012 -0800"
      },
      "message": "DataPlanePort: fix race between thread start and kill\n\nA very short test could kill the port before the port\u0027s thread started running.\nThe thread would overwrite self.running with True and thus never exit.\n"
    },
    {
      "commit": "5b5da2d4413ff7249522d9f167c61cd2e298f9ca",
      "tree": "e2adf618a0e67102452025dfc9997b99d8de2cba",
      "parents": [
        "4dfd5e19c74d1a9591e88927e93a326818aa38b6"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 19:56:32 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 19:56:32 2012 -0800"
      },
      "message": "dataplane: use an EventDescriptor to speed up killing ports\n"
    },
    {
      "commit": "4d46dbd5348cc2db996e8e3d521d0597f372eeb0",
      "tree": "1991a83cafc224ff92185623538566e7b549716b",
      "parents": [
        "bd186803c8aaf15c4ba20e34c0b7da3d74cc9636"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 19:26:19 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 19:26:19 2012 -0800"
      },
      "message": "dataplane: kill port threads concurrently\n"
    },
    {
      "commit": "ab0bab3d52c110ee57c16014ba36d07bd5e20558",
      "tree": "7e59128fe9d1251dba8d3e4a8c545b886c27e24b",
      "parents": [
        "e6fca642a6e7e066ec2edf7e33969148d2e9a0f1"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Fri Nov 30 13:31:00 2012 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Dec 11 16:29:06 2012 -0800"
      },
      "message": "Don\u0027t try to use the incompatible pylibpcap library\n"
    },
    {
      "commit": "47fe471addfd055828b73341f87c3cc89e81ae9c",
      "tree": "5fa1de974cc1eec1c3534570ee1da92ab597147e",
      "parents": [
        "ba9eee87b344e49741b9faa7c6ffa4ff1ba0cecb",
        "75bcf4d2e0d7446a2a337e445ba0708bef1bafd3"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Sun Dec 09 23:24:38 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Sun Dec 09 23:24:38 2012 -0800"
      },
      "message": "Merge pull request #27 from InCNTRE/master\n\nmessage_types "
    },
    {
      "commit": "d2e93aa1cc8366e43a5115631ca307c99e11f356",
      "tree": "a0af3a507c495151872215863fff7e6aa7a2e2c5",
      "parents": [
        "b5c7379adf9f909d2f50c2481f523e5d39cf3617"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 05 17:55:46 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Dec 06 17:02:48 2012 -0800"
      },
      "message": "dataplane: record wall clock time when receiving packet\n\ntime.clock() returns processor time which is not useful.\n"
    },
    {
      "commit": "5e0a6e374200833af692315b6117b21b2b560068",
      "tree": "b3e64c854b5db4d926ce1a9a3ee76973bc49eaad",
      "parents": [
        "8a0406e29aea1747c65bb67c62235f3149628c21"
      ],
      "author": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Sun Dec 02 18:34:35 2012 -0500"
      },
      "committer": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Sun Dec 02 18:34:35 2012 -0500"
      },
      "message": "reverted the line specified\n"
    },
    {
      "commit": "cd8e1cf846ad071c530a677406d8c02c0df429bf",
      "tree": "d77917b31ddafee4d559e69f8ef5d62a3497ec87",
      "parents": [
        "055102a3cf0cc183ce418c7b17999775837f7384"
      ],
      "author": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Wed Nov 28 11:44:42 2012 -0500"
      },
      "committer": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Wed Nov 28 11:44:42 2012 -0500"
      },
      "message": "added port down and up functions\n"
    },
    {
      "commit": "b42a31c55479f89417469265f34eb4c50b00aa6b",
      "tree": "deb11a5447ab3e73aaac3db4d20d4517ebda3034",
      "parents": [
        "387fcd7e22c5df376937e3533e57ecb021017b2a"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Oct 05 17:54:17 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Oct 16 16:24:17 2012 -0700"
      },
      "message": "libpcap dataplane\n\nAlternate port implementation using libpcap. This is required for recent\nversions of Linux (such as Linux 3.2 included in Ubuntu 12.04) which\noffload the VLAN tag, so it isn\u0027t in the data returned from a read on a raw\nsocket. libpcap understands how to read the VLAN tag from the kernel.\n\nIf pypcap is installed on the host then the new dataplane is used. Otherwise\nthe old one will still work.\n"
    },
    {
      "commit": "e5779d33367b23c44e9794a1d1bfca5e3892b20a",
      "tree": "1ce35ac68a0221ab53da3599bcced18d22c40ce8",
      "parents": [
        "2014f9b1c88efef6116d5b3f5dae552e5c9741c6"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Oct 05 17:56:04 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Oct 05 18:10:21 2012 -0700"
      },
      "message": "fix pylint errors\n\nAlso removed some testutils code that must have been dead because it had\nrotten.\n"
    },
    {
      "commit": "8806bc4712c5bee1eb48a6cb1d94380150c86935",
      "tree": "d7ce3e7185941cfb6b527bf1241f785b19c68b59",
      "parents": [
        "db9d866ddc23f7520f25485b98ab18dd40ac8bc1"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jul 26 19:18:37 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jul 26 19:18:37 2012 -0700"
      },
      "message": "standardize on -1 for default timeouts\n"
    },
    {
      "commit": "db9d866ddc23f7520f25485b98ab18dd40ac8bc1",
      "tree": "b9ef8480c62cf2f7f7e4f698bf68c7e8ef2d6bf2",
      "parents": [
        "e1da7eaf40daddec475b57becd8c367a0b51a992"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jul 26 18:04:24 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jul 26 18:04:24 2012 -0700"
      },
      "message": "fix usage of condition variables in dataplane\n"
    },
    {
      "commit": "0e8b0924791643ce114c68fac2e4aaefd3b3863d",
      "tree": "331f4f40327e6422804550d8877b56559ddc7adf",
      "parents": [
        "4d5ca926e657cb15cbac8c61f6e35590ec99615a"
      ],
      "author": {
        "name": "Jeffrey Townsend",
        "email": "jeffrey.townsend@bigswitch.com",
        "time": "Wed Jul 11 11:37:46 2012 -0700"
      },
      "committer": {
        "name": "Jeffrey Townsend",
        "email": "jeffrey.townsend@bigswitch.com",
        "time": "Wed Jul 11 11:37:46 2012 -0700"
      },
      "message": "- The DataPlane class now accepts the global configuration when created.\n- The DataPlane class now allows the platform/configuration to override\n  the class used for port traffic. The default class remains DataPlanePort.\n"
    },
    {
      "commit": "3978f24c0b64a8e4d51ef75beda47998c4583bb0",
      "tree": "8a92a319dd6be67f3ca3293be0a6151a930076e5",
      "parents": [
        "899ff8e0325247413c979c7a6364b537e3b896c0"
      ],
      "author": {
        "name": "Ken Chiang",
        "email": "ken.chiang@bigswitch.com",
        "time": "Wed Jun 13 14:14:09 2012 -0700"
      },
      "committer": {
        "name": "Ken Chiang",
        "email": "ken.chiang@bigswitch.com",
        "time": "Wed Jun 13 14:14:09 2012 -0700"
      },
      "message": "Fix typo.\nRename pktact.WildcardPriority2 to pktact.WildcardPriorityWithDelete.\n"
    },
    {
      "commit": "1729fdb9b9a1e41529e4b9ad035c919991ca780b",
      "tree": "5e62ce8d54c56629f47352c465212bedf03b6690",
      "parents": [
        "2757e0a1d9d166fde09a50432dc05e768b5a9283"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Thu May 03 09:35:56 2012 -0700"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Thu May 03 09:39:19 2012 -0700"
      },
      "message": "Support specifying expect pkt and not expect port\n\nPreviously, in dataplane poll, if you did not specify a port, then\nspecifying an expected packet would be ignored.\n"
    },
    {
      "commit": "506614a62cd06c4de63f8e017f9bd8511e797b9f",
      "tree": "94ae771ce1ad00b40474c49f4e7266de0f694b81",
      "parents": [
        "aa5bc065333e901cb2795273e5d1ea522ff2db17"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Thu Mar 29 08:16:59 2012 -0700"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Sat Mar 31 14:38:56 2012 -0700"
      },
      "message": "Ignore padding bytes in the received packet when the length of the\nexpected packet is less than the minimum Ethernet frame size (60 bytes)\n"
    },
    {
      "commit": "4e2003090e3f5c55e4413514a15f8c67d8447add",
      "tree": "39a34b5ddaeb64bd6599900e52ec39c18cc02dc5",
      "parents": [
        "6ccbb07fbe7af377bcb746487d9c9be3f3f0d7a9"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Mon Mar 19 14:53:31 2012 -0700"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Mar 20 11:13:44 2012 -0700"
      },
      "message": "Log the ingress port of each packet received\n"
    },
    {
      "commit": "cf26b7a4bd60f6b47709aa34f33aac48e7ab0b61",
      "tree": "444688861823fe6ff85e4f5ff2f60239e95020e0",
      "parents": [
        "836e5bd85531c1bf7ba7e7a73c7358ad732b7d1c"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Fri Aug 05 10:15:35 2011 -0700"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Mar 20 11:13:44 2012 -0700"
      },
      "message": "Added relax option to oftest\n\nThis option relaxes restrictions around receiving unexpected packets.\nIt\u0027s main use case is in evironments where in-band control is enabled and\nas a consequence packets are forwarded to dataplane ports.\n"
    },
    {
      "commit": "a99c21ad8909883b5040a1bac384f81410bf987a",
      "tree": "d68ee0e8f5baef8f7296cea7e49dd6861ab5b765",
      "parents": [
        "b2d1d044758cc66949665215ce79116bbfbe8377"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri May 07 09:23:34 2010 -0700"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Fri May 07 09:23:34 2010 -0700"
      },
      "message": "Debug output change\n"
    },
    {
      "commit": "0db53eb3dd0c33696698798244ca2f397b8b2ba8",
      "tree": "0cc0086091629babf2f7c1774a369ef62c7e266d",
      "parents": [
        "cb6b5d7ec084e01f353e837d99b7382ca408ea99"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Wed Mar 10 14:00:02 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Wed Mar 10 14:00:02 2010 -0800"
      },
      "message": "Catch exception on socket open and exit\n"
    },
    {
      "commit": "11c26e7991de1a351e56a049fbca261a26493194",
      "tree": "894659869db051b45a7683c430a5299752ab99da",
      "parents": [
        "d12b661c13b90813e73aeb402d240b04b2d84dec"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sun Mar 07 22:03:57 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sun Mar 07 22:03:57 2010 -0800"
      },
      "message": "indentation, spaces\n"
    },
    {
      "commit": "4837010d858480e186a9aeb7b28dc2555db307d3",
      "tree": "57c9b4cb88846f288949fa0b53b66619f5b0352e",
      "parents": [
        "ea8ad807a0eef55315a251e055405ecdcc4fec41"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Wed Mar 03 15:17:33 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Wed Mar 03 15:17:33 2010 -0800"
      },
      "message": "Major overhaul of oftest command interface\n\nAdded tests/oft as top level executable\n\nSupport command line options for many config params\n\nUse logging module for output\n\nGot rid of oft_config.py; consolidate configuration in\noft (top level script) and pass around as a dictionary\n\nAdd oft_assert.py (the one useful piece of oft_config that\nremained).\n"
    },
    {
      "commit": "4d065977ffd792f847b257347a26e8683ddc26b2",
      "tree": "d2abc0771ae71a250512fc6df75ec86709b527d4",
      "parents": [
        "e226eb1a8a8257d43dd8bf7d5a619f8bb12c18a6"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Thu Feb 18 23:11:32 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Thu Feb 18 23:11:32 2010 -0800"
      },
      "message": "Doc init param\n"
    },
    {
      "commit": "e226eb1a8a8257d43dd8bf7d5a619f8bb12c18a6",
      "tree": "fa099163d1eb7bff8b79e58c0fb73f2f7e8f75cf",
      "parents": [
        "4557d783e2a5983c17c857d185fc102ed58c313b"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Thu Feb 18 23:06:30 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Thu Feb 18 23:06:30 2010 -0800"
      },
      "message": "Mostly polling and timeout support\n\nSupport poll timeouts for controller messages\nSupport poll and timeouts for dataplane messages\nChanged name of dataplane pkt get to \u0027poll\u0027\nSix basic test cases now passing on LB4G\nAdded test-framework assertion\nAdded additional files to lint checking\n"
    },
    {
      "commit": "710438c723e18e9e0e2d2ef070f158ef7d24950a",
      "tree": "bc605e46253f8163a8c22613ce3b781bd0789c69",
      "parents": [
        "a92e75bcf162b6e998daa2ca7ffce2069dce9736"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Thu Feb 18 15:16:07 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Thu Feb 18 15:16:07 2010 -0800"
      },
      "message": "Mostly changes to socket deployment\n\nUse select for handling sockets; hopefully better cleanup approach\n\nAdded connection semaphore for controller\nSupport message objects as arguments to controller.message_send\nSupport initial hello from controller when connected to switch\n"
    },
    {
      "commit": "1b3f6906767c2c169b00b91312d8ddb71c72e59d",
      "tree": "205811371728a4429ab283616e7e82a55a296d94",
      "parents": [
        "dba4c34563f848906b1a5a63df1dd9ebb621b1ef"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Mon Feb 15 14:14:19 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Mon Feb 15 14:14:19 2010 -0800"
      },
      "message": "Lots of reorg and wrestling with sockets\n"
    },
    {
      "commit": "d7e2dbedd24da852edb42a68ba315da719db553e",
      "tree": "57ad07d074ee1cfdfcf7a7eaa780936a4fd686ac",
      "parents": [
        "ec857daa57c1f6cd6e9225b9a530560e2a6d9fd6"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sat Feb 13 21:51:15 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sat Feb 13 21:51:15 2010 -0800"
      },
      "message": "Moved core code up to oftest directory\n"
    },
    {
      "commit": "ec857daa57c1f6cd6e9225b9a530560e2a6d9fd6",
      "tree": "29632d9a7a800c96d95c555a6fb05a0214fbf9b4",
      "parents": [
        "3087a4632f30ba688dc50e4868d384dfa38bbf89"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sat Feb 13 21:49:32 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sat Feb 13 21:49:32 2010 -0800"
      },
      "message": "Moved code up one directory\n"
    },
    {
      "commit": "3087a4632f30ba688dc50e4868d384dfa38bbf89",
      "tree": "22d46b995aa6d60b20e94e36dc99a4e40e7c0e4a",
      "parents": [
        "411489d65a53503c5d4ba54a980628053f035a1c"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sat Feb 13 14:01:47 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sat Feb 13 14:01:47 2010 -0800"
      },
      "message": "Moved dataplaneport to dataplane so as only one file\n"
    },
    {
      "commit": "34089522e7b488249bd9de2944d7199975655e8e",
      "tree": "91175e34189784cea14959fbaba99a1310a16215",
      "parents": [
        "10fe5c2c6a97bdd2b44331199a40cd5e03e7f42f"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sun Feb 07 23:07:41 2010 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dtalayco@stanford.edu",
        "time": "Sun Feb 07 23:07:41 2010 -0800"
      },
      "message": "Added controller, dataplane and configuration files\n"
    }
  ]
}
