| ;;; Copyright (c) 2016 Cisco and/or its affiliates. |
| ;;; Licensed under the Apache License, Version 2.0 (the "License"); |
| ;;; you may not use this file except in compliance with the License. |
| ;;; You may obtain a copy of the License at: |
| ;;; |
| ;;; http://www.apache.org/licenses/LICENSE-2.0 |
| ;;; |
| ;;; Unless required by applicable law or agreed to in writing, software |
| ;;; distributed under the License is distributed on an "AS IS" BASIS, |
| ;;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| ;;; See the License for the specific language governing permissions and |
| ;;; limitations under the License. |
| |
| How to construct a complete plugin using the emacs skeletons |
| |
| 0. Install open-vpp, including the development package. |
| |
| 1. Load emacs skeletons |
| |
| M-x find-file all-skel.el |
| M-x eval-buffer |
| |
| 2. Pick a single-word, lower-case name for your plugin. For example: macswap. |
| Hereafter, we'll refer to the selected name as <plugin-name>. |
| |
| 3. Generate the entire plugin: |
| |
| M-x make-plugin |
| Plugin-name: <plugin-name> |
| |
| Or, generate each file individually: |
| |
| 3. Create the required directories, e.g. under .../vpp |
| |
| $ mkdir -p <plugin-name>-plugin/<plugin-name> |
| |
| 4. Create <plugin-name>-plugin/{configure.ac,Makefile.am} |
| |
| M-x find-file <plugin-name>-plugin/configure.ac |
| M-x plugin-configure-skel |
| |
| M-x find-file <plugin-name>-plugin/Makefile.am |
| M-x skel-plugin-makefile |
| |
| 5. Create the api skeleton |
| M-x find-file <plugin-name>-plugin/<plugin-name>/<plugin-name>.api |
| M-x skel-plugin-api |
| |
| 6. Create the api message enumeration header file |
| M-x find-file <plugin-name>-plugin/<plugin-name>/<plugin-name>_msg_enum.h |
| M-x skel-plugin-msg-enum |
| |
| 7. Create the "all-api" header file |
| M-x find-file <plugin-name>-plugin/<plugin-name>/<plugin-name>_all_api_h.h |
| M-x skel-plugin-all-apih |
| |
| 8. Create the main data structure definition header file |
| M-x find-file <plugin-name>-plugin/<plugin-name>/<plugin-name>.h |
| M-x skel-plugin-h |
| |
| 9. Create the plugin main C file |
| M-x find-file <plugin-name>-plugin/<plugin-name>/<plugin-name>.c |
| M-x skel-plugin-main |
| |
| 10. Create the vpp-api-test plugin main C file |
| M-x find-file <plugin-name>-plugin/<plugin-name>/<plugin-name>_test.c |
| M-x skel-plugin-test |
| |
| 11. Create the data plane packet processing node |
| M-x find-file <plugin-name>-plugin/<plugin-name>/node.c |
| M-x skel-plugin-node |
| |
| 12. Process autotools input files |
| |
| $ cd <plugin-name>-plugin |
| $ autoreconf -i -f |
| |
| 13. Build the plugin skeleton |
| |
| $ mkdir build |
| $ cd build |
| $ ../configure |
| $ make |
| $ sudo make install |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |