Added Yang code generation for Multipart messages 32/1432/2
authormichal.polkorab <michal.polkorab@pantheon.sk>
Thu, 26 Sep 2013 07:25:01 +0000 (09:25 +0200)
committermichal.polkorab <michal.polkorab@pantheon.sk>
Thu, 26 Sep 2013 07:47:33 +0000 (09:47 +0200)
Updated comments
Removed gitignore

Signed-off-by: michal.polkorab <michal.polkorab@pantheon.sk>
Change-Id: Ic31c58db37a9dfe072b53eeb64209c5a2d9c9a41

17 files changed:
openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/connection/ConnectionAdapter.java
openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/connection/ConnectionConfiguration.java
openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/connection/SwitchConnectionHandler.java
openflow-protocol-api/src/main/yang/openflow-protocol.yang
openflow-protocol-api/src/main/yang/openflow-types.yang
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/ConnectionAdapterFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/ConnectionAdapterImpl.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/ConnectionFacade.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/MessageConsumer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/OnlineProvider.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/RpcResponseKey.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/ServerFacade.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/ShutdownProvider.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/SwitchConnectionProviderImpl.java
openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/integration/TestingConnConfigImpl.java
openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/util/BufferHelper.java
openflow-protocol-spi/src/main/java/org/opendaylight/openflowjava/protocol/spi/connection/SwitchConnectionProvider.java

