We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Use nextproto property instead of nextprotocol
This is just a checklist to guide you. You can remove it safely.

**Checklist:**

-   [x ] If you are new to Scapy: I have checked <https://github.com/secdev/scapy/blob/master/CONTRIBUTING.md> (esp. section submitting-pull-requests)
-   [ ] I squashed commits belonging together
-   [ ] I added unit tests or explained why they are not relevant
-   [ ] I executed the regression tests for Python2 and Python3 (using `tox` or, `cd test && ./run_tests_py2, cd test && ./run_tests_py3`)
-   [ ] If the PR is still not finished, please create a [Draft Pull Request](https://github.blog/2019-02-14-introducing-draft-pull-requests/)

> brief description what this PR will do, e.g. fixes broken dissection of XXX
Fix wrong property in `bind_layers` function of NSH protocol. In the NSH class, it defines `nextproto` for next protocol property. 

I changed from `nextprotocol` to `nextproto` in `bind_layers`  functions.

> if required - short explanation why you fixed something in a way that may look more complicated as it actually is

> if required - outline impacts on other parts of the library


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `scapy/contrib/nsh.py`
Content:
```
1 # This file is part of Scapy
2 # Scapy is free software: you can redistribute it and/or modify
3 # it under the terms of the GNU General Public License as published by
4 # the Free Software Foundation, either version 2 of the License, or
5 # any later version.
6 #
7 # Scapy is distributed in the hope that it will be useful,
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 # GNU General Public License for more details.
11 #
12 # You should have received a copy of the GNU General Public License
13 # along with Scapy. If not, see <http://www.gnu.org/licenses/>.
14 
15 # scapy.contrib.description = Network Services Headers (NSH)
16 # scapy.contrib.status = loads
17 
18 from scapy.all import bind_layers
19 from scapy.fields import BitField, ByteField, ByteEnumField, BitEnumField, \
20     ShortField, X3BytesField, XIntField, XStrFixedLenField, \
21     ConditionalField, PacketListField, BitFieldLenField
22 from scapy.layers.inet import Ether, IP
23 from scapy.layers.inet6 import IPv6
24 from scapy.layers.vxlan import VXLAN
25 from scapy.packet import Packet
26 from scapy.layers.l2 import GRE
27 
28 from scapy.contrib.mpls import MPLS
29 
30 #
31 # NSH Support
32 # https://www.rfc-editor.org/rfc/rfc8300.txt  January 2018
33 #
34 
35 
36 class NSHTLV(Packet):
37     "NSH MD-type 2 - Variable Length Context Headers"
38     name = "NSHTLV"
39     fields_desc = [
40         ShortField('class', 0),
41         BitField('type', 0, 8),
42         BitField('reserved', 0, 1),
43         BitField('length', 0, 7),
44         PacketListField('metadata', None, XIntField, count_from='length')
45     ]
46 
47 
48 class NSH(Packet):
49     """Network Service Header.
50        NSH MD-type 1 if there is no ContextHeaders"""
51     name = "NSH"
52 
53     fields_desc = [
54         BitField('ver', 0, 2),
55         BitField('oam', 0, 1),
56         BitField('unused1', 0, 1),
57         BitField('ttl', 63, 6),
58         BitFieldLenField('length', None, 6,
59                          count_of='vlch',
60                          adjust=lambda pkt, x: 6 if pkt.mdtype == 1
61                          else x + 2),
62         BitField('unused2', 0, 4),
63         BitEnumField('mdtype', 1, 4, {0: 'Reserved MDType',
64                                       1: 'Fixed Length',
65                                       2: 'Variable Length',
66                                       0xF: 'Experimental MDType'}),
67         ByteEnumField('nextproto', 3, {1: 'IPv4',
68                                        2: 'IPv6',
69                                        3: 'Ethernet',
70                                        4: 'NSH',
71                                        5: 'MPLS',
72                                        0xFE: 'Experiment 1',
73                                        0xFF: 'Experiment 2'}),
74         X3BytesField('spi', 0),
75         ByteField('si', 0xFF),
76         ConditionalField(XStrFixedLenField("context_header", "", 16),
77                          lambda pkt: pkt.mdtype == 1),
78         ConditionalField(PacketListField("vlch", None, NSHTLV,
79                                          count_from="length"),
80                          lambda pkt: pkt.mdtype == 2)
81     ]
82 
83     def mysummary(self):
84         return self.sprintf("SPI: %spi% - SI: %si%")
85 
86 
87 bind_layers(Ether, NSH, {'type': 0x894F}, type=0x894F)
88 bind_layers(VXLAN, NSH, {'flags': 0xC, 'nextprotocol': 4}, nextprotocol=4)
89 bind_layers(GRE, NSH, {'proto': 0x894F}, proto=0x894F)
90 
91 bind_layers(NSH, IP, {'nextprotocol': 1}, nextprotocol=1)
92 bind_layers(NSH, IPv6, {'nextprotocol': 2}, nextprotocol=2)
93 bind_layers(NSH, Ether, {'nextprotocol': 3}, nextprotocol=3)
94 bind_layers(NSH, NSH, {'nextprotocol': 4}, nextprotocol=4)
95 bind_layers(NSH, MPLS, {'nextprotocol': 5}, nextprotocol=5)
96
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/scapy/contrib/nsh.py b/scapy/contrib/nsh.py
--- a/scapy/contrib/nsh.py
+++ b/scapy/contrib/nsh.py
@@ -85,11 +85,11 @@
 
 
 bind_layers(Ether, NSH, {'type': 0x894F}, type=0x894F)
-bind_layers(VXLAN, NSH, {'flags': 0xC, 'nextprotocol': 4}, nextprotocol=4)
+bind_layers(VXLAN, NSH, {'flags': 0xC, 'nextproto': 4}, nextproto=4)
 bind_layers(GRE, NSH, {'proto': 0x894F}, proto=0x894F)
 
-bind_layers(NSH, IP, {'nextprotocol': 1}, nextprotocol=1)
-bind_layers(NSH, IPv6, {'nextprotocol': 2}, nextprotocol=2)
-bind_layers(NSH, Ether, {'nextprotocol': 3}, nextprotocol=3)
-bind_layers(NSH, NSH, {'nextprotocol': 4}, nextprotocol=4)
-bind_layers(NSH, MPLS, {'nextprotocol': 5}, nextprotocol=5)
+bind_layers(NSH, IP, nextproto=1)
+bind_layers(NSH, IPv6, nextproto=2)
+bind_layers(NSH, Ether, nextproto=3)
+bind_layers(NSH, NSH, nextproto=4)
+bind_layers(NSH, MPLS, nextproto=5)

{"golden_diff": "diff --git a/scapy/contrib/nsh.py b/scapy/contrib/nsh.py\n--- a/scapy/contrib/nsh.py\n+++ b/scapy/contrib/nsh.py\n@@ -85,11 +85,11 @@\n \n \n bind_layers(Ether, NSH, {'type': 0x894F}, type=0x894F)\n-bind_layers(VXLAN, NSH, {'flags': 0xC, 'nextprotocol': 4}, nextprotocol=4)\n+bind_layers(VXLAN, NSH, {'flags': 0xC, 'nextproto': 4}, nextproto=4)\n bind_layers(GRE, NSH, {'proto': 0x894F}, proto=0x894F)\n \n-bind_layers(NSH, IP, {'nextprotocol': 1}, nextprotocol=1)\n-bind_layers(NSH, IPv6, {'nextprotocol': 2}, nextprotocol=2)\n-bind_layers(NSH, Ether, {'nextprotocol': 3}, nextprotocol=3)\n-bind_layers(NSH, NSH, {'nextprotocol': 4}, nextprotocol=4)\n-bind_layers(NSH, MPLS, {'nextprotocol': 5}, nextprotocol=5)\n+bind_layers(NSH, IP, nextproto=1)\n+bind_layers(NSH, IPv6, nextproto=2)\n+bind_layers(NSH, Ether, nextproto=3)\n+bind_layers(NSH, NSH, nextproto=4)\n+bind_layers(NSH, MPLS, nextproto=5)\n", "issue": "Use nextproto property instead of nextprotocol\nThis is just a checklist to guide you. You can remove it safely.\r\n\r\n**Checklist:**\r\n\r\n-   [x ] If you are new to Scapy: I have checked <https://github.com/secdev/scapy/blob/master/CONTRIBUTING.md> (esp. section submitting-pull-requests)\r\n-   [ ] I squashed commits belonging together\r\n-   [ ] I added unit tests or explained why they are not relevant\r\n-   [ ] I executed the regression tests for Python2 and Python3 (using `tox` or, `cd test && ./run_tests_py2, cd test && ./run_tests_py3`)\r\n-   [ ] If the PR is still not finished, please create a [Draft Pull Request](https://github.blog/2019-02-14-introducing-draft-pull-requests/)\r\n\r\n> brief description what this PR will do, e.g. fixes broken dissection of XXX\r\nFix wrong property in `bind_layers` function of NSH protocol. In the NSH class, it defines `nextproto` for next protocol property. \r\n\r\nI changed from `nextprotocol` to `nextproto` in `bind_layers`  functions.\r\n\r\n> if required - short explanation why you fixed something in a way that may look more complicated as it actually is\r\n\r\n> if required - outline impacts on other parts of the library\r\n\n", "before_files": [{"content": "# This file is part of Scapy\n# Scapy is free software: you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation, either version 2 of the License, or\n# any later version.\n#\n# Scapy is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with Scapy. If not, see <http://www.gnu.org/licenses/>.\n\n# scapy.contrib.description = Network Services Headers (NSH)\n# scapy.contrib.status = loads\n\nfrom scapy.all import bind_layers\nfrom scapy.fields import BitField, ByteField, ByteEnumField, BitEnumField, \\\n    ShortField, X3BytesField, XIntField, XStrFixedLenField, \\\n    ConditionalField, PacketListField, BitFieldLenField\nfrom scapy.layers.inet import Ether, IP\nfrom scapy.layers.inet6 import IPv6\nfrom scapy.layers.vxlan import VXLAN\nfrom scapy.packet import Packet\nfrom scapy.layers.l2 import GRE\n\nfrom scapy.contrib.mpls import MPLS\n\n#\n# NSH Support\n# https://www.rfc-editor.org/rfc/rfc8300.txt  January 2018\n#\n\n\nclass NSHTLV(Packet):\n    \"NSH MD-type 2 - Variable Length Context Headers\"\n    name = \"NSHTLV\"\n    fields_desc = [\n        ShortField('class', 0),\n        BitField('type', 0, 8),\n        BitField('reserved', 0, 1),\n        BitField('length', 0, 7),\n        PacketListField('metadata', None, XIntField, count_from='length')\n    ]\n\n\nclass NSH(Packet):\n    \"\"\"Network Service Header.\n       NSH MD-type 1 if there is no ContextHeaders\"\"\"\n    name = \"NSH\"\n\n    fields_desc = [\n        BitField('ver', 0, 2),\n        BitField('oam', 0, 1),\n        BitField('unused1', 0, 1),\n        BitField('ttl', 63, 6),\n        BitFieldLenField('length', None, 6,\n                         count_of='vlch',\n                         adjust=lambda pkt, x: 6 if pkt.mdtype == 1\n                         else x + 2),\n        BitField('unused2', 0, 4),\n        BitEnumField('mdtype', 1, 4, {0: 'Reserved MDType',\n                                      1: 'Fixed Length',\n                                      2: 'Variable Length',\n                                      0xF: 'Experimental MDType'}),\n        ByteEnumField('nextproto', 3, {1: 'IPv4',\n                                       2: 'IPv6',\n                                       3: 'Ethernet',\n                                       4: 'NSH',\n                                       5: 'MPLS',\n                                       0xFE: 'Experiment 1',\n                                       0xFF: 'Experiment 2'}),\n        X3BytesField('spi', 0),\n        ByteField('si', 0xFF),\n        ConditionalField(XStrFixedLenField(\"context_header\", \"\", 16),\n                         lambda pkt: pkt.mdtype == 1),\n        ConditionalField(PacketListField(\"vlch\", None, NSHTLV,\n                                         count_from=\"length\"),\n                         lambda pkt: pkt.mdtype == 2)\n    ]\n\n    def mysummary(self):\n        return self.sprintf(\"SPI: %spi% - SI: %si%\")\n\n\nbind_layers(Ether, NSH, {'type': 0x894F}, type=0x894F)\nbind_layers(VXLAN, NSH, {'flags': 0xC, 'nextprotocol': 4}, nextprotocol=4)\nbind_layers(GRE, NSH, {'proto': 0x894F}, proto=0x894F)\n\nbind_layers(NSH, IP, {'nextprotocol': 1}, nextprotocol=1)\nbind_layers(NSH, IPv6, {'nextprotocol': 2}, nextprotocol=2)\nbind_layers(NSH, Ether, {'nextprotocol': 3}, nextprotocol=3)\nbind_layers(NSH, NSH, {'nextprotocol': 4}, nextprotocol=4)\nbind_layers(NSH, MPLS, {'nextprotocol': 5}, nextprotocol=5)\n", "path": "scapy/contrib/nsh.py"}], "after_files": [{"content": "# This file is part of Scapy\n# Scapy is free software: you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation, either version 2 of the License, or\n# any later version.\n#\n# Scapy is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with Scapy. If not, see <http://www.gnu.org/licenses/>.\n\n# scapy.contrib.description = Network Services Headers (NSH)\n# scapy.contrib.status = loads\n\nfrom scapy.all import bind_layers\nfrom scapy.fields import BitField, ByteField, ByteEnumField, BitEnumField, \\\n    ShortField, X3BytesField, XIntField, XStrFixedLenField, \\\n    ConditionalField, PacketListField, BitFieldLenField\nfrom scapy.layers.inet import Ether, IP\nfrom scapy.layers.inet6 import IPv6\nfrom scapy.layers.vxlan import VXLAN\nfrom scapy.packet import Packet\nfrom scapy.layers.l2 import GRE\n\nfrom scapy.contrib.mpls import MPLS\n\n#\n# NSH Support\n# https://www.rfc-editor.org/rfc/rfc8300.txt  January 2018\n#\n\n\nclass NSHTLV(Packet):\n    \"NSH MD-type 2 - Variable Length Context Headers\"\n    name = \"NSHTLV\"\n    fields_desc = [\n        ShortField('class', 0),\n        BitField('type', 0, 8),\n        BitField('reserved', 0, 1),\n        BitField('length', 0, 7),\n        PacketListField('metadata', None, XIntField, count_from='length')\n    ]\n\n\nclass NSH(Packet):\n    \"\"\"Network Service Header.\n       NSH MD-type 1 if there is no ContextHeaders\"\"\"\n    name = \"NSH\"\n\n    fields_desc = [\n        BitField('ver', 0, 2),\n        BitField('oam', 0, 1),\n        BitField('unused1', 0, 1),\n        BitField('ttl', 63, 6),\n        BitFieldLenField('length', None, 6,\n                         count_of='vlch',\n                         adjust=lambda pkt, x: 6 if pkt.mdtype == 1\n                         else x + 2),\n        BitField('unused2', 0, 4),\n        BitEnumField('mdtype', 1, 4, {0: 'Reserved MDType',\n                                      1: 'Fixed Length',\n                                      2: 'Variable Length',\n                                      0xF: 'Experimental MDType'}),\n        ByteEnumField('nextproto', 3, {1: 'IPv4',\n                                       2: 'IPv6',\n                                       3: 'Ethernet',\n                                       4: 'NSH',\n                                       5: 'MPLS',\n                                       0xFE: 'Experiment 1',\n                                       0xFF: 'Experiment 2'}),\n        X3BytesField('spi', 0),\n        ByteField('si', 0xFF),\n        ConditionalField(XStrFixedLenField(\"context_header\", \"\", 16),\n                         lambda pkt: pkt.mdtype == 1),\n        ConditionalField(PacketListField(\"vlch\", None, NSHTLV,\n                                         count_from=\"length\"),\n                         lambda pkt: pkt.mdtype == 2)\n    ]\n\n    def mysummary(self):\n        return self.sprintf(\"SPI: %spi% - SI: %si%\")\n\n\nbind_layers(Ether, NSH, {'type': 0x894F}, type=0x894F)\nbind_layers(VXLAN, NSH, {'flags': 0xC, 'nextproto': 4}, nextproto=4)\nbind_layers(GRE, NSH, {'proto': 0x894F}, proto=0x894F)\n\nbind_layers(NSH, IP, nextproto=1)\nbind_layers(NSH, IPv6, nextproto=2)\nbind_layers(NSH, Ether, nextproto=3)\nbind_layers(NSH, NSH, nextproto=4)\nbind_layers(NSH, MPLS, nextproto=5)\n", "path": "scapy/contrib/nsh.py"}]}