summaryrefslogtreecommitdiff
path: root/tools/zebra.el
diff options
context:
space:
mode:
Diffstat (limited to 'tools/zebra.el')
-rw-r--r--tools/zebra.el108
1 files changed, 108 insertions, 0 deletions
diff --git a/tools/zebra.el b/tools/zebra.el
new file mode 100644
index 00000000..01ff09fd
--- /dev/null
+++ b/tools/zebra.el
@@ -0,0 +1,108 @@
+;; -*- lisp -*-
+;;; zebra-mode.el -- major mode for editing zebra configuration file.
+
+;; Copyright (C) 1998 Kunihiro Ishiguro
+
+;; Author: 1998 Kunihiro Ishiguro
+;; SeonMeyong HEO
+;; Maintainer: kunihiro@zebra.org
+;; seirios@Matrix.IRI.Co.JP
+;; Created: Jan 28 1998
+;; Version: Alpha 0.2
+;; Keywords: zebra bgpd ripd ripngd languages
+
+;; You can get the latest version of zebra from
+;;
+;; http://www.zebra.org/
+;;
+;; Install this Emacs Lisp code
+;;
+;; Compile zebra.el
+;; % $(EMACS) -batch -f batch-byte-compile zebra.el
+;; Install zebra.el,zebra.elc to Emacs-load-path
+;; % cp zebra.el zebra.elc $(emacs-load-path)
+;; Add .emacs or (site-load.el | site-start.el)
+;; (auto-load 'zebra-mode "zebra" nil t)
+;; (auto-load 'bgp-mode "zebra" nil t)
+;; (auto-load 'rip-mode "zebra" nil t)
+;;
+
+;;; Code:
+
+;; Set keywords
+
+(defvar zebra-font-lock-keywords
+ (list
+ '("#.*$" . font-lock-comment-face)
+ '("!.*$" . font-lock-comment-face)
+ '("no\\|interface" . font-lock-type-face)
+ '("ip6\\|ip\\|route\\|address" . font-lock-function-name-face)
+ '("ipforward\\|ipv6forward" . font-lock-keyword-face)
+ '("hostname\\|password\\|enable\\|logfile\\|no" . font-lock-keyword-face))
+ "Default value to highlight in zebra mode.")
+
+(defvar bgp-font-lock-keywords
+ (list
+ '("#.*$" . font-lock-comment-face)
+ '("!.*$" . font-lock-comment-face)
+ '("no\\|router" . font-lock-type-face)
+ '("bgp\\|router-id\\|neighbor\\|network" . font-lock-function-name-face)
+ '("ebgp\\|multihop\\|next\\|zebra\\|remote-as" . font-lock-keyword-face)
+ '("hostname\\|password\\|enable\\|logfile\\|no" . font-lock-keyword-face))
+ "Default value to highlight in bgp mode.")
+
+(defvar rip-font-lock-keywords
+ (list
+ '("#.*$" . font-lock-comment-face)
+ '("!.*$" . font-lock-comment-face)
+ '("no\\|router\\|interface\\|ipv6\\|ip6\\|ip" . font-lock-type-face)
+ '("ripng\\|rip\\|recive\\|advertize\\|accept" . font-lock-function-name-face)
+ '("version\\|network" . font-lock-function-name-face)
+ '("default\\|none\\|zebra" . font-lock-keyword-face)
+ '("hostname\\|password\\|enable\\|logfile\\|no" . font-lock-keyword-face))
+ "Default value to highlight in bgp mode.")
+
+;; set font-lock-mode
+
+(defun zebra-font-lock ()
+ (make-local-variable 'font-lock-defaults)
+ (setq font-lock-defaults '(zebra-font-lock-keywords nil t)))
+
+(defun bgp-font-lock ()
+ (make-local-variable 'font-lock-defaults)
+ (setq font-lock-defaults '(bgp-font-lock-keywords nil t)))
+
+(defun rip-font-lock ()
+ (make-local-variable 'font-lock-defaults)
+ (setq font-lock-defaults '(rip-font-lock-keywords nil t)))
+
+;; define Major mode
+
+(defun major-mode-define ()
+ (interactive)
+ (progn
+ (setq comment-start "[#!]"
+ comment-end ""
+ comment-start-skip "!+ ")
+ (run-hooks 'zebra-mode-hook)
+ (cond
+ ((string< "20" emacs-version)
+ (font-lock-mode)))))
+
+(defun zebra-mode ()
+ (progn
+ (setq mode-name "zebra")
+ (zebra-font-lock))
+ (major-mode-define))
+
+(defun bgp-mode ()
+ (progn
+ (setq mode-name "bgp")
+ (bgp-font-lock))
+ (major-mode-define))
+
+(defun rip-mode ()
+ (progn
+ (setq mode-name "rip")
+ (rip-font-lock))
+ (major-mode-define))