index a955d13547130dfaf1c49dbbf1173614cc0231c0..4fad1907dccf9fd7080cd256684c31953268aaac 100644 (file)
@@ -1,10 +1,4 @@
-/**
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
+/* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
 
 package org.opendaylight.openflowjava.protocol.api.connection;
 
index 16ffde3cbe0142d313b1dc8fda0a0b628f1f36af..139d84ec2b6380835447176129d682caaba03987 100644 (file)
@@ -1,10 +1,4 @@
-/**
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
+/* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
 
 package org.opendaylight.openflowjava.protocol.api.connection;
 
index 04957109c28e77630ea10218a79685453547f29d..532bfa9f780119b8c61bb5202fbcb977af9abc7b 100644 (file)
@@ -1,10 +1,4 @@
-/**
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
+/* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
 
 package org.opendaylight.openflowjava.protocol.api.connection;
 
@@ -12,6 +6,7 @@ import java.net.InetAddress;
 
 /**
  * @author mirehak
+ * @author michal.polkorab
  *
  */
 public interface SwitchConnectionHandler {
index 114d5119342a626d60907151d1063dd760ed9892..cbcd4e3b8a0e5a47d633ea74aca6cd43d3b8947f 100644 (file)
@@ -458,43 +458,107 @@ module openflow-protocol {
                 leaf flags {
                     type oft:multipart-request-flags;
                 }      
-                choice body {
-                    case multipart-flow {
-                        leaf length {
-                            type uint16;
-                        }
+                choice multipart-request-body {
+                    case multipart-request-flow {
                         leaf table-id {
                             type uint8;
                         }
-                        leaf duration-sec {
+                        leaf out-port {
                             type uint32;
                         }
-                        leaf duration-nsec {
+                        leaf out-group {
                             type uint32;
                         }
-                        leaf priority {
-                            type uint16;
+                        leaf cookie {
+                            type uint64;
                         }
-                        leaf idle-timeout {
-                            type uint16;
+                        leaf cookie-mask {
+                            type uint64;
                         }
-                        leaf hard-timeout {
-                            type uint16;
+                        leaf match {
+                            type identityref {
+                                base oft:match-type-base;
+                            }
                         }
-                        leaf flags {
-                            type uint16;
+                    }
+                    case multipart-request-aggregate {
+                        leaf table-id {
+                            type uint8;
                         }
-                        leaf cookie {
-                            type uint64;
+                        leaf out-port {
+                            type uint32;
                         }
-                        leaf packet-count {
+                        leaf out-group {
+                            type uint32;
+                        }
+                        leaf cookie {
                             type uint64;
                         }
-                        leaf byte-count {
+                        leaf cookie-mask {
                             type uint64;
                         }
                         leaf match {
-                            type uint64;
+                            type identityref {
+                                base oft:match-type-base;
+                            }
+                        }
+                    }
+                    case multipart-request-port-stats {
+                        leaf port-no {
+                            type uint32;
+                        }
+                    }
+                    case multipart-request-queue {
+                        leaf port-no {
+                            type uint32;
+                        }
+                        leaf queue-id {
+                            type uint32;
+                        }
+                    }
+                    case multipart-request-group {
+                        leaf group-id {
+                            type uint32;
+                        }
+                    }
+                    case multipart-request-meter {
+                        leaf meter-id {
+                            type uint32;
+                        }
+                    }
+                    case multipart-request-meter-config {
+                        leaf meter-id {
+                            type uint32;
+                        }
+                    }
+                    case multipart-request-table-features {
+                        list table_features {
+                            leaf table-id {
+                                type uint8;
+                            }
+                            leaf name {
+                                type string;
+                            }
+                            leaf metadata-match {
+                                type uint64;
+                            }
+                            leaf metadata-write {
+                                type uint64;
+                            }
+                            leaf config {
+                                type oft:table-config;
+                            }
+                            leaf max-entries {
+                                type uint32;
+                            }
+                        }
+                    }
+                    case multipart-request-experimenter {
+                        leaf experimenter {
+                            type uint32;
+                        }
+                        leaf exp-type {
+                            type uint32;
                         }
                     }
                 }
@@ -511,8 +575,8 @@ module openflow-protocol {
                 leaf flags {
                     type oft:multipart-request-flags;
                 }
-                choice body {
-                    case multipart-desc {
+                choice multipart-reply-body {
+                    case multipart-reply-desc {
                         leaf mfr_desc {
                             type string;
                         }
@@ -529,42 +593,294 @@ module openflow-protocol {
                             type string;
                         }
                     }
-                    case multipart-flow {
-                        leaf length {
-                            type uint16;
+                    case multipart-reply-flow {
+                        list flow-stats {
+                            leaf table-id {
+                                type uint8;
+                            }
+                            leaf duration-sec {
+                                type uint32;
+                            }
+                            leaf duration-nsec {
+                                type uint32;
+                            }
+                            leaf priority {
+                                type uint16;
+                            }
+                            leaf idle-timeout {
+                                type uint16;
+                            }
+                            leaf hard-timeout {
+                                type uint16;
+                            }
+                            leaf flags {
+                                type uint16;
+                            }
+                            leaf cookie {
+                                type uint64;
+                            }
+                            leaf packet-count {
+                                type uint64;
+                            }
+                            leaf byte-count {
+                                type uint64;
+                            }
+                            leaf match {
+                                type uint64;
+                            }
                         }
-                        leaf table-id {
-                            type uint8;
+                    }
+                    case multipart-reply-aggregate {
+                        leaf packet-count {
+                            type uint64;
+                        }
+                        leaf byte-count {
+                            type uint64;
+                        }
+                        leaf flow-count {
+                            type uint32;
+                        }
+                    }
+                    case multipart-reply-table {
+                        list table-stats {
+                            leaf table-id {
+                                type uint8;
+                            }
+                            leaf active-count {
+                                type uint32;
+                            }
+                            leaf lookup-count {
+                                type uint64;
+                            }
+                            leaf matched-count {
+                                type uint64;
+                            }
+                        }
+                    }
+                    case multipart-reply-port-stats {
+                        list port-stats {
+                            leaf port-no {
+                                type uint32;
+                            }
+                            leaf rx-packets {
+                                type uint64;
+                            }
+                            leaf tx-packets {
+                                type uint64;
+                            }
+                            leaf rx-bytes {
+                                type uint64;
+                            }
+                            leaf tx-bytes {
+                                type uint64;
+                            }
+                            leaf rx-dropped {
+                                type uint64;
+                            }
+                            leaf tx-dropped {
+                                type uint64;
+                            }
+                            leaf rx-errors {
+                                type uint64;
+                            }
+                            leaf tx-errors {
+                                type uint64;
+                            }
+                            leaf rx-frame-err {
+                                type uint64;
+                            }
+                            leaf rx-over-err {
+                                type uint64;
+                            }
+                            leaf rx-crc-err {
+                                type uint64;
+                            }
+                            leaf collisions {
+                                type uint64;
+                            }
+                            leaf duration-sec {
+                                type uint32;
+                            }
+                            leaf duration-nsec {
+                                type uint32;
+                            }
+                        }
+                    }
+                    case multipart-reply-queue {
+                        list queue-stats {
+                            leaf port-no {
+                                type uint32;
+                            }
+                            leaf queue-id {
+                                type uint32;
+                            }
+                            leaf tx-bytes {
+                                type uint64;
+                            }
+                            leaf tx-packets {
+                                type uint64;
+                            }
+                            leaf tx-errors {
+                                type uint64;
+                            }
+                            leaf duration-sec {
+                                type uint32;
+                            }
+                            leaf duration-nsec {
+                                type uint32;
+                            }
+                        }
+                    }
+                    case multipart-reply-group {
+                        list group-stats {
+                            leaf group-id {
+                                type uint32;
+                            }
+                            leaf ref-count {
+                                type uint32;
+                            }
+                            leaf packet-count {
+                                type uint64;
+                            }
+                            leaf byte-count {
+                                type uint64;
+                            }
+                            leaf duration-sec {
+                                type uint32;
+                            }
+                            leaf duration-nsec {
+                                type uint32;
+                            }
+                            list bucket-stats {
+                                leaf packet-count {
+                                    type uint64;
+                                }
+                                leaf byte-count {
+                                    type uint64;
+                                }
+                            }
+                        }
+                    }
+                    case multipart-reply-group-desc {
+                        list group-desc {
+                            leaf type {
+                                type uint8;
+                            }
+                            leaf group-id {
+                                type uint32;
+                            }
+                            list buckets {
+                                uses bucket;
+                            }
+                        }
+                    }
+                    case multipart-reply-group-features {
+                        leaf types {
+                            type oft:group-types;
+                        }
+                        leaf capabilities {
+                            type oft:group-capabilities;
                         }
-                        leaf duration-sec {
+                        leaf-list max_groups {
                             type uint32;
                         }
-                        leaf duration-nsec {
+                        leaf-list actions {
+                            type ofaction:action-type;
+                        }
+                    }
+                    case multipart-reply-meter {
+                        list meter-stats {
+                            leaf meter-id {
+                                type uint32;
+                            }
+                            leaf flow-count {
+                                type uint32;
+                            }
+                            leaf packet-in-count {
+                                type uint64;
+                            }
+                            leaf byte-in-count {
+                                type uint64;
+                            }
+                            leaf duration-sec {
+                                type uint32;
+                            }
+                            leaf duration-nsec {
+                                type uint32;
+                            }
+                            list meter-band-stats {
+                                leaf packet-band-count {
+                                    type uint64;
+                                }
+                                leaf byte-band-count {
+                                    type uint64;
+                                }
+                            }
+                        }
+                    }
+                    case multipart-reply-meter-config {
+                        list meter-config {
+                            leaf flags {
+                                type oft:meter-mod-command;
+                            }
+                            leaf meter-id {
+                                type uint32;
+                            }
+                            list bands {
+                                uses meter-band-header;
+                            }
+                        }
+                    }
+                    case multipart-reply-meter-features {
+                        leaf max-meter {
                             type uint32;
                         }
-                        leaf priority {
-                            type uint16;
+                        leaf band-types {
+                            type oft:meter-band-type;
                         }
-                        leaf idle-timeout {
-                            type uint16;
+                        leaf capabilities {
+                            type oft:meter-flags;
                         }
-                        leaf hard-timeout {
-                            type uint16;
+                        leaf max-bands {
+                            type uint8;
                         }
-                        leaf flags {
-                            type uint16;
+                        leaf max-color {
+                            type uint8;
                         }
-                        leaf cookie {
-                            type uint64;
+                    }
+                    case multipart-reply-table-features {
+                        list table-features {
+                            leaf table-id {
+                                type uint8;
+                            }
+                            leaf name {
+                                type string;
+                            }
+                            leaf metadata-match {
+                                type binary;
+                            }
+                            leaf metadata-write {
+                                type binary;
+                            }
+                            leaf config {
+                                type oft:port-config;
+                            } 
+                            leaf max-entries {
+                                type uint32;
+                            }
                         }
-                        leaf packet-count {
-                            type uint64;
+                    }
+                    case multipart-reply-port-desc {
+                        list ports {
+                            uses port;
                         }
-                        leaf byte-count {
-                            type uint64;
+                    }
+                    case multipart-reply-experimenter {
+                        leaf experimenter {
+                            type uint32;
                         }
-                        leaf match {
-                            type uint64;
+                        leaf exp-type {
+                            type uint32;
                         }
                     }
                 }
index f4c45ba662e3e8f8daa8e3f7d05836f80dff9635..c8fde31d20239e4e277347eafbe70cc070b5d70c 100644 (file)
@@ -662,4 +662,59 @@ module openflow-types {
 
         }
     }
+    
+    typedef table-config {
+        /* ofp_table_config */
+        type bits {
+            bit OFPTC_DEPRECATED_MASK {
+                /* Deprecated bits */
+                position 3;
+            }
+        }
+    }
+    
+    typedef group-types {
+        /* ofp_group_type */
+        type bits {
+            bit OFPGT_ALL {
+                /* All (multicast/broadcast) group. */
+                position 0;
+            }
+            bit OFPGT_SELECT {
+                /* Select group. */
+                position 1;
+            }
+            bit OFPGT_INDIRECT {
+                /* Indirect group. */
+                position 2;
+            }
+            bit OFPGT_FF {
+                /* Fast failover group. */
+                position 3;
+            }
+        }
+    }
+    
+    typedef group-capabilities {
+        /* ofp_group_capabilities */
+        type bits {
+            bit OFPGFC_SELECT_WEIGHT {
+                /* Support weight for select groups */
+                position 0;
+            }
+            bit OFPGFC_SELECT_LIVENESS {
+                /* Support liveness for select groups */
+                position 1;
+            }
+            bit OFPGFC_CHAINING {
+                /* Support chaining groups */
+                position 2;
+            }
+            bit OFPGFC_CHAINING_CHECKS {
+                /* Check chaining for loops and delete */
+                position 3;
+            }
+        }
+    }
+    
 }
index d0b25e5d3cb1829095825f36ed0c7e10a339b60f..dcdb15a2d1666349719214ec6a7c821918d576de 100644 (file)
@@ -1,10 +1,4 @@
-/**
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
+/* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
 
 package org.opendaylight.openflowjava.protocol.impl.connection;
 
index c6e9e2307d73f5b374426b35f1e91d51f508a327..3136c7fca88a2256753b85eefcae6180d91d6d2a 100644 (file)
@@ -1,10 +1,4 @@
-/**
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
+/* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
 
 package org.opendaylight.openflowjava.protocol.impl.connection;
 
index 6cdc1f11045069f13c7005e8e3fde0ce157e4120..29348362dbba66d876aa44e2b4dd3669dc55672d 100644 (file)
@@ -1,4 +1,5 @@
 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */\r
+\r
 package org.opendaylight.openflowjava.protocol.impl.connection;\r
 \r
 import org.opendaylight.openflowjava.protocol.api.connection.ConnectionAdapter;\r
index 88a3c74726bb14d8033f0c498cb1a4ca389c3dfe..3243a82f44c8ab5e0c9eebbf692ea4d6691ae956 100644 (file)
@@ -1,10 +1,4 @@
-/**
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
+/* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
 
 package org.opendaylight.openflowjava.protocol.impl.connection;
 
index dc68ca63f1ef8f2b722797f6572908438ff249fe..b732587c60feb712e5ab3bd5a4173d10972004bd 100644 (file)
@@ -1,10 +1,4 @@
-/**
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
+/* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
 
 package org.opendaylight.openflowjava.protocol.impl.connection;
 
index 1ef1df0030647dccfc07fc394e44371be2f112c4..d4cd3976af94fc92cff11180e3dbc100628ad8ff 100644 (file)
@@ -1,10 +1,4 @@
-/**
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
+/* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
 
 package org.opendaylight.openflowjava.protocol.impl.connection;
 
index 108e53aace6716c38e73fe2a9b3f672dde8dcca4..dda56a520ab5439e9cbedf2136c236a869f2698c 100644 (file)
@@ -1,10 +1,4 @@
-/**
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
+/* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
 
 package org.opendaylight.openflowjava.protocol.impl.connection;
 
index 1be047ae80fc36d96dce87b2a67dc2d52af3bb24..235f0d096e052392b0a968135c3f16dd10847290 100644 (file)
@@ -1,10 +1,4 @@
-/**
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
+/* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
 
 package org.opendaylight.openflowjava.protocol.impl.connection;
 
index e0c36e62eed5515ffcac9c024d5ebe16d91f783f..813fa91e94ca8a9af9bdc0f3f28427ae65c4b115 100644 (file)
@@ -1,10 +1,4 @@
-/**
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
+/* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
 
 package org.opendaylight.openflowjava.protocol.impl.connection;
 
@@ -42,7 +36,7 @@ public class SwitchConnectionProviderImpl implements SwitchConnectionProvider {
     public void configure(Collection<ConnectionConfiguration> connConfigs) {
         LOG.debug("Configurating ..");
 
-        //TODO - add and configure servers according to configuration
+        //TODO - configure servers according to configuration
         serverLot = new HashSet<>();
         for (Iterator<ConnectionConfiguration> iterator = connConfigs.iterator(); iterator.hasNext();) {
             ConnectionConfiguration connConfig = iterator.next();
index 9992e5be95f8ad4f50f05dab32882673c7a45513..2db3b5b221f9ece045ba30b438724e4c112aab7c 100644 (file)
@@ -9,7 +9,7 @@ import org.opendaylight.openflowjava.protocol.api.connection.ConnectionConfigura
  * @author michal.polkorab\r
  *\r
  */\r
-public class TestingConnConfigImpl implements ConnectionConfiguration{\r
+public class TestingConnConfigImpl implements ConnectionConfiguration {\r
 \r
     private InetAddress address;\r
     private int port;\r
index e06e8a61c72646a42396ce69fe26483965b765ed..a125764f97e1cce81ff6eae9932501332f12bb4b 100644 (file)
@@ -62,7 +62,7 @@ public abstract class BufferHelper {
      * Use version 1.3 for encoded message\r
      * @param input ByteBuf to be checked for correct OpenFlow Protocol header\r
      * @param msgType type of received message\r
-     * @param length TODO\r
+     * @param length expected length of message in header\r
      */\r
     public static void checkHeaderV13(ByteBuf input, byte msgType, int length) {\r
         checkHeader(input, msgType, length, HelloMessageFactoryTest.VERSION_YET_SUPPORTED);\r
index 6e04b94c0ae11748b46b74b2b3878219feb5750c..9cf1b736c17dfd3f79f59cfa58d069aa77d47037 100644 (file)
@@ -1,10 +1,4 @@
-/**
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
+/* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
 
 package org.opendaylight.openflowjava.protocol.spi.connection;
 
@@ -17,6 +11,7 @@ import org.opendaylight.openflowjava.protocol.api.connection.SwitchConnectionHan
 
 /**
  * @author mirehak
+ * @author michal.polkorab
  *
  */
 public interface SwitchConnectionProvider {