Example #1
0
        /// <summary>
        /// Five Types of supported indexes:
        /// 1. single digit
        /// 2. string values separated by '&'
        /// 3. JobId that signals using the SNMP Get Next
        /// 4. string with more than 1 digit
        /// 5. empty string
        /// </summary>
        /// <param name="oi">OidInfo</param>
        /// <param name="supportedIdx">string</param>
        private void ParseSupportedIndexes(OidInfo oi, string supportedIdx)
        {
            string value = supportedIdx.Trim();

            if (value.Length == 1)
            {
                oi.SupportedIndexes.Add(value);
            }
            else if (value.Contains('&'))
            {
                GetIndexes(oi.SupportedIndexes, value);
            }
            else if (value.ToUpper().Contains("JOBID"))
            {
                GetJobIdIndex(oi, value);
            }
            else if (value.Length > 0)
            {
                oi.SupportedIndexes.Add(value);
            }
            else             // no index to add to OID but empty string required for processing
            {
                oi.SupportedIndexes.Add("");
            }
        }
Example #2
0
        /// <summary>
        /// does the initial work of parsing the input file
        /// </summary>
        /// <param name="lstOidInfo">OidInfoList</param>
        private void ProcessFile(OidInfoList lstOidInfo)
        {
            FileStream fs = null;

            // NAME, OID, INDEXES_SUPPORTED, INDEXES_NOT_SUPPORTED, EXPECTED_VALUE,READABLE, WRITABLE, DATA_TYPE, VALID_SET_VALUE, INVALID_SET_VALUE, IMPLEMENTATION, CAPABILITY
            try
            {
                fs = new FileStream(FileName, FileMode.Open, FileAccess.Read);
                StreamReader sr = new StreamReader(fs);

                if (IsHeaderLine(sr.ReadLine()))
                {
                    while (sr.Peek() != -1)
                    {
                        string   line   = sr.ReadLine();
                        string[] buffer = line.Split(',');

                        if (buffer.Length == (int)SNMP_TITLES.Count)
                        {
                            OidInfo oi = new OidInfo();

                            oi.NameOid  = buffer[(int)SNMP_TITLES.Name];
                            oi.OIDValue = buffer[(int)SNMP_TITLES.OID];
                            ParseSupportedIndexes(oi, buffer[(int)SNMP_TITLES.SupportedIndexes]);
                            ParseNonSupportedIndexes(oi, buffer[(int)SNMP_TITLES.NonSupportedIndexes]);
                            oi.ExpectedValue = buffer[(int)SNMP_TITLES.ExpectedValues];
                            oi.IsReadable    = GetIsReadWriteable(buffer[(int)SNMP_TITLES.Readable]);
                            oi.IsWriteable   = GetIsReadWriteable(buffer[(int)SNMP_TITLES.Writeable]);
                            oi.DataType      = GetDataType(buffer[(int)SNMP_TITLES.DataType]);
                            ParseValidSetValues(oi, buffer[(int)SNMP_TITLES.ValidSetValue]);
                            oi.InvalidSetValue = buffer[(int)SNMP_TITLES.InvalidSetValue];
                            oi.Implementation  = buffer[(int)SNMP_TITLES.Implementation];
                            oi.Capability      = GetCapability(buffer[(int)SNMP_TITLES.Capability]);

                            if (!IsError)
                            {
                                lstOidInfo.Add(oi);
                            }
                        }
                    }
                }
            }
            catch (FileNotFoundException fe) { GetLastError = fe.JoinAllErrorMessages(); }
            catch (DirectoryNotFoundException fe) { GetLastError = fe.JoinAllErrorMessages(); }
            catch (IOException e) { GetLastError = e.JoinAllErrorMessages(); }
            finally
            {
                if (fs != null)
                {
                    fs.Close();
                }
            }
        }
Example #3
0
 /// <summary>
 /// GetNext calls start with an index of JobID.0
 /// </summary>
 /// <param name="oi">OidInfo</param>
 /// <param name="value">string</param>
 private void GetJobIdIndex(OidInfo oi, string value)
 {
     string[] indexes = value.Split('.');
     if (indexes.Count() == 2)
     {
         oi.SnmpCallType = SNMP_CALL.GetNext;
         oi.SupportedIndexes.Add(indexes[1]);
     }
     else
     {
         GetLastError = "GetJobIdIndex: Unexpected number of values for JobID: " + indexes.Count().ToString();
     }
 }
Example #4
0
        /// <summary>
        /// Four types of non supported indexes
        /// 1. Single digit
        /// 2. String values separated by '&'
        /// 4. string with more than one digit
        /// 3. empty string
        /// </summary>
        /// <param name="oi">OidInfo</param>
        /// <param name="nonSupportedIdx">string</param>
        private void ParseNonSupportedIndexes(OidInfo oi, string nonSupportedIdx)
        {
            string value = nonSupportedIdx.Trim();

            if (value.Length == 1)
            {
                oi.NonSupportedIndexes.Add(value);
            }
            else if (value.Contains('&'))
            {
                GetIndexes(oi.NonSupportedIndexes, value);
            }
            else if (value.Length > 0)
            {
                oi.NonSupportedIndexes.Add(value);
            }
        }
Example #5
0
        /// <summary>
        /// parses the valid set of values to be used for the SNMP set call
        /// </summary>
        /// <param name="oi"></param>
        /// <param name="validSet"></param>
        private void ParseValidSetValues(OidInfo oi, string validSet)
        {
            string value = validSet.Trim();

            if (value.Length == 1)
            {
                oi.ValidSetValues.Add(value);
            }
            else if (value.Contains('&'))
            {
                GetIndexes(oi.ValidSetValues, value);
            }
            else if (value.Length > 0)
            {
                oi.ValidSetValues.Add(value);
            }
        }
Example #6
0
        public OidInfo(OidInfo oi)
        {
            // TODO: Complete member initialization
            this.NameOid         = oi.NameOid;
            this.OIDValue        = oi.OIDValue;
            this.ExpectedValue   = oi.ExpectedValue;
            this.InvalidSetValue = oi.InvalidSetValue;
            this.Implementation  = oi.Implementation;

            this.SupportedIndexes    = SetStringList(oi.SupportedIndexes);
            this.NonSupportedIndexes = SetStringList(oi.NonSupportedIndexes);
            this.ValidSetValues      = SetStringList(oi.ValidSetValues);

            this.IsReadable  = oi.IsReadable;
            this.IsWriteable = oi.IsWriteable;

            this.DataType     = oi.DataType;
            this.SnmpCallType = oi.SnmpCallType;
        }