{"action":"created","comment":{"url":"https://api.github.com/repos/FRRouting/frr/pulls/comments/206539356","pull_request_review_id":141968602,"id":206539356,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwNjUzOTM1Ng==","diff_hunk":"@@ -0,0 +1,306 @@\n+/*\n+ * BGP-specific error messages.\n+ * Copyright (C) 2018 Cumulus Networks, Inc.\n+ *               Don Slice\n+ *\n+ * This program is free software; you can redistribute it and/or modify it\n+ * under the terms of the GNU General Public License as published by the Free\n+ * Software Foundation; either version 2 of the License, or (at your option)\n+ * any later version.\n+ *\n+ * This program is distributed in the hope that it will be useful, but WITHOUT\n+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\n+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\n+ * more details.\n+ *\n+ * You should have received a copy of the GNU General Public License along\n+ * with this program; see the file COPYING; if not, write to the Free Software\n+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\n+ */\n+\n+#include <zebra.h>\n+\n+#include \"lib/ferr.h\"\n+#include \"bgp_errors.h\"\n+\n+/* clang-format off */\n+static struct ferr_ref ferr_bgp_err[] = {\n+\t{\n+\t\t.code = BGP_ERR_ATTR_FLAG,\n+\t\t.title = \"BGP attribute flag is incorrect\",\n+\t\t.description = \"BGP attribute flag is set to the wrong value (Optional/Transitive/Partial)\",\n+\t\t.suggestion = \"Determine the soure of the attribute and determine why the attribute flag has been set incorrectly\"\n+\t},\n+\t{\n+\t\t.code = BGP_ERR_ATTR_LEN,\n+\t\t.title = \"BGP attribute length is incorrect\",\n+\t\t.description = \"BGP attribute length is incorrect\",\n+\t\t.suggestion = \"Determine the soure of the attribute and determine why the attribute length has been set incorrectly\"\n+\t},\n+\t{\n+\t\t.code = BGP_ERR_ATTR_ORIGIN,\n+\t\t.title = \"BGP attribute origin value invalid\",\n+\t\t.description = \"BGP attribute origin value is invalid\",\n+\t\t.suggestion = \"Determine the soure of the attribute and determine why the origin attribute has been set incorrectly\"\n+\t},\n+\t{\n+\t\t.code = BGP_ERR_ATTR_MAL_AS_PATH,\n+\t\t.title = \"BGP as path is invalid\",\n+\t\t.description = \"BGP as path has been malformed\",\n+\t\t.suggestion = \"Determine the soure of the update and determine why the as path has been set incorrectly\"\n+\t},\n+\t{\n+\t\t.code = BGP_ERR_ATTR_FIRST_AS,\n+\t\t.title = \"BGP as path first as is invalid\",\n+\t\t.description = \"BGP update has invalid first as in as path\",\n+\t\t.suggestion = \"Determine the soure of the update and determine why the as path first as value has been set incorrectly\"\n+\t},\n+\t{\n+\t\t.code = BGP_ERR_ATTR_PMSI_TYPE,\n+\t\t.title = \"BGP PMSI tunnel attribute type is invalid\",\n+\t\t.description = \"BGP update has invalid type for PMSI tunnel\",\n+\t\t.suggestion = \"Determine the soure of the update and determine why the PMSI tunnel attribute type has been set incorrectly\"","path":"bgpd/bgp_errors.c","position":62,"original_position":62,"commit_id":"586229e6808d39212fc678b3c9e50b2b0347388d","original_commit_id":"586229e6808d39212fc678b3c9e50b2b0347388d","user":{"login":"riw777","id":355715,"node_id":"MDQ6VXNlcjM1NTcxNQ==","avatar_url":"https://avatars0.githubusercontent.com/u/355715?v=4","gravatar_id":"","url":"https://api.github.com/users/riw777","html_url":"https://github.com/riw777","followers_url":"https://api.github.com/users/riw777/followers","following_url":"https://api.github.com/users/riw777/following{/other_user}","gists_url":"https://api.github.com/users/riw777/gists{/gist_id}","starred_url":"https://api.github.com/users/riw777/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/riw777/subscriptions","organizations_url":"https://api.github.com/users/riw777/orgs","repos_url":"https://api.github.com/users/riw777/repos","events_url":"https://api.github.com/users/riw777/events{/privacy}","received_events_url":"https://api.github.com/users/riw777/received_events","type":"User","site_admin":false},"body":"soure source","created_at":"2018-07-31T14:00:20Z","updated_at":"2018-07-31T14:00:21Z","html_url":"https://github.com/FRRouting/frr/pull/2448#discussion_r206539356","pull_request_url":"https://api.github.com/repos/FRRouting/frr/pulls/2448","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/FRRouting/frr/pulls/comments/206539356"},"html":{"href":"https://github.com/FRRouting/frr/pull/2448#discussion_r206539356"},"pull_request":{"href":"https://api.github.com/repos/FRRouting/frr/pulls/2448"}}},"pull_request":{"url":"https://api.github.com/repos/FRRouting/frr/pulls/2448","id":194970550,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk0OTcwNTUw","html_url":"https://github.com/FRRouting/frr/pull/2448","diff_url":"https://github.com/FRRouting/frr/pull/2448.diff","patch_url":"https://github.com/FRRouting/frr/pull/2448.patch","issue_url":"https://api.github.com/repos/FRRouting/frr/issues/2448","number":2448,"state":"open","locked":false,"title":"Error Reference Cards","user":{"login":"qlyoung","id":6827003,"node_id":"MDQ6VXNlcjY4MjcwMDM=","avatar_url":"https://avatars3.githubusercontent.com/u/6827003?v=4","gravatar_id":"","url":"https://api.github.com/users/qlyoung","html_url":"https://github.com/qlyoung","followers_url":"https://api.github.com/users/qlyoung/followers","following_url":"https://api.github.com/users/qlyoung/following{/other_user}","gists_url":"https://api.github.com/users/qlyoung/gists{/gist_id}","starred_url":"https://api.github.com/users/qlyoung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qlyoung/subscriptions","organizations_url":"https://api.github.com/users/qlyoung/orgs","repos_url":"https://api.github.com/users/qlyoung/repos","events_url":"https://api.github.com/users/qlyoung/events{/privacy}","received_events_url":"https://api.github.com/users/qlyoung/received_events","type":"User","site_admin":false},"body":"This patch set begins the implementation of a new error reporting system within FRR. The goal is to tag each individual error log message with a reference code that can be subsequently used to get additional information on the error and how to resolve it. This adds on to the existing runtime error reporting code in `lib/ferr.[ch]` that is already lightly used in the codebase.\r\n\r\n* Add a system for storing reference information on coded errors\r\n* Add `show error (1-4294967296)` for showing additional information on errors\r\n* Add a convenience macro to the `zlog_*` set in `log.h` that accepts an error code and formats it properly in log messages\r\n* Convert a large chunk of existing errors over to this system\r\n\r\nOne additional planned feature is to allow dumping all existing error reference info to JSON, which can be subsequently extracted and inserted into user documentation.","created_at":"2018-06-14T17:52:27Z","updated_at":"2018-07-31T14:00:21Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e0cd16ff656c50821597a8d7101e1439dc986d57","assignee":null,"assignees":[],"requested_reviewers":[{"login":"eqvinox","id":1715611,"node_id":"MDQ6VXNlcjE3MTU2MTE=","avatar_url":"https://avatars2.githubusercontent.com/u/1715611?v=4","gravatar_id":"","url":"https://api.github.com/users/eqvinox","html_url":"https://github.com/eqvinox","followers_url":"https://api.github.com/users/eqvinox/followers","following_url":"https://api.github.com/users/eqvinox/following{/other_user}","gists_url":"https://api.github.com/users/eqvinox/gists{/gist_id}","starred_url":"https://api.github.com/users/eqvinox/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eqvinox/subscriptions","organizations_url":"https://api.github.com/users/eqvinox/orgs","repos_url":"https://api.github.com/users/eqvinox/repos","events_url":"https://api.github.com/users/eqvinox/events{/privacy}","received_events_url":"https://api.github.com/users/eqvinox/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/FRRouting/frr/pulls/2448/commits","review_comments_url":"https://api.github.com/repos/FRRouting/frr/pulls/2448/comments","review_comment_url":"https://api.github.com/repos/FRRouting/frr/pulls/comments{/number}","comments_url":"https://api.github.com/repos/FRRouting/frr/issues/2448/comments","statuses_url":"https://api.github.com/repos/FRRouting/frr/statuses/586229e6808d39212fc678b3c9e50b2b0347388d","head":{"label":"qlyoung:error-reference-cards","ref":"error-reference-cards","sha":"586229e6808d39212fc678b3c9e50b2b0347388d","user":{"login":"qlyoung","id":6827003,"node_id":"MDQ6VXNlcjY4MjcwMDM=","avatar_url":"https://avatars3.githubusercontent.com/u/6827003?v=4","gravatar_id":"","url":"https://api.github.com/users/qlyoung","html_url":"https://github.com/qlyoung","followers_url":"https://api.github.com/users/qlyoung/followers","following_url":"https://api.github.com/users/qlyoung/following{/other_user}","gists_url":"https://api.github.com/users/qlyoung/gists{/gist_id}","starred_url":"https://api.github.com/users/qlyoung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qlyoung/subscriptions","organizations_url":"https://api.github.com/users/qlyoung/orgs","repos_url":"https://api.github.com/users/qlyoung/repos","events_url":"https://api.github.com/users/qlyoung/events{/privacy}","received_events_url":"https://api.github.com/users/qlyoung/received_events","type":"User","site_admin":false},"repo":{"id":76620415,"node_id":"MDEwOlJlcG9zaXRvcnk3NjYyMDQxNQ==","name":"frr","full_name":"qlyoung/frr","owner":{"login":"qlyoung","id":6827003,"node_id":"MDQ6VXNlcjY4MjcwMDM=","avatar_url":"https://avatars3.githubusercontent.com/u/6827003?v=4","gravatar_id":"","url":"https://api.github.com/users/qlyoung","html_url":"https://github.com/qlyoung","followers_url":"https://api.github.com/users/qlyoung/followers","following_url":"https://api.github.com/users/qlyoung/following{/other_user}","gists_url":"https://api.github.com/users/qlyoung/gists{/gist_id}","starred_url":"https://api.github.com/users/qlyoung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qlyoung/subscriptions","organizations_url":"https://api.github.com/users/qlyoung/orgs","repos_url":"https://api.github.com/users/qlyoung/repos","events_url":"https://api.github.com/users/qlyoung/events{/privacy}","received_events_url":"https://api.github.com/users/qlyoung/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/qlyoung/frr","description":null,"fork":true,"url":"https://api.github.com/repos/qlyoung/frr","forks_url":"https://api.github.com/repos/qlyoung/frr/forks","keys_url":"https://api.github.com/repos/qlyoung/frr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/qlyoung/frr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/qlyoung/frr/teams","hooks_url":"https://api.github.com/repos/qlyoung/frr/hooks","issue_events_url":"https://api.github.com/repos/qlyoung/frr/issues/events{/number}","events_url":"https://api.github.com/repos/qlyoung/frr/events","assignees_url":"https://api.github.com/repos/qlyoung/frr/assignees{/user}","branches_url":"https://api.github.com/repos/qlyoung/frr/branches{/branch}","tags_url":"https://api.github.com/repos/qlyoung/frr/tags","blobs_url":"https://api.github.com/repos/qlyoung/frr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/qlyoung/frr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/qlyoung/frr/git/refs{/sha}","trees_url":"https://api.github.com/repos/qlyoung/frr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/qlyoung/frr/statuses/{sha}","languages_url":"https://api.github.com/repos/qlyoung/frr/languages","stargazers_url":"https://api.github.com/repos/qlyoung/frr/stargazers","contributors_url":"https://api.github.com/repos/qlyoung/frr/contributors","subscribers_url":"https://api.github.com/repos/qlyoung/frr/subscribers","subscription_url":"https://api.github.com/repos/qlyoung/frr/subscription","commits_url":"https://api.github.com/repos/qlyoung/frr/commits{/sha}","git_commits_url":"https://api.github.com/repos/qlyoung/frr/git/commits{/sha}","comments_url":"https://api.github.com/repos/qlyoung/frr/comments{/number}","issue_comment_url":"https://api.github.com/repos/qlyoung/frr/issues/comments{/number}","contents_url":"https://api.github.com/repos/qlyoung/frr/contents/{+path}","compare_url":"https://api.github.com/repos/qlyoung/frr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/qlyoung/frr/merges","archive_url":"https://api.github.com/repos/qlyoung/frr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/qlyoung/frr/downloads","issues_url":"https://api.github.com/repos/qlyoung/frr/issues{/number}","pulls_url":"https://api.github.com/repos/qlyoung/frr/pulls{/number}","milestones_url":"https://api.github.com/repos/qlyoung/frr/milestones{/number}","notifications_url":"https://api.github.com/repos/qlyoung/frr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/qlyoung/frr/labels{/name}","releases_url":"https://api.github.com/repos/qlyoung/frr/releases{/id}","deployments_url":"https://api.github.com/repos/qlyoung/frr/deployments","created_at":"2016-12-16T04:12:57Z","updated_at":"2018-07-30T18:26:37Z","pushed_at":"2018-07-30T23:06:37Z","git_url":"git://github.com/qlyoung/frr.git","ssh_url":"git@github.com:qlyoung/frr.git","clone_url":"https://github.com/qlyoung/frr.git","svn_url":"https://github.com/qlyoung/frr","homepage":null,"size":46369,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"FRRouting:master","ref":"master","sha":"4b22e6bc053fe6349960b279c5bfa47bbba04b56","user":{"login":"FRRouting","id":24592672,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI0NTkyNjcy","avatar_url":"https://avatars1.githubusercontent.com/u/24592672?v=4","gravatar_id":"","url":"https://api.github.com/users/FRRouting","html_url":"https://github.com/FRRouting","followers_url":"https://api.github.com/users/FRRouting/followers","following_url":"https://api.github.com/users/FRRouting/following{/other_user}","gists_url":"https://api.github.com/users/FRRouting/gists{/gist_id}","starred_url":"https://api.github.com/users/FRRouting/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FRRouting/subscriptions","organizations_url":"https://api.github.com/users/FRRouting/orgs","repos_url":"https://api.github.com/users/FRRouting/repos","events_url":"https://api.github.com/users/FRRouting/events{/privacy}","received_events_url":"https://api.github.com/users/FRRouting/received_events","type":"Organization","site_admin":false},"repo":{"id":76599439,"node_id":"MDEwOlJlcG9zaXRvcnk3NjU5OTQzOQ==","name":"frr","full_name":"FRRouting/frr","owner":{"login":"FRRouting","id":24592672,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI0NTkyNjcy","avatar_url":"https://avatars1.githubusercontent.com/u/24592672?v=4","gravatar_id":"","url":"https://api.github.com/users/FRRouting","html_url":"https://github.com/FRRouting","followers_url":"https://api.github.com/users/FRRouting/followers","following_url":"https://api.github.com/users/FRRouting/following{/other_user}","gists_url":"https://api.github.com/users/FRRouting/gists{/gist_id}","starred_url":"https://api.github.com/users/FRRouting/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FRRouting/subscriptions","organizations_url":"https://api.github.com/users/FRRouting/orgs","repos_url":"https://api.github.com/users/FRRouting/repos","events_url":"https://api.github.com/users/FRRouting/events{/privacy}","received_events_url":"https://api.github.com/users/FRRouting/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/FRRouting/frr","description":"The FRRouting Protocol Suite","fork":false,"url":"https://api.github.com/repos/FRRouting/frr","forks_url":"https://api.github.com/repos/FRRouting/frr/forks","keys_url":"https://api.github.com/repos/FRRouting/frr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/FRRouting/frr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/FRRouting/frr/teams","hooks_url":"https://api.github.com/repos/FRRouting/frr/hooks","issue_events_url":"https://api.github.com/repos/FRRouting/frr/issues/events{/number}","events_url":"https://api.github.com/repos/FRRouting/frr/events","assignees_url":"https://api.github.com/repos/FRRouting/frr/assignees{/user}","branches_url":"https://api.github.com/repos/FRRouting/frr/branches{/branch}","tags_url":"https://api.github.com/repos/FRRouting/frr/tags","blobs_url":"https://api.github.com/repos/FRRouting/frr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/FRRouting/frr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/FRRouting/frr/git/refs{/sha}","trees_url":"https://api.github.com/repos/FRRouting/frr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/FRRouting/frr/statuses/{sha}","languages_url":"https://api.github.com/repos/FRRouting/frr/languages","stargazers_url":"https://api.github.com/repos/FRRouting/frr/stargazers","contributors_url":"https://api.github.com/repos/FRRouting/frr/contributors","subscribers_url":"https://api.github.com/repos/FRRouting/frr/subscribers","subscription_url":"https://api.github.com/repos/FRRouting/frr/subscription","commits_url":"https://api.github.com/repos/FRRouting/frr/commits{/sha}","git_commits_url":"https://api.github.com/repos/FRRouting/frr/git/commits{/sha}","comments_url":"https://api.github.com/repos/FRRouting/frr/comments{/number}","issue_comment_url":"https://api.github.com/repos/FRRouting/frr/issues/comments{/number}","contents_url":"https://api.github.com/repos/FRRouting/frr/contents/{+path}","compare_url":"https://api.github.com/repos/FRRouting/frr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/FRRouting/frr/merges","archive_url":"https://api.github.com/repos/FRRouting/frr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/FRRouting/frr/downloads","issues_url":"https://api.github.com/repos/FRRouting/frr/issues{/number}","pulls_url":"https://api.github.com/repos/FRRouting/frr/pulls{/number}","milestones_url":"https://api.github.com/repos/FRRouting/frr/milestones{/number}","notifications_url":"https://api.github.com/repos/FRRouting/frr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/FRRouting/frr/labels{/name}","releases_url":"https://api.github.com/repos/FRRouting/frr/releases{/id}","deployments_url":"https://api.github.com/repos/FRRouting/frr/deployments","created_at":"2016-12-15T21:56:38Z","updated_at":"2018-07-31T11:57:55Z","pushed_at":"2018-07-31T10:36:30Z","git_url":"git://github.com/FRRouting/frr.git","ssh_url":"git@github.com:FRRouting/frr.git","clone_url":"https://github.com/FRRouting/frr.git","svn_url":"https://github.com/FRRouting/frr","homepage":"https://frrouting.org/","size":42826,"stargazers_count":584,"watchers_count":584,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":233,"mirror_url":null,"archived":false,"open_issues_count":258,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":233,"open_issues":258,"watchers":584,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/FRRouting/frr/pulls/2448"},"html":{"href":"https://github.com/FRRouting/frr/pull/2448"},"issue":{"href":"https://api.github.com/repos/FRRouting/frr/issues/2448"},"comments":{"href":"https://api.github.com/repos/FRRouting/frr/issues/2448/comments"},"review_comments":{"href":"https://api.github.com/repos/FRRouting/frr/pulls/2448/comments"},"review_comment":{"href":"https://api.github.com/repos/FRRouting/frr/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/FRRouting/frr/pulls/2448/commits"},"statuses":{"href":"https://api.github.com/repos/FRRouting/frr/statuses/586229e6808d39212fc678b3c9e50b2b0347388d"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"riw777"}}